Character-Aware Neural Language Models

参考链接

参考论文:https://arxiv.org/pdf/1508.06615v4.pdf

模型架构

整体架构图
Character-Aware Neural Language Models

  • 说明
    • 该图描述的是一个典序的语言模型,当前的输入词是absurdity,预测词是is。
    • 第一步:查找character embeddings得到absurdity个字符的向量(维度为4),并将这些向量拼接成一个词矩阵CkC^k.
    • 第二步:将包含多个过滤器的卷积神经网络作用到矩阵CkC^k上,过滤器的个数为12个:3个大小为2的(蓝色),4个大小为3的(黄色),5个大小为4的(红色)。
    • 第三步:应用最大池化层,获取固定维度的词向量表示。
    • 第四步:使用highway network作用在上面输出的固定维度的向量。
    • 第五步:将highway network的输出作为多层的LSTM-RNN的输入。
    • 第六步:将LSTM-RNN中最顶层的输出喂到最后的全连接层+softmax层得到下一个词的概率分布。

循环神经网络(Recurrent Neural Network)

  • 一般RNN的计算公式如下:ht=f(Wxt+Uht1+b)h_t=f(W*x_t+U*h_{t-1}+b)其中WWUU为模型参数,xtx_t为当前位置的词向量,h(t1)h_(t-1)是上一时刻的隐藏层状态。理论上,RNN可以用隐藏状态hth_t汇总从开始到时间tt的所有历史信息。但是实际上,由于消失/爆炸的梯度,学习远程依赖信息是困难的。
  • LSTM-RNN解决了学习长距离依赖关系的信息的问题,通过在RNN中增加一个记忆单元ctc_t。具体计算公式如下:it=σ(Wixt+Uiht1+bi)i_t=σ(W^i x_t+U^i h_{t-1}+b^i)ft=σ(Wfxt+Ufht1+bf) f_t=σ(W^f x_t+U^f h_{t-1}+b^f)ot=σ(Woxt+Uoht1+bo) o_t=σ(W^o x_t+U^o h_{t-1}+b^o)gt=tanh(Wgxt+Ught1+bg) g_t=tanh(W^g x_t+U^g h_{t-1}+b^g)ct=ftct1+itgt c_t=f_t*c_{t-1} + i_t*g_tht=ottanh(ct) h_t=o_t*tanh⁡(c_t) σ()σ(·)tanh()tanh(·)是族元素的sigmoid函数和双曲正切函数。*是逐点乘积
  • LSTM中的ctc_t缓解梯度消失的问题但是梯度爆炸依然存在。通过简单的梯度优化操作(gradient clipping)能够很好的解决这个问题。

字符级卷积神经网络(Character-level Convolutional Neural Network)

  • 假定CC表示字符表,VV为词汇表,QRd×CQ∈R^{d×|C|}为字符向量矩阵,kk为词汇表VV中的一个词,kk由字符[c1,c2,,cl][c_1,c_2,…,c_l]组成长度为ll,则词经过QQ可以表示为矩阵CkRd×l.HRd×wC^k∈R^{d×l}. H∈R^{d×w}为过滤器,其中ww为过滤器宽度,fkf^k为卷积层的输出,其计算公式:fk[i]=tanh(<Ck[,i:i+w1],H>+b)f^k [i]=tanh(<C^k [*,i:i+w-1],H>+b)<A,B><A,B>表示A和B的Frobenius内积。<A,B>F=i,jAi,jBi,j=tr(ABT)<A,B>_F=∑_{i,j}\overline{A_{i,j} } *B_{i,j}=tr(\overline{A}*B^T)其中Ai,j\overline{A_{i,j} }表示复数的共轭数(将复数部分的符号取反),*表示内积,trtr矩阵的迹。
    注意:当A,B为实数矩阵式,其结果就是对应元素相乘再求和
  • 由上面公式我们可以看出来fkf^k是一个向量长度为:lw+1l-w+1.所以卷积层的输出ff就是一个矩阵长度为12(12个过滤器).则卷积层后面的最大池化层公式为:yk=maxi(fk[i])y^k=\max_{i}(f^k [i])由公式可知y是一个长度为12的向量。

Highway Network

  • 我们可以直接将最大池化层是输出向量yy作为词向量了输入到LSTM-RNN中,也可以得到一个不错的性能。但是我们将yy再经过一个多层的全连接层再输入到LSTM-RNN确发现效果变得更差。
  • 在最大池化层加上一个highway network可以改善模型性能,highway network的公式如下:Z=tg(WH+bH)+(1t)yZ=t*g(W_H+b_H )+(1-t)*yt=σ(WTy+bT)t=σ(W_T y+b_T)注意:y和z的形状必须相同所以W_T,W_T必须是方正