为什么使用tanh激活MLP的功能?

for*_*hia 19 machine-learning neural-network hyperbolic-function

我个人研究神经网络的理论并得到一些问题.

在许多书籍和参考文献中,对于隐藏层的激活功能,使用了超切线函数.

书籍提出了一个非常简单的原因,即tanh函数的线性组合可以描述具有给定误差的几乎所有函数形状.

但是,有一个问题.

  1. 这是使用tanh功能的真正原因吗?
  2. 如果那时,它是使用tanh功能的唯一原因吗?
  3. 如果那么,tanh功能是唯一能做到这一点的功能吗?
  4. 如果没有,真正的原因是什么?

我在这里继续思考...请帮助我摆脱这个心理(?...)陷阱!

Rya*_*Liu 27

大多数时间tanh快速收敛而不是sigmoid和逻辑函数,并且执行更好的准确性[1].然而,最近修正的线性单元(ReLU)由Hinton [2]提出,它显示ReLU训练比tanh快3[3]以达到相同的训练误差.您可以参考[4]看看ReLU提供的好处.


按照约2年的机器学习经验.我想分享一些最常用的纸张和我对计算机视觉的经验.

归一化输入非常重要

正常化可以获得更好的性能并快速收敛.大多数时候我们将减去平均值以使输入均值为零以防止权重改变相同的方向以便收敛缓慢[5].最近谷歌也指出这种现象作为内部协变量在训练深度学习时移出,他们提出批量归一化[6]以便归一化具有零均值和单位方差的每个向量.

更多数据更准确

更多的训练数据可以很好地生成特征空间并防止过度拟合.在计算机视觉中,如果训练数据不够,则增加训练数据集的大多数使用技能是数据论证和综合训练数据.

选择良好的激活功能可以更好,更有效地进行培训.

ReLU非线性激活更好地工作,并在深度学习和MLP中执行最先进的结果.此外,它具有一些优点,例如易于实现和反向传播中的更便宜的计算以有效地训练更深的神经网络.但是,ReLU将获得零梯度,并且在单元为零活动时不进行训练.因此,提出了一些修改的ReLU,例如Leaky ReLU和Noise ReLU,并且最流行的方法是由Microsoft提出的PReLU [7],其推广了传统的重新单元.

其他

  • 如果它不会振荡或发散,则选择较大的初始学习率,以便找到更好的全局最小值.
  • 改组数据


小智 12

实际上,可以使用tanh和logistic函数.这个想法是你可以将任何实数([-Inf,Inf])映射到[-1 1]或[0 1]之间的数字,分别用于tanh和logistic.以这种方式,可以示出这些功能的组合可以近似任何非线性函数.现在关于对逻辑函数的tanh的偏好是第一个关于0是对称的而第二个不是.这使得第二个更容易使后面的层饱和,使得训练更加困难.


Bor*_*lik 9

为了加起来已经存在的答案,0左右对称性的偏好不仅仅是美学问题.LeCun等人的一篇优秀文章" Efficient BackProp "非常详细地展示了为什么输入,输出和隐藏层的平均值为0且标准差为1是个好主意.