激活函数出现的原因
1、遇到线性不可分的数据。神经网络也找不到一条合适的直线。
2、如何解决
- 尝试单层感知机。
- 尝试多层感知机
- 化简后发现仍然是一个线性分类器。
3、激活函数的作用
- 在隐藏层和输出层之间加入一个激活函数,sigmoid。
- 多层感知器
激活函数就是在神经元上加一个壳,为神经元带来非线性因素,提升模型的表达能力。第一步计算线性变化,第二步计算非线性变换。
激活函数大全
1、一致或线性激活函数
- 最简单的激活函数,输出与输入成比例,导数为常数,所以梯度也将是一个常数,下降时将会是恒定的梯度。
- 范围:负无穷到正无穷
2、Heaviside(二值型激活函数,0或1,high或low)步长函数
- 早期单层感知器中使用,对二进制分类任务有用,输入累加和高过某个阈值输出值为1,低于某个阈值输出0.
- 值域范围0-1
3、Sigmoid或Logistic激活函数(Soft Step)
- 主要应用在二进制的分类问题,具有梯度消失。
- 求导:
- 缺点:由导数可以看出当Z的值非常大或者非常小的时候,导数接近0,会导致权重W的梯度接近0,也就是梯度更新变慢,最后梯度消失。函数输出的均值并不是0,不便于下一层计算,所以可以作为输出层进行二分类,不适合在隐藏层。
i. 梯度消失的原理
a.
b. 对上图的第一个隐藏层节点进行计算,假设实际值为a,激活值为a[1],则代价函数为
其中a[1]的计算过程一般为两步,第一步线性变换
第二步非线性变换
权重w11的梯度为
c. 可以看出
Z[1]非常大或者非常小的时候,导数都为0,梯度也就为0.
e) 范围(0,1)
4、双曲正切函数(TanH)
- 看起来像一个缩放的S形函数,数据以零为中心。收敛速度更快。、
- 求导:
- 缺点:和sigmoid函数一样当Z很大或者很小时,导数接近于0,梯度消失问题。
但是弥补了均值问题。 - 范围(-1,1)
5、修正线性单元(ReLU)
- 比tanh快6倍,当输入值小于零时,输出值为零。输入值大于等于零时,输出值等于输入值。导数为1.
- 函数:
- 求导:
- 优点:输入为正数时,不存在梯度消失的问题。因为是分段线性的原因,所以计算速度是比sigmoid和tanh函数的计算指数要快的。
缺点:当输入为负时,梯度为0,会产生梯度消失的问题。 - 范围(0,x)
6、Leaky ReLU(PReLU)
- 导数:
- 优点可以避免ReLU的输入为负时的梯度消失问题
- 范围:负无穷到正无穷 a取值(0,1)