参考资料:
CS231n课程

神经元

下图是神经网络中的单个神经元。
它有输入、权值、线性函数,以及一个**函数 f。
神经元的输入通过线性函数得到一个值,再通过**函数产生输出。**函数可以理解为为神经网络引入了非线性。
[AI 笔记] **函数

Sigmoid

Sigmoid函数是较老的**函数,形如下图。
[AI 笔记] **函数
由于它在负值区的远处趋近于 0,在正值区的远处趋近于 1。所以它在这两个地方的本地梯度为0,根据链式法则,它往回传的梯度都为零,所以梯度流中断了,即梯度消失,这两个地方称作饱和区。由于梯度消失,所以它下游的神经元就得不到更新。

另外,Sigmoid函数不以零值为中心。其输出一直为正,对于上游神经元而言,输入一直为正,且本地梯度为正,所以其回传的梯度的符号与其上游梯度同号。对于 w 而言,其跟新方向只能在一三象限,如下图所示,对于第四象限的优化方向而言,效率较低。
[AI 笔记] **函数
最后,Sigmoid函数的计算设计exp,所以计算代价是比较大的。

tanh

tanh 解决了Sigmod 非零均值的问题,但其仍然存在饱和区,存在梯度消失。
[AI 笔记] **函数

ReLu

ReLu**函数是比较流行的**函数,其表达式为 f(x) = max(0, x)。如下图所示。

在上一篇对BP算法的讨论中,max门实现的是梯度路由的功能,当ReLu的输入大于 0 时,梯度可以正常往回传递,但其输入小于 0 时,梯度为零。
[AI 笔记] **函数
ReLu函数的特点:
1、对于正半轴而言,没有饱和区域,不会梯度消失,但负半轴仍存在
2、由于ReLu函数十分简单,其计算效率很高
3、收敛速度快
4、更符合生物原理
5、非零均值
6、负半轴梯度消失

Leaky ReLu 及 PReLu

ReLu 的衍生,不存在饱和区。
[AI 笔记] **函数

ELU

[AI 笔记] **函数

总结

在**函数中,还是 ReLu 的实用性最高。
[AI 笔记] **函数

相关文章: