本文主要是介绍【算法】门控线性单元 GLU(Gated Linear Units),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
https://blog.csdn.net/liuchonge/article/details/70238350
门控线性单元Gated linear units是在Language model with gated convolutional network中提出的。
首先我们可以通过堆叠CNN来标识长文本,提取更高层、更抽象的特征,而且相比LSTM而言,我们需要的op更少(CNN需要O(N/k)个op,而LSTM将文本视为序列需要O(N)个op,其中N为文本长度,k为卷积核宽度),这样一来,我们需要的非线性操作也更少,有效地降低了梯度弥散的现象,使模型收敛和训练变得更加简单。此外,LSTM中模型下一时刻的输出依赖于前一个时刻的隐藏层状态,无法实现模型并行化。但是,CNN无需这种依赖,可以方便的实现并行化,从而实现计算速度的提升。最后,本文中提出的线性门控单元不仅有效地降低了梯度弥散,而且还保留了非线性的能力。接下来我们看一下模型的具体实现方法:
从上图可以看出,其主要结构跟原始的CNN并无很大差异,只不过在卷积层引入了门控机制,将卷积层的输出变成了下面的公式,即一个没有非线性函数的卷积层输出*经过sigmod非线性激活函数的卷积层输出:
其中W和V是不同的卷积核,卷积核宽度为k,输出通道数为n,b和c是偏置参数。而且这里使用的是宽卷积,但是论文中对于使用宽卷积的原因的描述我没有看太懂=-=。上面公式中的后半部分,即有激活函数的卷积就是所谓的门控机制,其控制了X*W+b中哪些信息可以传入下一层。这里将其定义为Gated Linear Units (GLU).然后就可以将该模型进行堆叠,以捕获Long_Term memory。
文中还论述了关于不同门控单元的效果,首先其提出CNN中不需要像LSTM那样复杂的门限机制,不需要忘记门,一个输入门就足够了。此外,还提出了另外一种门控单元GTU,如下所示:
其他相关资料:
何凯明的深度残差网络PPT是这样的|ICML2016 tutorial https://www.leiphone.com/news/201608/vhqwt5eWmUsLBcnv.html?utm_source=tuicool&utm_medium=referral
这篇关于【算法】门控线性单元 GLU(Gated Linear Units)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!