把自己对神经网络语言模型(NNML)的一些理解记录下来,有理解不正确的地方还请在评论区批评指正。
原文可在这里阅读下载
模型结构如下图所示:

模型包含:输入层,投影层,隐藏层,以及输出层。
输入层:将前N-1个词
(
w
t
−
n
+
1
,
⋯
,
w
t
−
2
,
w
t
−
1
)
(w_{t-n+1}, \cdots,w_{t-2}, w_{t-1})
(wt−n+1,⋯,wt−2,wt−1)用1-of-
∣
V
∣
|V|
∣V∣编码方式(好像是dummy coding,可以参考pandas中的get_dummies函数)编码,
V
V
V是词典。假设将词
w
t
−
n
+
1
w_{t-n+1}
wt−n+1编码之后的向量用
a
t
−
n
+
1
∈
R
1
×
∣
V
∣
a_{t-n+1}\in R^{1\times |V|}
at−n+1∈R1×∣V∣表示。
投影层:假设每个词用
m
m
m维表示。使用一个投影矩阵
C
∈
R
∣
V
∣
×
m
C\in R^{|V|\times m}
C∈R∣V∣×m将输入
a
t
−
n
+
1
a_{t-n+1}
at−n+1映射为向量
C
t
−
n
+
1
∈
R
1
×
m
C_{t-n+1}\in R^{1\times m}
Ct−n+1∈R1×m。一共有
n
−
1
n-1
n−1个输入,将映射后的向量拼接形成
(
C
t
−
n
+
1
,
⋯
,
C
t
−
2
,
C
t
−
1
)
∈
R
(
n
−
1
)
m
×
1
(C_{t-n+1}, \cdots, C_{t-2}, C_{t-1})\in R^{(n-1)m\times1}
(Ct−n+1,⋯,Ct−2,Ct−1)∈R(n−1)m×1。
隐藏层:隐藏层的输入为
x
=
(
C
t
−
n
+
1
,
⋯
,
C
t
−
2
,
C
t
−
1
)
x=(C_{t-n+1}, \cdots, C_{t-2}, C_{t-1})
x=(Ct−n+1,⋯,Ct−2,Ct−1),激活函数为
t
a
n
h
tanh
tanh函数。此层的输出为
t
a
n
h
(
d
+
H
x
)
tanh(d+Hx)
tanh(d+Hx),其中
d
∈
R
h
×
1
d\in R^{h\times1}
d∈Rh×1为投影层的偏置,
H
∈
R
h
×
(
n
−
1
)
m
H\in R^{h\times(n-1)m}
H∈Rh×(n−1)m为投影层到隐藏层的权重矩阵。
输出层:采用的是
s
o
f
t
m
a
x
softmax
softmax函数,即
P
^
(
w
t
∣
w
t
−
1
,
⋯
w
t
−
n
+
1
)
=
e
y
w
t
∑
i
e
y
i
\hat{P}\left(w_{t} | w_{t-1}, \cdots w_{t-n+1}\right)=\frac{e^{y_{w_{t}}}}{\sum_{i} e^{y_{i}}}
P^(wt∣wt−1,⋯wt−n+1)=∑ieyieywt
其中
y
=
b
+
W
x
+
U
tanh
(
d
+
H
x
)
y=b+W x+U \tanh (d+H x)
y=b+Wx+Utanh(d+Hx),
b
∈
R
∣
V
∣
×
1
b\in R^{|V|\times1}
b∈R∣V∣×1为隐藏层的偏置,
t
a
n
h
(
d
+
H
x
)
tanh(d+Hx)
tanh(d+Hx)为隐藏层的输出;
U
∈
R
∣
V
∣
×
h
U\in R^{|V|\times h}
U∈R∣V∣×h为隐藏层到输出层的权重矩阵;
W
∈
R
∣
V
∣
×
(
n
−
1
)
m
W\in R^{|V|\times(n-1)m}
W∈R∣V∣×(n−1)m为投影层到输出层的权重矩阵,如图中的虚线,可以为0,表示投影层到输出层没有连接。输出层的维度为
∣
V
∣
×
1
|V|\times 1
∣V∣×1,第
i
i
i 位表示词序列中第
n
n
n 个词是
V
i
V_i
Vi的概率,和为1。
综上所述,模型需要学习的参数 θ = ( b , d , W , U , H , C ) \theta=(b, d, W, U, H, C) θ=(b,d,W,U,H,C)。训练模型使用随机梯度下降法: θ ← θ + ε ∂ log P ^ ( w t ∣ w t − 1 , ⋯ w t − n + 1 ) ∂ θ \theta \leftarrow \theta+\varepsilon \frac{\partial \log \hat{P}\left(w_{t} | w_{t-1}, \cdots w_{t-n+1}\right)}{\partial \theta} θ←θ+ε∂θ∂logP^(wt∣wt−1,⋯wt−n+1)
[1] Bengio Y, Ducharme R, Vincent P, et al. A neural probabilistic language model. Journal of machine learning research, 2003, 3(Feb): 1137-1155
[2] Mikolov T, Chen K, Corrado G, et al. Efficient estimation of word representations in vector space. arXiv preprint arXiv, 2013, 1301(3781)
[3] https://blog.csdn.net/lilong117194/article/details/82018008
本文介绍了神经网络语言模型(NNML)的基本结构和工作原理,包括输入层、投影层、隐藏层和输出层。模型利用1-of-∣V∣编码方式处理词汇,并通过投影矩阵、隐藏层的tanh激活函数以及softmax输出层来预测词序列。训练过程中采用随机梯度下降法更新参数。

3807

被折叠的 条评论
为什么被折叠?



