当前位置:   article > 正文

NLP中激活函数的理解_nlpx

nlpx

1、激活函数将线性变换转变成非线性。
Y = σ ( X W + b ) Y=\sigma(XW+b) Y=σ(XW+b)
X W + b XW+b XW+b是在X基础上做的线性变换(仿射变换),总体来说做的平移、旋转和缩放,加入激活函数后,原来的变换是非线性的。
上式也可以理解为,在 X X X基础上先过MLP,再加激活函数。在实际训练中,发现一个问题,假设 W W W初始化权重集中在0附近(正交初始化或者其他方法),不加激活函数时, W W W的经多次训练后的权重数据集中在0附近,与初始化差异不大;加任意激活函数后, W W W的经多次训练后的权重数据被拉长,呈纺锤形。
原因分析:MLP层的作用类似做一次仿射变换。在经过MLP后,若不加激活函数,仿射变换不起作用,表现在 W W W权重更新与原始差异不大;若加激活函数,激活函数起到挤压MLP输出的作用。反过来想, W W W被拉长的部分,正是MLP输出被激活函数挤压或裁剪的部分,因为$W $的变化大对应着其导数大,更新的幅度就大。
所以,应用MLP层后,最好加激活函数。
2、以ReLU函数为例
R e L U ( x ) = { 0 , x < 0 x , x ≥ 0 ReLU(x)=\left\{

0,x<0x,x0
\right. ReLU(x)={0x,x<0,x0
激活函数干的事,总结起来就两件:裁剪和挤压
若没有激活函数,只用线性变换,对于如下二分类问题,分类结果如下

若采用ReLU激活函数,在大于0的地方不变,小于0的地方归到0,单侧抑制(梯度为0)。下图中,直线左侧归为正类,右侧归为负类,但是由于单侧抑制,右侧负类的梯度不反向传播,相当于ReLU激活函数在这里砍一刀,只关注左侧部分。假设x([batch, seq, hidden_dim]),产生ReLU(x)时会经过hidden_dim次激活,也就是砍hidden_dim次刀。

经过ReLU激活函数后的二分类图像如下,可以很明显的看出,分类边界是个多边形,像砍过一样。ReLU激活函数起裁剪作用。

3、tanh激活函数

可以看出tanh激活函数,在(-1,1)内变化比较迅速,而且并不像ReLU函数单侧抑制,所以经过tanh激活后的输出应该比较平滑,如下

另一方面,tanh函数在(- ∞ \infty ,-1)和(1,+ ∞ \infty )变化较小(梯度接近于0),相当于将输出都挤压到单位球上,关注点都放在零点附近。所以tanh激活函数主要起挤压作用。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/843126?site
推荐阅读
相关标签
  

闽ICP备14008679号