一、监督学习与非监督学习、生成模型
-
-
监督学习
给定数据 ,以及数据所对应的标签 ,学习一个从 到 的映射。
应用举例:分类、回归、目标识别、语义分割、图像标注等。
-
-
-
非监督学习
分析数据的隐藏结构特征。应用举例:聚类、降维、特征提取、数据分布估计等。
-
-
-
生成模型
给定训练数据,生成满足训练数据分布规律的新数据。这一问题和非监督学习中的数据分布估计问题关联甚大。应用举例:创造图像、图像着色、超像素。
-
生成模型的主要研究思路分为两类:一种是对数据分布律进行显式建模,本节将会讲述此类中的逐像素RNN/CNN
方法和变分自编码器;另一类是不对数据分布律显式建模,而直接生成新数据,本节将讲述此类方法中的对抗生成网络。
二、逐像素RNN/CNN
朴素的想法是依据已有的像素,确定下一像素的取值。数学抽象描述为:在已知若干像素的条件下,构建未知像素的概率分布;然后利用条件概率的链式法则,求取整幅图像中所有像素的分布规律。
解决方案:使用RNN
或LSTM
网络,从图像的左上角像素开始,依次推测相邻像素的取值;然后使用新的像素值,推进网络到下一轮的预测。
上述方法存在的问题是,在训练阶段和预测阶段,位置像素的分布律和取值需逐个构建或推断,因而计算效率不高。一个解决方法是使用CNN
代替RNN
来构建未知像素的分布律,这样,未知像素的取值依赖于一小块区域,而非仅是与之相关联的像素;同时,使得训练过程可以并行化,无需逐像素进行;但推断过程仍是逐像素的。
三、变分自编码器
考虑如下过程:我们期望从数据中提取最能表征数据的特征,然后使用这些特征尽可能地重建数据,此即自编码-解码
过程。其中由自编码器输出的特征可用做分类网络的输入。
好,现在扔掉编码器,仅考虑解码过程,并作如下描述:假设图像 由特征 产生,这个由 到 的过程已由上述解码器描述,即我们已通过神经网络学得生成模型 。现要考察数据的真实分布律。这一分布律可由用于生成图像的特征 的分布律 表示。求解真实分布律的问题可归结为求解参量 的问题。进一步,我们明确 的最优解为使得观测到的数据 出现概率最大的值,即一个最大似然问题:
假定
为正太分布形式。那么上述问题的难点在于积分式不可求解。
上述问题又进一步可转化成如下形式:
然后这个问题就可近似求解了。(好吧,其实我也没看懂,后面再补充吧o(╯□╰)o)
应用实例:生成手写字体;依据笑容程度和头部姿态,生成人脸图像。
四、生成对抗网络
一个概率论中的结论:可通过恰当的变换,使得满足均匀分布的数据通过变换后,满足任意分布。在此,这种变换可使用神经网络实现。用于实现这一表换(实际上,是实现从高斯分布到任意分布的变换)的网络被称为生成网络(Generator Network
)。另外需要一个判别网络(Discriminator Network
),用于监督生成的数据的好坏。这样就构成了对抗生成网络的基本结构:生成网络用于生成虚假数据,力求使得这些虚假数据看起来像是真的,并能够通过判别网络的检验;判别网络则争取尽量识别出"伪造"的数据。
以 表示生成器生成的数据,以 表示判别器判别为真的概率,则生成对抗网络的优化目标为:
这一模型的求解,可通过对生成器和判别器交替推进来实现,即交替优化如下函数:
-
针对判别器,使用梯度上升方法,优化
-
针对生成器,使用梯度下降法,优化
在实际中,上述优化模型有点问题。问题产生于 函数。当 很小时—即此时生成器产生的图片很假— 曲线较为平缓,这意味着对生成器网络,此时反向传递回去的梯度值很小,不利于网络的训练。解决方法是:针对生成器,优化如下目标:
-
针对生成器,使用梯度上升法,优化
一些关于生成对抗网络的资料: