Language Modeling with Gated Convolutional Networks(句子建模之门控CNN)--模型简介篇

Posted mfryf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Language Modeling with Gated Convolutional Networks(句子建模之门控CNN)--模型简介篇相关的知识,希望对你有一定的参考价值。

最近忙着实验室的项目,一直没有时间做仿真,所以就先写一下之前看的一篇文章,总结一下吧。这次要说的是Gated CNN,这也是第一次将门限控制引入到CNN中的文章,感觉十分有新意,效果也很棒。下面我们来看一下,文章的主要贡献包括:
  1. 提出一种新的门控机制
  2. 缓解梯度传播,降低梯度弥散等现象
  3. 相比LSTM,模型更加简单,收敛速度更快
    模型的结构图如下所示:
    技术图片
    首先我们可以通过堆叠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,如下所示:
    技术图片
    作者从梯度的角度对两种门控单元进行了分析,发现GTU会衰减的比较快,因为其梯度公式中包含两个衰减项。而GLU只有一个衰减项,可以较好地减轻梯度弥散。
    技术图片

实验结果

实验用了WikiText-103和GBW两个数据集,结果这里仅展示几个图表:
技术图片
技术图片
技术图片
一个细节就是,对于文本长度更大的数据集而言,论文使用了更深的网络结构以获取其Long-Term记忆。

 

以上是关于Language Modeling with Gated Convolutional Networks(句子建模之门控CNN)--模型简介篇的主要内容,如果未能解决你的问题,请参考以下文章

RNN and Language modeling in TensorFlow

斯坦福大学自然语言处理第四课“语言模型(Language Modeling)”

Paper简读 - ProGen: Language Modeling for Protein Generation

ChatGPT - ProGen: Language Modeling for Protein Generation 论文简读

A Language Modeling Approach to Predicting Reading Difficulty-paer

文献阅读:Should You Mask 15% in Masked Language Modeling?