吾爱NLP(2)--解析深度学习中的激活函数

0、从深度学习开始说起

今天检索多标签分本分类的文献时,遇到一个关于激活函数的疑惑:

遇到的问题

如果有大牛看到,知道如何更好的理解这句话的含义,希望在评论里解惑!

由惑而生,所以我打算总结一下深度学习模型中常用的激活函数的一些特性,方便大家日后为模型选择合适的激活函数。
  说到激活函数,就不能不提神经网络或者深度学习,从一个新手入门深度学习领域,我觉得首先需要理解三个基本的构成要素:

三要素

我把理解激活函数作为深度学习入门的第一个构成要素,因为按照正常的逻辑,我们习惯从输入层--->隐藏层--->输出层的顺序来来理解模型,在****输入层--->隐藏层之间就需要用到了我们的激活函数,所以我把理解它放在最开始,本篇文章就主要就激活函数**展开。

1、激活函数用在哪?

假设我们当前要处理一个评论文本情感分类任务:判断一条评论句子的情感极性,即该评论是好评还是差评。这是一个典型的分类的问题,输入是文本,输出是情感类别。

某电商评论区

首先,要将句子向量化,可以使用word2vec词向量,也可以使用简单的一种方式是计算每句话的TFIDF特征值,TFIDF是使用词频除以文档频率来表示一个词的重要性权重,这种处理使得文字转变为向量,从而可以输入到模型中的输入层,而且向量中的值还携带着句子的信息。

神经元中的激活函数

输出层中的激活函数

其次,将得到的TFIDF向量输入到上面这样的单层网络中,网络将输出一个其为好评的概率值。其中x_n为TFIDF向量的各维上的值,w是随机初始化的权重,激活函数选用常用的sigmoid激活,输出层只有一个输出值y,输出0表示差评,1表示好评。这个和逻辑回归是一样的,这里就不再赘诉。

2、为什么需要激活函数

"神经网络中的激活函数的真正功能是什么?请阅读这篇概述文章并查看下最下面的速查表吧。本文作者是来自密歇根州立大学的 Sebastian Raschka,她是《Python Machine Learning》一书的作者。"

逻辑回归(一种泛化的线性模型)其决策面(decision surface)是线性的,从这个层面上来看它仍然是一种线性分类器:


线性分类

  如果数据类别可以线性划分,逻辑回归分类器对此可以工作的很好,但我们考虑一个棘手的例子:


线性分类

  数据类别非线性可分。对于此处这个例子,一个非线性的分类器可能会是更好的选择,例如在一个多层神经网络,我训练了一个简单的多层感知器,其有一个包含 200 个这种逻辑 S 型激活函数的隐藏层。让我们从下图看一下现在决策面看起来是怎样的:
非线性分类

网络的每一层在输出时,都需要进行一次非线性变换,被称为激活。如果不进行激活,则网络中各层均进行线性变换,这样无论网络包含多少层,最终的输出都可以用输入的线性变换表示出来,也就和1层的线性网络没有差别了。非线性的变换能够让网络存储的信息大大增加,而非线性变换的方式并不固定。下表列出了常用的非线性变换的函数形状(其中第三项是线性变换,是用作对比的)。

总结一下,激活函数在神经网络中的功能即通过对加权的输入进行非线性组合产生非线性决策边界(non-linear decision boundary)。

几种常见激活函数对比

除上面这些之外,还有几种高级的激活函数。
Relu激活函数

PRelu激活函数

ELU激活函数

MPELU激活函数

3、常用的激活函数

3.1Sigmoid函数

Sigmoid函数是神经网络中最常用的激活函数之一,其函数表达式为:

Sigmoid函数

函数曲线如下图所示:

Sigmoid函数的函数曲线

   
  Sigmoid函数是传统神经网络中最常用的激活函数,一度被视为神经网络的核心所在。
  从数学上来看,Sigmoid函数对中央区的信号增益较大,对两侧区的信号增益小,在信号的特征空间映射上,有很好的效果。
  从神经科学上来看,中央区酷似神经元的兴奋态,两侧区酷似神经元的抑制态,因而在神经网络学习方面,可以将重点特征推向中央区,将非重点特征推向两侧区。

导数形式为:

Sigmoid求导

为什么求导形式很重要?
  如果你已经知道反向传播+梯度求导,就应该晓得,此时如果激活函数的求导方式足够的简单,能够极大的减少我们模型的运算量【反正我是这样理解的,有不准确之处欢迎指出】。

损失函数求导

Sigmoid的缺陷
通过Sigmoid的函数图像我们可以直观的看到,当输入值X>5或者X<-5的时候,函数的变化曲线已经非常平缓了,这就意味着此时的偏导(即切线的斜率)非常小接近0,这就导致误差反向传播无法通过导数传递到上一层,进而导致训练无法正常训练(导数为0无法更新参数)。为了避免梯度饱和效应的产生,Hinton等人与2010年又提出了ReLU函数,可以有效的避免梯度饱和产生(后面会有介绍)。
  
