近年来,深度学习技术被普遍应用于各种数据处理任务中,好比图像、语音和文本。而生成对抗网络(GAN)和强化学习(RL)已经成为了深度学习框架中的两颗“明珠”。强化学习主要用于决策问题,主要的应用就是游戏,好比deepmind团队的AlphaGo。由于个人研究方向是图像的有监督分类问题,故本文主要讲解生成对抗网络及其在分类问题方面的应用。算法
生成对抗网络(Generative adversarial networks,简称为GAN)是2014年由Ian J. Goodfellow首先提出来的一种学习框架,提及Ian J. Goodfellow本人,可能你们印象不深入,但他的老师正是“深度学习三巨头”之一的Yoshua Bengio(另外两位分别是Hinton和LeCun),值得一提的是,Theano深度学习框架也是由他们团队开发的,开启了符号计算的先河。关于GAN在机器学习领域的地位,在这里引用一段Lecun的评价,网络
“There are many interesting recent development in deep learning…The most important one, in my opinion, is adversarial training (also called GAN for Generative Adversarial Networks). This, and the variations that are now being proposed is the most interesting idea in the last 10 years in ML, in my opinion.”框架
传统的生成模型都须要先定义一个几率分布的参数表达式,而后经过最大化似然函数来训练模型,好比深度玻尔兹曼机(RBM)。这些模型的梯度表达式展开式中一般含有指望项,致使很可贵到准确解,通常须要近似,好比在RBM中,利用Markov chain 的收敛性,能够获得符合给定分布下的随机样本。为了克服求解准确性和计算复杂性的困难,J牛创造性的提出来了生成对抗网络。GAN模型不须要直接表示数据的似然函数,却能够生成与原始数据有相同分布的样本。
与常规的深度学习模型(好比cnn、dbn、rnn)不一样,GAN模型采用了两个独立的神经网络,分别称为“generator”和“discriminator”,生成器用于根据输入噪声信号生成‘看上去和真实样本差很少’的高维样本,判别器用于区分生成器产生的样本和真实的训练样本(属于一个二分类问题)。其模型结构框架以下,
机器学习
早期的GAN模型主要应用于无监督学习任务,即生成和训练样本有相同分布的数据,能够为1维信号或者二维图像。将GAN应用于分类问题时,须要对网络作改动,这里简单讲解一下已有的两篇文章中提出的方案,“Improved Techniques for Training GANs”和“Semantic Segmentation using Adversarial Networks”,前者能够归类于半监督分类算法,然后者则属于有监督分类算法。ide
将GAN应用于半监督分类任务时,只须要对最初的GAN的结构作稍微改动,即把discriminator模型的输出层替换成softmax分类器。假设训练数据有c类,那么在训练GAN模型的时候,能够把generator模拟出来的样本归为第c+1类,而softmax分类器也增长一个输出神经元,用于表示discriminator模型的输入为“假数据”的几率,这里的“假数据”具体指generator生成的样本。由于该模型能够利用有标签的训练样本,也能够从无标签的生成数据中学习,因此称之为“半监督”分类。定义损失函数以下,其中
函数
可想而知,在应用于基于像素的有监督分类问题时(文章中的训练数据集相似于人脸识别数据集,区别在于单幅图像的标签y和输入人脸图像大小相同),GAN中的生成器模型是没有什么做用的。原做者所提出的网络框架包含了两个分类器模型,其中一个用于对单幅图像进行基于像素的分类,另一个分类器也称做对抗网络,用于区分标签图和预测出来的几率图,引入对抗网络的目的是使得获得的几率预测图更符合真实的标签图,具体的网络结构以下,
学习
参考资料:Generative Adversarial Nets, Ian J. Goodfellow.
Improved Techniques for Training GANs. Tim Salimans, Ian Goodfellow.
Semantic Segmentation using Adversarial Networks. Pauline Luc.优化