如上图所示,激活函数(Activation Function)
是在人工神经网络神经元上运行的函数,负责将神经元的输入映射到输出。激活函数为人工神经网络引入非线性因素,可以让人工神经网络模型更好的去学习、理解非常复杂的非线性关系。
感知机(Perception)
是人工神经网络的前身,在感知机模型中不使用激活函数,是一个线性分类器。
一层感知机网络如下图所示:
表达式为:
观察上式可知:一层感知机是一个线性分类器;
二层感知机如下图所示:
整理如下:
把一层感知机的表达式和二层感知机整理后的式子进行对比发现:感知机的层数并不能改变其是线性分类器的特性。
线性分类器存在一个问题:不能解决线性不可分
的问题。最简单的线性不可分问题如下图所示:使用一条直线把橙色的正方形和绿色的圆形进行分割。
上图中红色和深绿色的线是两条例子,经试验发现,在二维平面中不存在这样一条直线可以把橙色的正方形和绿色的圆形进行分割。
这就是感知机(线下分类器)面临的问题:不能解决线性不可分问题。
激活函数最重要的作用就是可以给模型带来非线性因素
,直白的理解就是把直线“掰弯”
。
如上图所示,当感知器加入激活函数后,可以使用曲线把橙色的正方形和绿色的圆形分割开来。
sigmoid 是常用的非线性激活函数,解析式如下所示:
导函数的表达式如下:
备注:橙色的线表示原函数,蓝色的线表示导函数。
sigmoid把输入的值转换为0到1之间,特别的:如果是非常大的正数,就转换为1,如果非常小的负数,则转换为0;
梯度消失
的现象;zero centered
,这会导致zigzag
现象;tanh的解析式如下所示:
tanh的导函数如下所示:
备注:橙色的线表示原函数,蓝色的线表示导函数。
zero centered
的问题。缺点梯度消失
的现象;relu的解析式如下所示:
relu的导函数解析式如下所示:
备注:橙色的线表示原函数,蓝色的线表示导函数。
zero-centered
;dead relu problem
,即:某些神经元在训练过程中会出现永远不会被激活的情况,因为在反向更新时,如果梯度太大,权值更新之后可能会变成负数,在之后的正向传播的时候,输出会一直为0,造成dead relu
的问题(备注:此问题可以通过使用小学习率或者使用leaky ReLU等方法改进)。leaky_relu的解析式如下所示:
leaky_relu的导函数解析式如下所示:
图像
备注:橙色的线表示原函数,蓝色的线表示导函数。特点leaky relu是为了解决relu的dead relu
问题而设计的,将relu的前半段用“ax”(通常a取值为0.01)替换0。这样在理论上就解决了dead relu
的问题。
备注:在实践中,并没有证明leaky relu在效果上完全优于relu。
elu的表达式如下所示:
elu导函数的表达式如下所示:
备注:橙色的线表示原函数,蓝色的线表示导函数。
elu也是为了解决relu的dead relu
问题而设计的,elu除了具有relu的优点之外还具有以下优点:
dead relu
问题;zero-centered
;小缺点原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。