原论文: http://jmlr.org/papers/volume3/bengio03a/bengio03a.pdf
其他资料:https://blog.csdn.net/sxhlovehmm/article/details/41252125
NNLM(Neural Probabilistic Language Model),使用神经网络来对语言模型进行建模。
语言模型的公式如下:
P
^
(
w
1
T
)
=
∏
t
=
1
T
P
^
(
w
t
∣
w
1
t
−
1
)
\hat P (w_1^T) = \prod^T_{t=1} \hat P (w_t | \pmb w_1^{t-1})
P^(w1T)=t=1∏TP^(wt∣www1t−1)
其中
w
t
w_t
wt是第
t
t
t个词,
w
i
j
=
(
w
i
,
w
i
+
1
,
.
.
.
,
w
j
)
\pmb w_i^j = (w_i, w_{i+1}, ..., w_{j})
wwwij=(wi,wi+1,...,wj)。
也就是用前几个词去预测后一个词。一般,上面的模型用起来太困难,所以使用n元语言模型:
P
^
(
w
1
T
∣
w
1
t
−
1
)
≈
P
^
(
w
t
∣
w
t
−
n
+
1
t
−
1
)
\hat P (w_1^T | \pmb w_1^{t-1}) \approx \hat P (w_t | \pmb w_{t-n+1}^{t-1})
P^(w1T∣www1t−1)≈P^(wt∣wwwt−n+1t−1)
也就是认为,当前词出现的概率仅与前
n
−
1
n-1
n−1个词有关。
NNLM的结构:
前向传播:
x
=
(
C
(
w
t
−
1
)
,
C
(
w
t
−
2
)
,
C
(
w
t
−
3
)
,
.
.
.
,
C
(
w
t
−
n
+
1
)
)
\pmb x = (C(w_{t-1}), C(w_{t-2}), C(w_{t-3}), ..., C(w_{t-n+1}))
xxx=(C(wt−1),C(wt−2),C(wt−3),...,C(wt−n+1))
y
=
b
+
W
x
+
U
t
a
n
h
(
d
+
H
x
)
\pmb y = \pmb b + \pmb{W} \pmb{x} + \pmb{U} tanh(\pmb{d}+\pmb{H}\pmb{x})
yyy=bbb+WWWxxx+UUUtanh(ddd+HHHxxx)
P
^
=
s
o
f
t
m
a
x
(
y
)
\hat{P} = softmax(\pmb{y})
P^=softmax(yyy)
基于SGD的训练方法:
θ
←
θ
+
ϵ
∂
l
o
g
P
^
∂
θ
\theta \leftarrow \theta + \epsilon\frac{\partial log \hat{P}}{\partial \theta}
θ←θ+ϵ∂θ∂logP^
其中,
θ
=
(
b
,
d
,
W
,
U
,
H
,
C
)
\theta = (\pmb b, \pmb d, \pmb W, \pmb U, \pmb H, C)
θ=(bbb,ddd,WWW,UUU,HHH,C)
重点:
两个基本步骤:
- C C C:一个将单词表 V V V中的某元素 i i i转换为向量 C ( i ) ∈ R m C(i) \in \mathbb{R}^m C(i)∈Rm的映射。它就是现在被称为的词向量或词嵌入。形式上讲,它是一个 ∣ V ∣ × m |V|\times m ∣V∣×m的参数矩阵。上式中, x \pmb x xxx就是输入序列中的词的词向量构成的向量,或者说,它是一个 ∣ V ∣ × m |V|\times m ∣V∣×m矩阵。
- g(.):一个将输入单词的词向量转换为概率的映射。在上式中, g ( x ) = s o f t m a x ( y ( x ) ) g(\pmb{x}) = softmax(\pmb{y}(\pmb{x})) g(xxx)=softmax(yyy(xxx))。此外, g ( . ) g(.) g(.)也可以是FFN、RNN等可学习的模型。
补充:
训练目标:最大化如下的损失函数:
L
=
1
T
∑
t
l
o
g
f
(
w
t
,
w
t
−
1
,
.
.
.
,
w
t
−
n
+
1
;
θ
)
+
R
(
θ
)
L = \frac{1}{T} \sum_t log f(w_t, w_{t-1}, ... , w_{t-n+1}; \theta) + R(\theta)
L=T1t∑logf(wt,wt−1,...,wt−n+1;θ)+R(θ)
其中,
R
(
θ
)
R(\theta)
R(θ)是正则项,原论文使用的是weight decay,但未用于bias上。
f
f
f 即
P
^
\hat P
P^
其他内容,如训练算法、针对CPU的并行化方案等,参见原论文。