【转载】深度学习中的激活函数与梯度消失

转载请注明出处:http://www.cnblogs.com/willnote/p/6912798.html

前言

深度学习的基本原理是基于人工神经网络,信号从一个神经元进入,经过非线性的激活函数,传入到下一层神经元;再经过该层神经元的激活,继续往下传递,如此循环往复,直到输出层。正是由于这些非线性函数的反复叠加,才使得神经网络有足够的能力来抓取复杂的模式,在各个领域取得不俗的表现。显而易见,激活函数在深度学习中举足轻重,也是很活跃的研究领域之一。目前来讲,选择怎样的激活函数不在于它能否模拟真正的神经元,而在于能否便于优化整个深度神经网络。

本文首先着重对Sigmoid函数的特点与其存在的梯度消失问题进行说明,之后再对其他常用的一些激活函数的特点进行对比介绍。

Sigmoid函数

Sigmoid函数是深度学习领域开始时使用频率最高的激活函数。

函数形式

σ(x)=11+e−xσ(x)=11+e−x

梯度消失

梯度消失问题

首先,我们将一个使用Sigmoid作为激活函数的网络,在初始化后的训练初期结果进行可视化如下:

在上图中,神经元上的橙色柱条可以理解为神经元的学习速率。虽然这个网络是经过随机初始化的,但是从上图不难发现,第二层神经元上的柱条都要大于第一层对应神经元上的柱条,即第二层神经元的学习速率大于第一层神经元学习速率。那这可不可能是个巧合呢?其实不是的,Nielsen在《Neural Networks and Deep Learning》中通过实验说明了这种现象是普遍存在的。

接下来我们再来看下对于一个具有四个隐层的神经网络,各隐藏层的学习速率曲线如下:

可以看出,第一层的学习速度和最后一层要差两个数量级,也就是比第四层慢了100倍。 实际上,这个问题是可以避免的,尽管替代方法并不是那么有效,同样会产生问题——在前面的层中的梯度会变得非常大!这也叫做梯度激增(exploding gradient problem),这也没有比梯度消散问题更好处理。

更加一般地说,在深度神经网络中的梯度是不稳定的,在前面的层中或会消失,或会激增,这种不稳定性才是深度神经网络中基于梯度学习的根本原因。

梯度消散的产生原因

为了弄清楚为何会出现梯度消散问题,来看看一个简单的深度神经网络:每一层都只有一个单一的神经元。下面就是有三层隐藏层的神经网络:

我们把梯度的整个表达式写出来:

∂C∂b1=σ′(z1)w2σ′(z2)w3σ′(z3)w4σ′(z4)∂C∂a4∂C∂b1=σ′(z1)w2σ′(z2)w3σ′(z3)w4σ′(z4)∂C∂a4

我们再来看一下Sigmoid函数导数的曲线:

该导数在σ′(0)=14σ′(0)=14时达到最高。现在,如果我们使用标准方法来初始化网络中的权重,那么会使用一个均值为0标准差为1的高斯分布。因此所有的权重通常会满足|wj|<1|wj|<1。有了这些信息,我们发现会有wjσ′(zj)<14wjσ′(zj)<14,并且在进行所有这些项的乘积时,最终结果肯定会指数级下降:项越多,乘积的下降也就越快。

下面我们从公式上比较一下第三层和第一层神经元的学习速率:

比较一下∂C∂b1∂C∂b1和∂C∂b3∂C∂b3可知,∂C∂b1∂C∂b1要远远小于∂C∂b3∂C∂b3。因此,梯度消失的本质原因是:wjσ′(zj)<14wjσ′(zj)<14的约束。梯度激增问题:网络的权重设置的比较大且偏置使得σ′(zj)σ′(zj)项不会太小。

不稳定的梯度问题

