谁挡了我的神经网络?(三)—— **函数
这一系列文章介绍了在神经网络的设计和训练过程中,可能提升网络效果的一些小技巧。前文介绍了在训练过程中的一系列经验,这篇文章将重点关注其中的**函数部分。更新于2018.11.1。
文章目录
介绍
**函数(activation function)是指放在层与层之间,使得网络的输出控制在某一个范围内的函数,也称作传递函数(transfer function)。这些函数通常是非线性的,正是因为这些函数的存在,才使得神经网络能够描述非线性变换。否则,无论多少层卷积层等线性变换的叠加,都相当于一层非常宽的线性变换层的结果。
比较常用的**函数有:
目前最常用的**函数是ReLU系列,因为其不容易造成梯度消失等问题。所以,对于损失函数,除非有特殊需求,通常都采取ReLU系列的**函数。具体应用的种类,可以直接借助各种深度学习库中提供的现有函数,比如Caffe中提供的就是Leaky ReLU,但是当其中的参数设置成0的时候,其就会退化成普通的ReLU了。
至于其他种类的**函数,博主认为,对于应用神经网络的人而言,除非有特殊需求,否则暂时没有必要深究。当然,如果在日后的研究过程中博主有了不同的看法,会回来更新的,这个也只是博主的一个建议,大家有选择地看。
参考文献
- 比较古老的一篇,从数学角度的解释:https://papers.nips.cc/paper/874-how-to-choose-an-activation-function.pdf
- 有视频演示:https://engmrk.com/activation-function-for-dnn/