激活函数是推动深度学习发展的一个关键节点。
深度学习框架,尤其是基于人工神经网络的框架可以追溯到1980年福岛邦彦提出的新认知机[11],而人工神经网络的历史更为久远。1989年,扬·勒丘恩(Yann LeCun)等人开始将1974年提出的标准反向传播算法[12]应用于深度神经网络,这一网络被用于手写邮政编码识别。尽管算法可以成功执行,但计算代价非常巨大,神经网路的训练时间达到了3天,因而无法投入实际使用[13]。许多因素导致了这一缓慢的训练过程,其中一种是由于尔根·施密德胡伯的学生赛普·霍克赖特于1991年提出的梯度消失问题[14][15]。
引自 维基百科_深度学习
早期的网络都是直的,通过加权求和的方式进行层层运算。
这种网络也被成为多层感知机,后来它被证明不能解决非线性问题,这也成为当时制约深度学习发展的一个原因。
激活函数的出现改变了这种情况,激活函数的作用就是把直(线性)的掰成弯的(非线性)。
深度函数就是一个非线性函数,只不过它的输入不是原始的 x ,而是加权计算(直的过程)之后的结果,过程可以用下式表示
其中 f() 是一个非线性函数。
- 常用的激活函数
- 激活函数的选择
你甚至可以创造自己的激励函数来处理自己的问题, 不过要确保的是这些激励函数必须是可以微分的, 因为在 backpropagation 误差反向传递的时候, 只有这些可微分的激励函数才能把误差传递回去.
想要恰当使用这些激励函数, 还是有窍门的. 比如当你的神经网络层只有两三层, 不是很多的时候, 对于隐藏层, 使用任意的激励函数, 随便掰弯是可以的, 不会有特别大的影响. 不过, 当你使用特别多层的神经网络, 在掰弯的时候, 玩玩不得随意选择利器. 因为这会涉及到梯度爆炸, 梯度消失的问题.
在卷积神经网络 Convolutional neural networks 的卷积层中, 推荐的激励函数是 relu. 在循环神经网络中 recurrent neural networks, 推荐的是 tanh 或者是 relu .
参考文献
来源:CSDN
作者:BBJG_001
链接:https://blog.csdn.net/BBJG_001/article/details/104219180