之前选了一位导师,跟他做科研项目,生物信息学相关方向。我要做的事概括地说,就是利用GAN,实现对病变腰椎神经小孔的图像标注。综合地整理了一些最概括的方法论,到论文的阅读摘要,再到关于GAN的零碎知识整理。

  • Title, Keywords, Abstract,
  • Conculusion, Graph, Tables, Figures,
  • Intruduction ( Start to read seriously ), Results and Discussion( Most Important ), Experimental details

拿到一篇论文,按照什么顺序去阅读:

  • 自己暂时对读论文的目标:把PathogenesisSpine这篇论文的代码,先把它自带的代码大概理解(完全理解估计得让算法工程师,而不是我去上)并且跑得起来。更高要求就是用自己对GAN的理解,去把那篇论文的代码,改成用GAN实现的。筛选暂时还不太急,两篇论文够把我折腾一会,更多论文的话现在问一下老师推荐文章问题也不大。那么先试试读那篇传统方法实现论文的摘要、关键词,然后直接看它的代码,有不理解的就对照关键词去Google相关知识点。理解差不多之后(可能比我想的时间长,但我不会让它持续太长,因为我还想寒假能在这件事上把她比下去,好胜心吧 ),就尝试跑。跑起来之后,看GAN的一般性介绍,跑一般性GAN代码,再把原论文的代码改成GAN的。

PathogenesisSpine论文摘要:

PathogenesisSpine

k-mean聚类:

  • https://zh.wikipedia.org/wiki/K-平均算法
  • k-平均聚类的目的是:把 n 个点(可以是样本的一次观察或一个实例)划分到k个聚类中,使得每个点都属于离他最近的均值(此即聚类中心)对应的聚类,以之作为聚类的标准。这个问题将归结为一个把数据空间划分为Voronoi cells的问题。
  • 算法描述:找到某种分类方案,该方案使每组内的数据值与它的均值的差的平方和最小。

GAN:

GAN整体模型
  • GAN包含有两个模型,一个是生成模型(generative model),一个是判别模型(discriminative model)。生成模型的任务是生成看起来自然真实的、和原始数据相似的实例。判别模型的任务是判断给定的实例看起来是自然真实的还是人为伪造的(真实实例来源于数据集,伪造实例来源于生成模型)。
  • 结合整体模型,再以生成图片作为例子具体说明下面。我们有两个网络,G(Generator)和D(Discriminator)。Generator是一个生成图片的网络,它接收一个随机的噪声z,通过这个噪声生成图片,记做G(z)。Discriminator是一个判别网络,判别一张图片是不是“真实的”。它的输入是x,x代表一张图片,输出D(x)代表x为真实图片的概率,如果为1,就代表100%是真实的图片,而输出为0,就代表不可能是真实的图片。
  • 先了解下纳什均衡,纳什均衡是指博弈中这样的局面,对于每个参与者来说,只要其他人不改变策略,他就无法改善自己的状况。对应的,对于GAN,情况就是生成模型 G 恢复了训练数据的分布(造出了和真实数据一模一样的样本),判别模型再也判别不出来结果,准确率为 50%,约等于乱猜。这是双方网路都得到利益最大化,不再改变自己的策略,也就是不再更新自己的权重。
  • 训练网络D使得最大概率地分对训练样本的标签(最大化log D(x)和 log(1-D(G(z)))),训练网络G最小化log(1 – D(G(z))),即最大化D的损失。而训练过程中固定一方,更新另一个网络的参数,交替迭代,使得对方的错误最大化,最终,G 能估测出样本数据的分布,也就是生成的样本更加的真实。
  • 假如我们面对一个多分类的任务,手里只有很少有标注的样本,同时有很多没有标注的样本,怎么能够利用GAN的思路合理使用无标签数据,提高分类性能呢?
  • 在去年NIPS大会上,来自OpenAI的作者提供了如下思路:考虑一个K分类任务,有一个判别模型 G可以帮助生成样本,与此同时,有一个判别模型做一个K+1分类任务,其中新加的类是预测样本是否是由生成模型生成的。跟传统GAN不同,这里我们最终需要的是判别模型,而不是生成模型。
  • 简单而言,目标函数针对不同数据,可以分为两部分。对于有标注的样本,目标是希望判别模型能够正确输出标签。而对于没有标注的生成样本,则是由GAN定义的loss。