NLP中激活函数的理解

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\{ \begin{aligned} 0&, x < 0 \\ x&, x\ge 0 \end{aligned} \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激活函数主要起挤压作用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值