一. 对抗网络的由来
对抗网络 是个新词,全名叫 生成式对抗网络(Generative adversarial nets),就像深度学习一样,发明时间并不长。
Ian Goodfellow(生成对抗性网络的发明者)定义了 对抗网络;
Yann LeCun(三巨头之一)在Quora上直播时表示生成对抗性网络近期人工智能最值得期待的算法之一;
对抗网络的核心是 对抗式(adversarial),两个网络互相竞争,一个负责生成样本(Generator),另一个负责判别样本(Discriminator)。
生成模型 像 “一个造假团伙,试图生产和使用假币”,而 判别模型 像 “检测假币的警察”。生成器(generator)试图欺骗判别器(discriminator),判别器 则努力不被 生成器 欺骗。模型经过交替优化训练,两种模型都能得到提升,直到到达一个“假冒产品和真实产品无法区分”的点。
二. 使用对抗网络
Ok,了解了对抗网络的概念,接下来我们需要知道,在深度学习中,到底应该怎么用呢?
大多数情况下,对抗网络作为非监督学习的代表,将无监督问题转化为有监督问题,两个方面解释:
1. 生成对抗样本
对抗样本跟生成式对抗网络没有直接的关系,所谓 对抗样本,是个很有意思的事情,我们来看看论文里的例子:
通过添加噪声,在原样本基础上进行变换,得到的样本发生了微妙的变化,将“panda”错判成 “gibbon”。相信大家一定接触过 Data Augmentation,为什么同样是添加噪声,得到的结果却是迥然不同呢?实际上是我们在梯度方向上做了一点非常小的变化,导致模型就无法正确的分类。
2. 对抗网络
对抗样本说明了一个问题,我们训练的分类器并没有对模型进行有效描述,或者说没有学习到数据的一些内部表达或者分布,只是 “恰巧” 通过 某些特定的特征 完成了分类而已。
So,我们需要做的是更深层次的挖掘,比如:
a)进一步将 真数据和各种各样的 Data Augmentation的样本判别为正样本;
b)进一步将各种 伪造数据 判别为Fake;
c)根据上一步的Fake参数,进一步提高 伪造数据的逼真度;