字符级别的输入
目前存在的问题:
NLMs已经被证明优于基于计数的n-gram语言模型(Mikolov.2011年),但是模型对子词信息关注少,例如eventful,eventfully,uneventful和 uneventfully,这些词应该在向量空间内具有类似的结构嵌入。但是NLMs对于罕见词的嵌入估计很差,导致罕见词(以及它们周围的词)的高度困惑。("困惑"模型评价指标之一,困惑值越低,模型性能越好)
本文提出了一种利用子词信息的字符级卷积神经网络(CNN),其输出作为递归神经网络语言模型(RNN-LM)的输入。
优点:
NLMs模型中的参数大多来自于word embeddings,而本文提出的模型在输入层中未使用word embeddings,所以模型参数较少,且试验效果好
模型分为3个部分:
(1) Character-level Convolutional Neural Network
(2) Highway Network
(3) Recurrent Neural Network Language Model
(1) 字符级别的CNN
设C为字符集,d为字符插入矩阵的维度,Q (d×|C|)为字符插入矩阵。假设词汇表V中的某个词k由[
c
1
,
.
.
.
,
c
l
c_1,...,c_l
c1,...,cl]组成(l是词k的长度),词k经过矩阵Q可以表示为矩阵
C
K
∈
R
d
×
l
C^K∈R^{d×l}
CK∈Rd×l。滤波器
H
∈
R
d
×
w
H∈R^{d×w}
H∈Rd×w(宽度为w),卷积层的输出
f
k
f^k
fk为:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/4086b5aa091a636e427a9c230cb540c4.png)
其中
C
k
[
∗
,
i
:
i
+
w
−
1
]
C^k[*,i:i+w-1]
Ck[∗,i:i+w−1]表示矩阵
C
k
C^k
Ck的第i至i+w-1列;<A,B>=Tr(
A
B
T
AB^T
ABT)。然后添加一个“池化层”:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/691b5b7e6c63909eae090883f31d9c8c.png)
由滤波器的尺寸和词k的长度可知,
f
k
f^k
fk(向量)长度为l-w+1,给定滤波器的情况下,遍历i后取最大值,这一步的目的是获得值最高的最重要的特征。假设一共有h个滤波器,则
y
k
=
[
y
1
k
,
.
.
.
,
y
h
k
]
y^k=[y^k_1,...,y^k_h]
yk=[y1k,...,yhk]。
(2)Highway Network
将上述中的
y
k
y^k
yk作为Highway Network的输入,即:
![Alt](https://i-blog.csdnimg.cn/blog_migrate/8cee0a2d89e1c19fde0ec16b1bdd6c3c.png)
![Alt](https://i-blog.csdnimg.cn/blog_migrate/0ca0f4d70d1f9631eacde850029bf694.png)
这一步的_目的_是将直接将一部分的输入当做输入,有效的减少梯度消失的问题,同时也能提高模型性能。
(3)Recurrent Neural Network Language Model
采用经典的LSTM网络结构:
![Alt](https://i-blog.csdnimg.cn/blog_migrate/741b2172826b34002ca81ca28723dd44.png)
并且在隐藏层后加入一个softmax层
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/9d19694b531e224ad8dea9c9d279192b.png)
其中词序列 w 1 : t = [ w 1 , . . . , w t ] w_{1:t}=[w_1,...,w_t] w1:t=[w1,...,wt], p j p^j pj表示隐藏层输出矩阵的第j列, q j q^j qj是相应的偏置。