Sigmoid存在梯度饱和的风险

3.2Softmax函数

我们可以看到,Sigmoid函数实际上就是把数据映射到一个(−1,1)的空间上,也就是说,Sigmoid函数如果用来分类的话,只能进行二分类,而这里的softmax函数可以看做是Sigmoid函数的一般化,可以进行多分类。Softmax回归模型是logistic回归模型在多分类问题上的推广,在多分类问题中,待分类的类别数量大于2,且类别之间互斥。比如我们的网络要完成的功能是识别0-9这10个手写数字,若最后一层的输出为[0,1,0, 0, 0, 0, 0, 0, 0, 0],则表明我们网络的识别结果为数字1。

Softmax的公式为:


  可以直观看出如果某一个zj大过其他z,那这个映射的分量就逼近于1,其他就逼近于0,并且对所有输入数据进行归一化。

举个例子,通过若干层的计算,在输出层,最后得到的某个训练样本的向量的分数是[ 1, 5, 3 ], 那么概率分别就是

输出层输出值
输出层的softmax函数
3.3tanH函数

TanHyperbolic(tanh)函数又称作双曲正切函数,数学表达式为:

tanH函数

其函数曲线与Sigmoid函数相似,tanh函数与Sigmoid函数的函数曲线如下所示:  

 
比较
  

  在具体应用中,tanh函数相比于Sigmoid函数往往更具有优越性,这主要是因为Sigmoid函数在输入处于[-1,1]之间时,函数值变化敏感,一旦接近或者超出区间就失去敏感性,处于饱和状态,影响神经网络预测的精度值。而tanh的输出和输入能够保持非线性单调上升和下降关系,符合BP网络的梯度求解,容错性好,有界,渐进于0、1,符合人脑神经饱和的规律,但比sigmoid函数延迟了饱和期。

3.4ReLu函数和softplus函数

ReLu函数的全称为Rectified Linear Units,函数表达式为:
y=max(0,x),softplus函数的数学表达式为y=log(1+ex)
,它们的函数表达式如下:
  

ReLu与softplus函数对比
 
  可以看到,softplus可以看作是ReLu的平滑。根据神经科学家的相关研究,softplus和ReLu与脑神经元激活频率函数有神似的地方。也就是说,相比于早期的激活函数,softplus和ReLu更加接近脑神经元的激活模型,而神经网络正是基于脑神经科学发展而来,这两个激活函数的应用促成了神经网络研究的新浪潮。ReLU是目前深度学习模型中应用最火热的激活函数之一。

为什么引入Relu呢?

  • 采用sigmoid等函数,算激活函数时(指数运算),计算量大,反向传播求误差梯度时,求导涉及除法,计算量相对大,而采用Relu激活函数,整个过程的计算量节省很多.
  • 对于深层网络,sigmoid函数反向传播时,很容易就会出现梯度消失的情况(在sigmoid接近饱和区时,变换太缓慢,导数趋于0,这种情况会造成误差信息丢失从而无法完成深层网络的训练。
  • Relu会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生。

4、如何选择为自己的模型选择合适的激活函数?

到底应该在自己构建的神经网络中使用哪种激活函数,并没有固定的答案。根据前人总结的经验:

  • 通常使用tanh激活函数要比sigmoid收敛速度更快;
  • 在较深层的神经网络中,选用relu激活函数能使梯度更好地传播回去,但当使用softmax作为最后一层的激活函数时,其前一层最好不要使用relu进行激活,而是使用tanh作为替代,否则最终的loss很可能变成Nan;
  • 当选用高级激活函数时,建议的尝试顺序为ReLU->ELU->PReLU->MPELU,因为前两者没有超参数,而后两者需要自己调节参数使其更适应构建的网络结构。

关于激活函数就写到这里了,以后有机会再来写入门深度学习中剩下的两个基本要素吧!

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

推荐阅读更多精彩内容

  • 关键词: 激活函数;深度学习;Sigmoid;ReLU;Tanh;Swish中文翻译网址英文原文网址 本文从激活函...
    generalz阅读 2,179评论 0 6
  • 激活函数的作用 摘自:https://www.zhihu.com/question/22334626 激活函数(A...
    郭少悲阅读 3,779评论 0 1
  • 第二个Topic讲深度学习,承接前面的《浅谈机器学习基础》。 深度学习简介 前面也提到过,机器学习的本质就是寻找最...
    我偏笑_NSNirvana阅读 15,492评论 7 49
  • 悦读 嘴笨 上天给开另一扇门 推门而入 里面是一个 天空湛蓝 花儿鲜艳 鸟鸣婉转 祥和一片 让心生善的 世外桃源 ...
    姬二水阅读 156评论 0 2
  • 洗完澡,躺在床上,又看了一遍《28岁未成年》。他们像我们的故事,甚至连分手理由都如出一辙,我逼婚未果,然后分...
    哈尼V兒阅读 126评论 0 0