参考李宏毅老师分享
先解释一下根据样本进行生成图片,然后把图片每一个像素都看成其一个特征,那么图片就是存在一个高维特征空间的点,这个点对应一个图像。我们 GAN 要做的事就是在高维特征空间中找到这些点分布概率
样本都是从分布中得到的,我们起初可能想知道找到这个分布样子,我们就可以用这个分布来生成新的图片,那么就可以先假设,可以将看成高斯混合模型,那么 就是分布的均值和方差。
具体怎么做,我想大家都会用极大似然值来估计的分布。
- 首先从抽取样本
- 计算 的似然函数
- 就是找出一组参数,为什么是一组参数呢?因为是高斯混合模型所以需要一组均值和方差来表示模型。
然后通过取 log 将连加变成连乘这个想必大家都很清楚
其实最大似然估计就是求最小 KL 距离(松散度),这个可能大家已经理解或者还没有理解为什么他们是同一个问题,这里我就给大家解释一下。
不过现在是将的分布假设为高斯分布,这样就把问题限制,其实我们还不知道具体样子,我们应该将问题也就是分布泛化到一般分布而不是特指高斯分布。
图像是高维空间流形,有关流形我们,其实他并不是我们能用高斯混合所能准确逼近的分布。
- noise 可以是从高斯分布(也叫正态分布)随机选取向量
- Generator 是生成神经网网络,可以想象是复杂函数
- noise 输入到 Generator 后,Generator 就会通过计算给我们一张图
其实一个隐藏层就足够复杂来实现对多数函数的逼近,所以只要 Generator 叠几层就可以将我们输入noise变成想要复杂形状来逼近图片高维流形。
那么如何找到衡量和距离(也就是相似度)的标准呢?这个成为,为什么成为问题,这是因为我们并不知道 和 是什么样子的,也没法假设。
但是在 GAN 设计就是回答上面问题。
- 可以从抽取一些图片样本
- 也可以从根据 noise 生成一些图片样本
在 GAN 中用 Discriminator(判别)来通过计算这两个来自不同分布样本间差异,样本间差异也就是这两个分布间距离。我们通过减少这个距离就可以实现来一步一步逼近
如何找到具有判别能力的 Discriminator,这个也是需要训练的,我们需要训练出一个 Discriminator。具体方法也就是,先定义目标函数,Discriminator 完成了这个目标函数也就是具有判别能力。
首先我们要明确我们是希望 越大越好这是我们目标,接下来内容会与这个目标紧密相关
- 先看右边前一项,也就是假设数据使用从抽取的,我们就希望 越大越好
- 那么假设数据是从抽取的,我们就希望越小越好
其实就是训练二分类识别网络是一样,样本中有正样本和负样本,需要判别器对其进行分类。
就是 JS 距离,假设我们生成数据
生成器生成样本和真实样本靠的很近,也就是很难将他们进行分开,Discriminator 的就很难变得很大,因为他无法完成将他们分开任务。
接下来我们用数学公式来推导一遍。
- 首先假定 G 是固定,也就是训练好的 G 来找到让下面式子值最大的 D
这里是神经网络学习的模型,理论上是可以模拟任意函数,但是实际上要是想模拟任意函数就需要有任意多参数,不过现在我们可以假设是可以模拟任意函数的。
在这个式子中和都是固定,我们就是要找让这个式子最大。在李宏毅老师解说中把上面式子进行简化表示
- 用 a 表示
- 用 b 表示
- 用 D 来表示
我们对上式进行求导,在导数为 0 处有极值,然后对式子进行化简。
我们将用和 的表达式来表示后带回到上式
可以对表示的分子和分母同时乘以,这样做就是为了推导出 JS 散度表达式,
最后我们就得到了 JS 散度的表示
网友评论