【机器学习】生成式神经网络

【生成式模型】
【机器学习】生成式神经网络_第1张图片
【自动编码器】
自动编码器是一种无监督(其特点是训练样本数据的标记信息未知,因此其目标往往是要通过对无标签训练样本的学习来揭示出数据的内在规律)的神经网络模型,其目标是通过训练网络忽略信号“噪声”,从而得到数据的低维度表示(编码)。
【机器学习】生成式神经网络_第2张图片
自动编码器的作用:

  • 作为特征提取器:中间表示z的维度通常小于输入x的维度,这就使得自动编码器能学习到数据中最重要的特征,学习得到的特征可以在后续的有监督学习方法中使用。
  • 在降维以后,可以方便进行可视化等后续的处理。因为自动编码器可以学习到类似通过PCA得到的数据投影。

【机器学习】生成式神经网络_第3张图片

堆栈自动编码器:堆栈自动编码器本质上就是增加中间特征层数。
【机器学习】生成式神经网络_第4张图片
用自动编码得到新特征
模型被训练完毕后,往往说明编码器可以很好的编码,即得到了新的有意义的特征,此时可以将解码器去掉,仅仅使用编码器得到重构的特征。得到的特征可以应用在有监督的模型中,如分类模型。
这样做的好处是:可以用许多无标签的数据得到通用的特征表示。因为监督学习通常的标注数据较少。
【机器学习】生成式神经网络_第5张图片
【变分自动编码器(VAE)】

对于图像生成的任务,既然自动编码器可以重构原始的输入图像,那么也可以生成新的图像。
假设潜在变量z服从某种先验分布(高斯分布)。模型训练完毕后,可以从这种先验分布中采样得到潜在变量,然后在解码器中得到新的样本。也可以理解为变分自动编码器就是在自动编码器的基础上加入了随机因子。
【机器学习】生成式神经网络_第6张图片
【机器学习】生成式神经网络_第7张图片
【机器学习】生成式神经网络_第8张图片
【机器学习】生成式神经网络_第9张图片

【生成对抗网络】

判别式模型和生成式模型:假设研究对象的观测变量为X,类别变量为Y,则:

  • 判别式模型:按照一定的判别准则,从数据中直接学习决策函数Y=f(X)或者条件概率分布P(Y|X;θ)作为预测的模型。判别式模型的特点是直接面向预测的,典型的判别式模型包括:k近邻法、决策树、最大熵模型、支持向量机等。
  • 生成式模型:从数据中学习联合概率分布P(X,Y),其之后可以转变为P(Y|X)作为预测的模型,例如利用条件概率分布P(Y|X)=P(X,Y)/P(X)。这样的方法之所以称为生成式模型是因为模型表示了在给定输入X以后,产生输出Y的生成式关系,特别是在给定某些隐藏参数的情况下,生成式模型可以用于随机生成的值建模。典型的生成模型有:朴素贝叶斯法、高斯混合模型、马尔可夫模型等。

判别式模型和生成式模型的区别:判别式模型只是对给定的样本进行分类,不关心数据如何生成;生成式模型根据生成假设哪个类别最有可能生成这个样本。

生成对抗网络包括两部分:生成器和判别器。生成对抗网络,是生成器和判别器的“博弈”过程,是通过对抗过程来估计生成模型的新框架。在这个框架中生成器G和判别器D同时被优化:生成器G用于学习真实数据分布,生成接近真实数据分布的虚假样本,从而“骗”过判别器;而判别器用于估计样本是来自于训练数据还是生成数据。这个过程就相当于一个二人的博弈,随着时间的推移,生成器和判别器不断进行对抗,最终达到一个动态平衡,即:生成器生成的数据接近于真实数据分布,而判别器识别不出真假数据,对于给定数据预测为真实数据和生成数据的概率都接近于0.5。

整个框架的运行过程是:随机生成一噪声,生成器将噪声映射到真实的数据空间中,其输入是一组随机数,输出是一个符合真实样本分布的数据;判别器判断样本是来自真实分布还是生成器得到的分布,其输入是一组数据(真实数据或生成网络造出来的数据),输出是一个概率值。并用判别结果做梯度下降优化。整个过程的目标函数是:
在这里插入图片描述
其中,D(x)代表x从真实数据中采样的概率,G(z)代表对于数据空间的一个映射,所以D(G(z))代表的就是从生成样本采样的概率。对这个目标函数,我们可以分两步来理解,第一步是优化判别器D:对于判别器D而言,它能接触到的数据是生成样本和真实样本,我们希望它能够尽可能地区分样本是真实样本还是生成样本,因此希望D(x)尽可能大,D(G(z))尽可能小,即V(D,G)尽可能大;第二步是优化生成器,对于生成器G而言,它所能直接接触或影响到的数据就是假样本,我们希望它能够尽可能骗过判别器,也就是希望D(G(z))尽可能大,即V(D,G)尽可能小。生成器和判别器在一次次迭代中相互对抗,最终达到全局最优。

在生成对抗网络的训练过程中,首先是训练判别器,判别器训练了k次,每次利用随机噪声生成由m个图片构成的小批量数据,并同时从真实的样本分布中也选取m个图片构成小批量数据,即构成一个平衡的数据集送给判别器进行训练,在这个过程中,生成器G是固定的,需要更新判别器D的参数,判别器D的参数更新方法是采用梯度上升法来更新目标函数,因为要使其取值最大化,所以是梯度上升。然后在训练生成器的过程中,需要固定判别器D的参数,由于目标函数要取最小值,所以在更新参数的过程中使用梯度下降的方法。
【机器学习】生成式神经网络_第10张图片
如上图所示,在训练生成对抗网络时,同时更新判别分布(蓝色虚线),使判别器能区分数据真实分布(黑色虚线)中的样本和生成分布(绿色实线)中的样本,蓝色虚线的值越大表示这个样本越有可能是真实样本。下面的水平线为均匀采样z的区域,上面的水平线为x的部分区域,朝上的箭头显示映射x=G(z)如何将非均匀分布作用在转换后的样本上。可以看出,经过一系列的训练,如果判别器和生成器的性能足够好,它们都会接近某个稳定点并且都无法继续提高性能,此时,数据真实分布的概率和数据生成分布的概率近乎相等,判别器无法区分真实数据分布和生成数据分布,对于给定数据,将其预测为真实数据和生成数据的概率都接近于0.5。

GAN相比以前的模型框架有其优缺点。缺点主要是没有明确表示样本数据的分布,并且在训练过程中判别器必须与生成器很好地同步,比如在不更新判别器的情况下,如果过多地训练生成器,就会有很多相同的x值,以至于生成的样本没有足够的多样性。优点是不再需要马尔可夫链,仅用反向传播来获得梯度,学习间无需推理,且模型中可融入多种函数。

对于最初的生成对抗网络,后续也提出了很多的对它的改进,比如条件GAN、WGAN、DCGAN等等。随着生成对抗网络的不断发展和完善,它也被不断应用在各项任务上,由一开始的图像生成任务,渐渐到后来的文本摘要生成、图像描述生成任务上并不断改进和优化。

参考资料:深度学习基础-哈尔滨工业大学-中国大学mooc

你可能感兴趣的:(机器学习)