基于Gate Mechanism的**单元GTU、GLU
1 Sigmoid和Tanh存在的问题
Sigmoid和双曲正切**函数有两个明显的缺点:
- 存在饱和死区特性,梯度反向传播时,容易导致梯度爆炸(Gradient Explosion)和梯度消失(Gradient Vanish)问题。
- 对于多层非线性变换嵌套操作的深度学习网络,关于参数W的梯度计算比较复杂,计算量大。
2 Relu
为了解决上面两个问题,深度学习研究领域陆续提出了Relu(Rectified linear unit)及其变体Leaky Relu、Elu、pRelu、PRelu、RRelu等。借鉴LSTM的Gate Mechanism思想,基于Relu**函数和Tanh**函数,结合gate unit产生的GTU units、GLU units等**单元。
3 基于Gate mechanism的GLU、GTU 单元
GTU(Gated Tanh Unit)的表达式为:
GLU(Gated Liner Unit)的表达式为:
分析GTU和GLU的组成结构可以发现:
Tanh**单元:tanh(X*W+b),加上一个Sigmoid**单元:O(X*V+c)构成的gate unit,就构成了GTU单元。
Relu**单元:(X * W + b),加上一个Sigmoid**单元:O(X * V + c)构成的gate unit,就构成了GLU单元。
4 Gate mechanism影响及各**单元对比
下图实验结果来源于论文《Language Modeling with Gated Convolutional Networks》 5.2节。
图1 Tanh、Relu、GTU和GLU**单元性能对比
(1)gate mechanism 影响
把GTU中的Sigmoid gate去掉的话,就是一个Tanh**函数。因此,可以通过比较Tanh和GTU的实验效果,来对比Gate mechanism对模型性能的影响。通过图1中的左图可以发现,使用GTU的效果远远优于Tanh**函数,可见,gate units有助于深度网络建模。
(2)Tanh、GLU与Relu、GLU对比
Tanh**函数和GTU都存在梯度消失的问题,因为即使是GTU,当units的**处于饱和区时,输入单元**单元:tanh(X*W+b)和gate单元:O(X * V + c)都会削弱梯度值。相反,GLU和Relu不存在这样的问题。GLU和Relu都拥有线性的通道,可以使梯度很容易通过**的units,反向传播且不会减小。因此,采用GLU或Relu做为**,训练时收敛速度更快。
(3)Relu与GLU对比
Relu单元并没有完全抛弃GLU中的gate units,GLU可以看做是处于**状态下的一种简化的Relu单元。对比Relu和GLU,通过图1右图可以大显,在相同的训练时间下,GLU单元可以获得比Relu更高的精度。
(4)GLU与GTU对比:
GTU存在tanh**的非线性单元,GLU存在的线性单元,GLU中不存在类似于GTU中的梯度消失问题。通过对比可以发现,GLU获得比GTU更快的收敛速度,以及更高的准确率。