机器学习19:Generative Model

讲解三种Generative Model:PixelRNN、Variation Auto-encoder、Generative Adversavial Network

一、PixelRNN

利用前面已知的像素和预测的像素逐一对后面的像素进行预测。如图所示,输入是变化的,第一次使用一个像素预测后面的像素,随后使用前面两个像素预测再后面的像素。。。

机器学习19:Generative Model

以下是声信号的预测,RNN逐一根据前面的n个片段输出一个新片段。

机器学习19:Generative Model机器学习19:Generative Model

图像预测训练实验:对于给定部分遮挡图预测整幅图片。

处理tips:RGB颜色数据量比较大,实验对相似颜色进行合并,然后做one-hot编码,得到167种颜色(像素),实验简单的使用了1层LSTM+512cells,训练之后预测结果如图所示。

机器学习19:Generative Model机器学习19:Generative Model

二、变分自编码器:Variance Auto-encoder(VAE)

结构:采用普通的自编码器重建训练样本,当随机输入一个input时,模型产生的预测值可能并不理想,因此提出了一种VAE模型,它对编码的code做了改进,对于每一个样本,让其产生两个code——图中的[m1,m2,m3]与[σ1,σ2,σ3](实际上是想让编码器自动将code拆分成两部分,code的均值与标准差,它反映了所有样本每一维特征的分布情况),然后再随机生成一个高斯分布(噪声)的[e1,e2,e3],通过噪声[e1,e2,e3]对标准差[σ1,σ2,σ3]进行操作,使其更加robust,组成一个新的code,然后再解码重构。为了防止自编码器直接学到code的均值,而忽略标准差(即直接将[σ1,σ2,σ3]学成0向量,而变成普通的自编码器),重构过程中进行了约束(图中右下角方程),确保[σ1,σ2,σ3]不等于0向量(后面具体讲述这个原理)。

机器学习19:Generative Model

控制:变分自编码器还可以对code的每一维进行控制,进而控制生成的图像变化的方向。例如code有10维,每一维反映了一种特征,可以选择只改变前两维的值,在这两维特征分布上均匀的采样一些点,观察生产图像的变化情况。

机器学习19:Generative Model机器学习19:Generative Model

应用:通过调整code让机器生产不同的语句。

机器学习19:Generative Model

直观解释:可参考博客https://blog.****.net/jackytintin/article/details/53641885

角度一、[σ1,σ2,σ3]可以理解成[c1,c2,c3]的viarance,反映了所有样本在各个特征维的分布情况,那么使用N(0,1)分布的随机数对[σ1,σ2,σ3]进行操作就意味着在分布中随机sample了一个样本code,这个code可能是已有样本,也可能是拟合的分布曲线上的某一个点(生成样本)。训练过程中,就是利用已有的样本学习到各个特征分布,而生成过程中就是随机sample分布中的点。(参考博客中的理解

角度二、样本在每个特征维的变化可以理解为存在一定的噪声扰动,[σ1,σ2,σ3]与[e1,e2,e3]的组合则是对精确的code(均值)的一个扰动,样本训练学习到这个扰动的分布,通过随机sample扰动范围内的点亦可以对样本进行调整,得到新的样本。(ppt课件的解释)

如左图所示,训练含有噪声扰动的自编码器,如果不对噪声进行约束,那么机器可能直接将[σ1,σ2,σ3]学习成0向量,那么就变成了普通的自编码器。因此,VAE对噪声进行了限制,如右图所示,加入了正则化项,式中蓝色和红色部分分别对应图中曲线,组合之后得绿色曲线,就是我们需要找最优的曲线,可以看出,其最小时,virance=1,避免其等于0.

机器学习19:Generative Model机器学习19:Generative Model

原理:每一个样本都是高维空间中的一个点,一个样本在某一维的数值代表这个样本在该维的投影(比如“攻击力50”),而所有样本在攻击力的维度具有一定的分布情况,最通常的情况,它是一个高斯分布,同样的,样本在所有特征维度都是一个高斯分布,构成一个混合高斯模型。VAE假设样本在每一维特征上都是一个高斯分布,训练得到所有样本在各个维度的分布情况。generative模型则可以通过在各个维度的分布曲线上sample一个点,得到一个code,来生产一个图片,可以看出,VAE的生成模型其实是从已知的样本中仿造一个样本,通过调整某个维度的sample值,可以看到生成图片的变化。

(1)高斯混合模型

a、如左图所示,每一维特征都是一个gaussian分布,共同组成一个高斯混合模型,p(m)表示的是sample的点在m这个维度有一个权重值(投影),它表示在第m个高斯分布下sample一个值(图中蓝色表示一系列高斯分布),p(x|m)则表示m维度下样本是x的概率,显然将所有维度下的概率进行线性组合即得到最终的概率。

b、如右图所示,每一个大Z表示一个样本的code,它的分布符合这个混合高斯模型,小z是其每个维度,服从一个高斯分布,假设所有维度的高斯分布都是独立的,那么Z本身也就符合一个高斯分布(实际上我们可以认为Z服从任何一个分布)。

机器学习19:Generative Model机器学习19:Generative Model

(2)估计每个维度的分布(均值、标准差)

采用Maximizing Likelihood对所有已知样本进行拟合即可估计出每个维度的mean与variance,这里取每个维度投影值的log进行拟合。而让机器学习到这个分布,需要让它自己寻找最优,以下数学模型供参考。转化成最小化KL散度,最后推导出VAE的约束项。

机器学习19:Generative Model机器学习19:Generative Model

机器学习19:Generative Model

conditional VAE:可以根据某一风格的数字(如粗写)将其他数字转换成该风格。

机器学习19:Generative Model机器学习19:Generative Model

VAE的问题:从已有数据中去找相似,没有判别好坏的能力,生成的数据缺乏创造性。

三、生成对抗网络Generative Adversavial Network(GAN)

GAN类似于一对天敌的对抗进化过程,首先鸟认为蝴蝶是紫色的,然后蝴蝶进化之后,鸟无法辨别,鸟再进化发现蝴蝶没有叶子的形状,蝴蝶因此再进化成枯叶蝶。。。实质就是一个对抗的过程。

机器学习19:Generative Model

1、对抗生成过程

先根据真实数据训练出第一代Discriminator,然后第一代Generator生成的数据输入到Discriminator进行判别并调整参数使其能够识别它不属于数字,然后Generator再根据Discriminator的判别调整到第二代。。。。。。

训练Generator的时候需要固定Discriminator的参数直到Generator生成的数据使得Discriminator输出接近1,然后再调整Discriminator使得输出变小,反复调整直到对抗生成可靠的数据。

机器学习19:Generative Model机器学习19:Generative Model

2、演化过程

机器学习19:Generative Model

GAN的训练很困难