根本的问题其实并非是梯度消失问题或者梯度激增问题,而是在前面的层上的梯度是来自后面的层上项的乘积。当存在过多的层次时,就出现了内在本质上的不稳定场景。唯一让所有层都接近相同的学习速度的方式是所有这些项的乘积都能得到一种平衡。如果没有某种机制或者更加本质的保证来达成平衡,那网络就很容易不稳定了。简而言之,真实的问题就是神经网络受限于不稳定梯度的问题。所以,如果我们使用标准的基于梯度的学习算法,在网络中的不同层会出现按照不同学习速度学习的情况。

zero-centered

Sigmoid函数的输出值恒大于0,这会导致模型训练的收敛速度变慢。举例来讲,对σ(∑wixi+b)σ(∑wixi+b),如果所有xixi均为正数或负数,那么其对wiwi的导数总是正数或负数,这会导致如下图红色箭头所示的阶梯式更新,这显然并非一个好的优化路径。深度学习往往需要大量时间来处理大量数据,模型的收敛速度是尤为重要的。所以,总体上来讲,训练深度学习网络尽量使用zero-centered数据 (可以经过数据预处理实现) 和zero-centered输出。

运算时耗

相对于前两项,这其实并不是一个大问题,我们目前是具备相应计算能力的,但面对深度学习中庞大的计算量,最好是能省则省。之后我们会看到,在ReLU函数中,需要做的仅仅是一个thresholding,相对于幂运算来讲会快很多。

tanh函数

tanh函数即双曲正切函数(hyperbolic tangent)。

函数形式

tanhx=ex−e−xex+e−xtanhx=ex−e−xex+e−x

评价

优点

解决了zero-centered的输出问题。

缺点

梯度消失的问题和幂运算的问题仍然存在。

ReLU函数

ReLU函数(Rectified Linear Units)其实就是一个取最大值函数,注意这并不是全区间可导的,但是我们可以取次梯度(subgradient)。

函数形式

ReLU=max(0,x)ReLU=max(0,x)

评价

优点

解决了梯度消失的问题 (在正区间)

计算速度非常快,只需要判断输入是否大于0

收敛速度远快于sigmoid和tanh

缺点

输出不是zero-centered

Dead ReLU Problem

Dead ReLU Problem指的是某些神经元可能永远不会被激活,导致相应的参数永远不能被更新。有两个主要原因可能导致这种情况产生: (1) 非常不幸的参数初始化,这种情况比较少见 (2) 学习速率太高导致在训练过程中参数更新太大,不幸使网络进入这种状态。解决方法是可以采用Xavier初始化方法,以及避免将学习速率设置太大或使用adagrad等自动调节学习速率的算法。

尽管存在这两个问题,ReLU目前仍是最常用的激活函数,在搭建神经网络的时候推荐优先尝试!

Leaky ReLU函数

为了解决ReLU函数的Dead ReLU Problem而提出的激活函数。

函数形式

f(x)=max(0.01x,x)f(x)=max(0.01x,x)

评价

为了解决Dead ReLU Problem,Leaky ReLU提出了将ReLU的前半段设为0.01x0.01x而非0。另外一种直观的想法是基于参数的方法,即Parametric ReLU:

f(x)=max(αx,x)f(x)=max(αx,x)

其中αα可由back propagation学出来。理论上来讲,Leaky ReLU有ReLU的所有优点,外加不会有Dead ReLU问题,但是在实际操作当中,并没有完全证明Leaky ReLU总是好于ReLU。

ELU函数

ELU(Exponential Linear Units)函数也是为了解决ReLU存在的问题而提出的激活函数。

函数形式

{x,                 if x>0α(ex−1),      otherwise{x,                 if x>0α(ex−1),      otherwise

评价

ELU也是为解决ReLU存在的问题而提出,显然,ELU有ReLU的基本所有优点,以及:

不会有Dead ReLU问题

输出的均值接近0,zero-centered

它的一个小问题在于计算量稍大。类似于Leaky ReLU,理论上虽然好于ReLU,但在实际使用中目前并没有好的证据ELU总是优于ReLU。

参考

深度学习中消失的梯度

聊一聊深度学习的activation function

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容