深度学习系列(1)——初探GAN和W-GAN

来源:互联网 发布:linux 服务器分区 编辑:程序博客网 时间:2024/05/16 13:47

GAN(Generative Adversarial Networks)容易被名字迷惑理解为某种新型的神经网络,其实GAN是一种组合神经网络达到自己的目的的“思想”或者“框架”,“思想”就是对抗。如果把每个神经网络模块看做机器的某一个“大脑”(现在手机或者PC喜欢管这个叫“核”,比如什么多核cpu),,那么GAN主要通过“大脑”之间对抗,让每个“大脑”都变的聪明——“聪明”就是每个神经网络模块都调整到使得全系统能够完成指定的比如图像 语音识别等任务。

对抗思想来自博弈论的“纳什均衡”。纳什均衡可以简单理解为,在对抗中(就是互相算计,哈哈),双方最后互相影响共同变强,最后均衡(就是谁也不能一直赢谁),而双方组成的系统达到精密复杂稳固。比如以前手机产商都是垃圾产品高利润(这是一个纳什均衡),小米出来后,消费者纷纷去买小米手机,最后各大产商纷纷自我调整,降低利润,最后活下来的手机产商又是组成一个纳什均衡。



GAN的逻辑框图

上面的图,有意思的地方有两个——输入和反馈环。

在这个“自动化模型”中,要抓住三个关键的问题——

1.输入

2.反馈

3.整体表现

先说输入。输入是随机分布(比如高斯分布,0-1随机分布),这是一个蛮厉害的创新,也导致后面一系列不同于以往神经网络的设计。GAN一般是做一些高大上的数据处理,比如图像语音视频等等,但是这里是原理性的探究,所以就是处理的数据就是“概率分布”,比如生成器G的输入输出的都是概率分布!(框图里面的z ,x ,G(z)都是概率分布,不是什么图片语音视频,我之前迷惑了好久。)。在原理性的模型中全用概率分布淘酒,现实生活中却是处理图像视频语音,所以肯定要单独设计一套“转码”机制,这个以后再去研究。

输入是随机分布,不同于以往的输入是带标记的数据,也就意味着GAN是“无监督学习”的产物,这是迈入深度学习的最难最实用的的一块领域。



再说反馈,反馈环路有两条,一条优化D,一条优化G,但是学术论文中似乎很爱讨论固定G优化D,忽略讨论优化G(不晓得为什么)。



反馈环路

所有自动化的“反馈模型”,都会从输出传回一个“增量”给到输入或者输入输出之间的某个模块,这个“增量”就是上图的deltaG和deltaD。



下面公式的变量含义的讲述

deltaD(红字部分删掉,有些人不会写简洁的变量,反而搞得费解,还不如删掉。。)

上面的定义式学名叫“损失函数”,其实就是反馈环的deltaD。反馈机制里面最微妙的就是每次反馈回“多少”给到前面,所以下面就来探究一下,为什么众多学者认为反馈上面“这么多”就可以了。

有一个容易忽略但是很重要的点———

D是一个判别器黑箱,它的输入是x和G(z),上面的写成小写的g(z),其实就是G(z),(这可以看出来作者定义变量相当粗心。。)。这里的D(x) 和D(g(z))是把黑箱看成一个函数,这两个函数值都是概率值,取值在0到1之间,所以这样跟前面符号相乘在之后保证整体deltaD是一个正值,这样优化方向是固定的——求deltaD最小值。



详解机器学习的熵

咱们继续回到上面deltaD,有 学者说这是“交叉熵”,我没看懂(目前,我觉得不是,论文有误)。

从数学建模的经验来说,这个deltaD的表达式可能是构造出来的,因为它有两个优良的数学特性,并切合了对抗网络所需要的“博弈”特性(就是说,两个神经网络对判别器D的影响应该相反,但是GAN网络整体表现却是要单向优化的)

1.典型的凹函数,求最值简单。  (心领神会不解释)

2.GAN网络处于对抗的两部分 向完全相反的方向优化,整个系统向单一的方向优化

表达式1-D(G(z)) 这个因子我感觉很费解,但是如果是基于熵的思想,满足上面的关键数学特性,就可以暂时的解释一下。具体的那些东西直接贴在下面。


最小值



系统单向优化目标

“博弈”的双方就是的两个分布(来自G和D),两个分布D(x) 和D(G(z))优化方向相反(一个 max 一个min),整体优化方向是越来越大。


从建模角度,这个公式完成了GAN“对抗”思想所需要的“数学形式”,但是没有解决2个问题。

1。这个deltaD表达式这么写,是否方便设计算法来将这个deltaD“解包分发”到G和D中,怎么设计,是否要再次改写这个表达式

2.这个表达式整体最优解在哪里。



第一个问题,以后探究。

关于第二个问题,大家深入探究之后,大家发现了很多问题,比如梯度消失问题,由此激发了一些创新,比如W-GAN,下面来讨论第二个问题。

据说(“据说”的意思是,我也没有研究过。),原始的GAN 有一个致命的缺陷:

D越好,G的梯度消失越严重。   

其实,我觉得梯度消失(梯度消失就是梯度值近似等于0)本来是一件“好事”,因为梯度为0是求解全局最优化的条件,但是这个前提是隐含层就一层。但是现实情况是,隐含层有好几层,这时候任何一层隐含层梯度消失,就会落入“局部最优”出不来,而不是“全局最优”。

之所以用“梯度 ”应该是源于经典的BP算法,直接贴大牛周志华的书,公式和表达都很严谨。


书1



书2



书3

书4


BP算法的优化目标是在优化一个方差,我们GAN的目标是在优化一个期望,所以很好奇到底要怎么数学上改写经典BP算法才能用BP算法的“梯度”工具完成优化。。。这是后话。

周志华书上的BP算法,很详细很严谨,但是确实基于的一层隐含层的。观察 书4,可以知道反向更新的顺序是



可见整个算法就是两个关键的“梯度项”撑起来的。



另外贴一下这位同学的文章(http://mp.weixin.qq.com/s/sNrpPI3bC4ICy5WtxOphOQ)



这里面的黄色柱子就是“梯度”的值,这位同学偏偏好像定义成“学习速度”,令人费解(容易与BP算法的学习速率混淆)。可以看到当黄色柱子几乎没有(梯度为0)的时候,会有一些列的特殊情况发生。这位同学还是论述太经验主义了,没有揭示的太清楚。

梯度消失和梯度爆炸主要原因是人们不能完全搞懂神经网络这个黑箱,所以一旦特殊情况出现,比如梯度消失或者梯度爆炸,就特殊问题想特殊解决方案。GAN只不过放大和显现了这个问题。




所以,为了搞定GAN的全局最优化问题,人们想到了将黑箱“透明化”,就是W-GAN .

贴一下文章来自《看穿机器学习(W-GAN模型)的黑箱》  https://mp.weixin.qq.com/s/trvMOTXNs7L6fSmTkZXwsA,具体的请见文章,牛人写的。



W-GAN 的W就是上面的Wassertein距离,这个新定义的“概率分布距离”的比KL散度 JS散度的表示的“概率分布距离”优势都大。用数学化的最有传输框架代替深度神经网络,从而让“黑箱”透明。




原创粉丝点击