赞
踩
生成器主要从一个低维度的数据分布中不断拟合真实的高维数据分布,而判别器主要是为了区分数据是来源于真实数据还是生成器生成的数据,他们之间相互对抗,不断学习,最终达到Nash均衡,即任何一方的改进都不会导致总体的收益增加,这个时候判别器再也无法区分是生成器生成的数据还是真实数据。
通过对抗过程来估计生成模型,在这个框架中,我们同时训练两个模型:
用来拟合数据分布的生成网络G
用来判断输入是否“真实”的判别网络D。
在训练过程中,生成网络G通过接受一个随机的噪声来尽量模仿训练集中的真实图片去“欺骗”D,而D则尽可能的分辨真实数据和生成网络的输出,从而形成两个网络的博弈过程。理想的情况下,博弈的结果会得到一个可以“以假乱真”的生成模型。
生成网络尽可能生成逼真样本,判别网络则尽可能去判别该样本是真实样本,还是生成的假样本。
隐变量 z (通常为服从高斯分布的随机噪声)通过 Generator 生成 Xfake, 判别器负责判别输入的 data 是生成的样本 Xfake 还是真实样本 Xreal。
- 在统计学中,隐变量或潜变量指的是不可观测的随机变量。隐变量可以通过使用数学模型依据观测得的数据被推断出来。
优化的目标函数如下:
- x表示真实图片,z表示输入G网络的噪声,而G(z)表示G网络生成的图片。 - D(x)表示D网络判断**真实图片是否真实**的概率(因为x就是真实的,所以对于D来说,这个值越接近1越好)。而D(G(z))是D网络判断G生成的图片的是否真实的概率。 - G的目的:上面提到过,D(G(z))是**D网络判断G生成的图片是否真实的概率**,G应该希望自己生成的图片“越接近真实越好”。也就是说,G希望D(G(z))尽可能得大,这时V(D, G)会变小。因此我们看到式子的最前面的记号是min_G。 - D的目的:D的能力越强,D(x)应该越大,D(G(x))应该越小。这时V(D,G)会变大。因此式子对于D来说是求最大(max_D) - 对于判别器 D 来说,这是一个二分类问题,V(D,G) 为二分类问题中常见的交叉熵损失。最小化 V(D,G) 的最大值。 - 为了保证 V(D,G) 取得最大值,所以我们通常会训练迭代k次判别器,然后再迭代1次生成器(不过在实践当中发现,k 通常取 1 即可)。 - 当生成器 G 固定时,我们可以对 V(D,G) 求导,求出最优判别器 D*(x): - ![在这里插入图片描述](https://img-blog.csdnimg.cn/4197c5c79ab443a5819715bbb99e477f.png#pic_center)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 把最优判别器代入上述目标函数,可以进一步求出在最优判别器下,生成器的目标函数等价于优化 Pdata(x) , Pg(x) 的 JS 散度(JSD, Jenson Shannon Divergence)。 - **JS散度**度量了两个概率分布的相似度,基于KL散度的变体,解决了KL散度非对称的问题。 > - JS散度是对称的,其取值是0到1之间。 > - ![在这里插入图片描述](https://img-blog.csdnimg.cn/65f377d266d849a08f266ae7e8e7f6c2.png#pic_center)
- 1
- 2
- 3
- 4
- 5
- 6
- 相对熵又称KL散度,如果我们对于同一个随机变量 x 有两个单独的概率分布 P(x) 和 Q(x),我们可以使用 KL 散度(Kullback-Leibler (KL) divergence)来衡量这两个分布的差异 。 > - 在机器学习中,P往往用来表示样本的真实分布,Q用来表示模型所预测的分布,那么KL散度就可以计算两个分布的差异,也就是Loss损失值。 > - KL散度公式中可以看到Q的分布越接近P(Q分布越拟合P),那么散度值越小,即损失值越小。 > - KL散度不是对称的; > - ![在这里插入图片描述](https://img-blog.csdnimg.cn/ffe6d45deb134461909c62a8b78b1cd1.png#pic_center)
- 1
- 2
- 3
- 4
- 5
- 6
- 交叉熵是用来衡量两个 概率分布 的距离(也可以叫差别)。 > - 有两个概率分布p(x)和q(x),通过q来表示p的交叉熵为:(注意,p和q呼唤位置后,交叉熵是不同的) > - ![在这里插入图片描述](https://img-blog.csdnimg.cn/898a0f7a80004f669f655727a5d89ca6.png#pic_center)
- 1
- 2
- 3
- 4
> - 交叉熵值越低,表示两个概率分布越靠近。 - > - 信息熵是衡量随机变量分布的**混乱程度**,是随机分布各事件发生的信息量的期望值,随机变量的取值个数越多,状态数也就越多,信息熵就越大,混乱程度就越大。 > - 信息熵是用于刻画消除随机变量X的不确定性所需要的总体信息量的大小。 > - 当随机分布为均匀分布时,熵最大;信息熵**推广到多维领域,则可得到联合信息熵**;条件熵表示的是在 X 给定条件下,Y 的条件概率分布的熵对 X 的期望。 > - 相对熵可以用来**衡量两个概率分布之间**的差异。 > - 交叉熵可以来衡量在给定的真实分布下,使用非真实分布所指定的策略消除系统的不确定性所需要付出的努力的大小。 - 对于生成器 G 来说,为了尽可能欺骗 D,所以需要最大化生成样本的判别概率 D(G(z)),即最小化 log(1-D(G(z))) - 当 G,D 二者的 capacity 足够时,模型会收敛,二者将达到纳什均衡。此时,Pdata(x)=Pg(x),判别器不论是对于 Pdata(x) 还是 Pg(x) 中采样的样本,其预测概率均为 1/2,即生成样本与真实样本达到了难以区分的地步。 - 纳什平衡,又称为非合作赛局博弈,是在非合作博弈状况下的一个概念解,在博弈论中有重要地位,以约翰·纳什命名。 如果某情况下**无一参与者可以通过独自行动而增加收益**,则此策略组合被称为纳什均衡点。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
经典 GAN 的判别器有两种 loss,在训练时候理论上会对训练gan网络导致障碍
- 在判别器达到最优的时候,等价于最小化生成分布与真实分布之间的 JS 散度,由于随机生成分布很难与真实分布有不可忽略的重叠以及 JS 散度的突变特性,使得生成器面临梯度消失的问题。
- 在最优判别器下,等价于既要最小化生成分布与真实分布直接的 KL 散度,又要最大化其 JS 散度,相互矛盾,导致梯度不稳定,而且 KL 散度的不对称性使得生成器宁可丧失多样性也不愿丧失准确性,导致 **collapse mode 现象** - ![在这里插入图片描述](https://img-blog.csdnimg.cn/bd0e90eb8a554769844dd715b0962ac1.png#pic_center)
- 1
- 2
- 3
- 具体来说,给定了一个z,当z发生变化的时候,对应的G(z)没有变化,那么在这个局部,GAN就发生了mode collapse,也就是不能产生不断连续变化的样本。 - 为了解决这个问题,最直接的是我们可以**给流型的切向量加上一个正交约束**(Orthonormal constraint),从而避免这种局部的维度缺陷。 - > - 为了避免前面提到的由于优化 maxmin 导致 mode 跳来跳去的问题,UnrolledGAN 采用修改生成器 loss 来解决。具体而言,UnrolledGAN 在更新生成器时更新 k 次生成器,参考的 Loss 不是某一次的 loss,是判别器后面 k 次迭代的 loss。 > - DRAGAN 则引入博弈论中的无后悔算法,改造其 loss 以解决 mode collapse问题 . > - EBGAN 则是加入 VAE 的重构误差以解决 mode collapse。 - 泛化性和mode collapse 的关系 - 这两个问题是不同的,一个是在研究能不能生成新样本,一个是研究生成样本的多样性。 - 从某种意义上,泛化性可以看作是**因**,而mode collapse是它表现出来的**现象**。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
GAN 相比于其他生成式模型,有两大特点:
作用领域:图像生成/合成(从现有数据集生成新图像的任务)。
structured learning approach
在训练过程中,**生成网络G的目标就是尽量生成真实的图片去欺骗判别网络D。而D的目标就是尽量把G生成的图片和真实的图片分别开来。**这样,G和D构成了一个动态的“博弈过程”。
**在最理想的状态下,**G可以生成足以“以假乱真”的图片G(z)。对于D来说,它难以判定G生成的图片究竟是不是真实的,因此D(G(z)) = 0.5。
- 鉴别模型,用于学习确定样本是来自模型分布还是来自数据分布。
- 生成模型可以被认为类似于一组伪造者
- 关系:生成器试图制造假币并在不被发现的情况下使用,而鉴别模型类似于警察,他们试图检测假币。这个游戏(生成对抗网络)中的竞争促使两个团队改进他们的方法,直到假冒品与真品无法区分为止。
- 网络选择:生成模型通过多层感知器传递随机噪声生成样本的特殊情况,而判别模型也是多层感知器。
G和D之间的对抗情况
黑色的线表示数据x的实际分布,绿色的线表示数据的生成分布,蓝色的线表示生成的数据对应在判别器中的分布效果
- 对于图a,D还刚开始训练,本身分类的能力还很有限,有波动,但是初步区分实际数据和生成数据还是可以的。
- 图b,D训练得比较好了,可以很明显的区分出生成数据。
- 图c:绿色的线与黑色的线的偏移,蓝色的线下降了,也就是生成数据的概率下降了。那么,由于绿色的线的目标是提升概率,因此就会往蓝色线高的方向移动。那么随着训练的持续,由于G网络的提升,G也反过来影响D的分布。
- 图d符合我们最终想要的训练结果。到这里,G网络和D网络就处于纳什均衡状态,无法再进一步更新了。
变分自编码器我们将定义一个不易处理的密度函数,通过附加的隐变量 z 对密度函数进行建模。
VAE 原理图
变分自编码器可用于对先验数据分布进行建模。
它包括两部分:编码器和解码器。
在自动编码器中,需要输入一张图片,然后将一张图片编码之后得到一个隐含向量,这比原始方法的随机取一个随机噪声更好,因为这包含着原图片的信息,然后隐含向量解码得到与原图片对应的照片。
但是这样其实并不能任意生成图片,因为没有办法自己去构造隐藏向量,所以它需要通过一张图片输入编码才知道得到的隐含向量是什么,这时就可以通过变分自动编码器来解决这个问题。
在 VAE 中,真实样本X通过神经网络计算出均值方差(假设隐变量服从正态分布),然后通过采样得到采样变量 Z 并进行重构。VAE 和 GAN 均是学习了隐变量 z 到真实数据分布的映射。
- MLP(多层感知器)
- 单层感知器(Single Layer Perceptron)是最简单的ANN人工神经网络。它包含输入层和输出层,而输入层和输出层是直接相连的。单层感知器仅能处理线性问题,不能处理非线性问题。
- MLP多层感知器是一种前向结构的ANN人工神经网络**, 多层感知器(MLP)能够处理**非线性可分离的问题。
- MLP多层感知器(Multi-layerPerceptron)是一种前向结构的人工神经网络ANN,映射一组输入向量到一组输出向量。
- MLP可以被看做是一个有向图,由多个节点层组成,每一层全连接到下一层。除了输入节点,每个节点都是一个带有非线性激活函数的神经元。
- 使用BP反向传播算法的监督学习方法来训练MLP。MLP是感知器的推广,克服了感知器不能对线性不可分数据进行识别的弱点。
- LSTM
- 长短期记忆(Long short-term memory, LSTM)是一种特殊的RNN,主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题。LSTM能够在更长的序列中有更好的表现。
- LSTM内部主要有三个阶段:
- 忘记阶段。这个阶段主要是对上一个节点传进来的输入进行选择性忘记。简单来说就是会 “忘记不重要的,记住重要的”。
- 具体来说是通过计算得到的 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WkeNYZ5F-1637459504402)(https://www.zhihu.com/equation?tex=z%5Ef)] (f表示forget)来作为忘记门控,来控制上一个状态的 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-St9dL0pg-1637459504403)(https://www.zhihu.com/equation?tex=c%5E%7Bt-1%7D)] 哪些需要留哪些需要忘。
- 选择记忆阶段。这个阶段将这个阶段的输入有选择性地进行“记忆”。主要是会对输入 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VpUH1Xnx-1637459504405)(https://www.zhihu.com/equation?tex=x%5Et)] 进行选择记忆。哪些重要则着重记录下来,哪些不重要,则少记一些。当前的输入内容由前面计算得到的 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TAdZASPJ-1637459504406)(https://www.zhihu.com/equation?tex=z+)] 表示。而选择的门控信号则是由 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3wDLhVjD-1637459504407)(https://www.zhihu.com/equation?tex=z%5Ei)] (i代表information)来进行控制。
- 输出阶段。这个阶段将决定哪些将会被当成当前状态的输出。主要是通过 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bNpswK5Y-1637459504408)(https://www.zhihu.com/equation?tex=z%5Eo)] 来进行控制的。并且还对上一阶段得到的 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CI6DhA8g-1637459504409)(https://www.zhihu.com/equation?tex=c%5Eo)] 进行了放缩(通过一个tanh激活函数进行变化)。
- 通过门控状态来控制传输状态,记住需要长时间记忆的,忘记不重要的信息;而不像普通的RNN那样只能够以一种记忆叠加方式。对很多需要“长期记忆”的任务来说,尤其好用。
- GRU
- GRU(Gate Recurrent Unit)是循环神经网络(Recurrent Neural Network, RNN)的一种。和LSTM(Long-Short Term Memory)一样,也是为了解决长期记忆和反向传播中的梯度等问题而提出来的。
- 相比LSTM,使用GRU能够达到相当的效果,并且相比之下更容易进行训练,能够很大程度上提高训练效率,因此很多时候会更倾向于使用GRU。
强化学习是一种试错方法,其目标是让软件智能体在特定环境中能够采取回报最大化的行为。
强化学习的目标是对于一个智能体,给定状态 s,去选择一个最佳的行为 a (action)。通常的可以定义一个价值函数 Q(s,a) 来衡量,对于状态 s,采取行动 a 的回报是 Q(s,a),显然,我们希望最大化这个回报值。
基于生物神经元模型可得到多层感知器MLP的基本结构,最典型的MLP包括包括三层:输入层、隐层和输出层,MLP神经网络不同层之间是全连接的(全连接的意思就是:上一层的任何一个神经元与下一层的所有神经元都有连接)。
MLP多层感知器(Multi-layerPerceptron)是一种前向结构的人工神经网络ANN,映射一组输入向量到一组输出向量。
(Multi-layerPerceptron)是一种前向结构**的人工神经网络ANN,映射一组输入向量到一组输出向量。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。