赞
踩
原论文:《A Neural Probabilistic Language Model》
2003/02发表的文章,提出了神经网路语言模型。该模型使用前 n − 1 n-1 n−1 个词来预测第 n n n 个词,计算概率 p ( w n ∣ w 1 , w 2 , . . . , w n − 1 ) p(w_n|w_{1}, w_{2}, ..., w_{n-1}) p(wn∣w1,w2,...,wn−1)。首先将前 n − 1 n-1 n−1 个词用 one-hot 表示,然后使用投影矩阵降维,再将降维后的 n − 1 n-1 n−1 个词的表示拼接起来,输入到单层的使用 tanh 激活的神经网络中,得到一个富含输入信息的 hidden state 向量,或者说是 context 向量,再经过一个线性层得到字典中词得预测分值,经过softmax后得到每个词的概率,其中概率最大的就是模型的预测词。
由于NNLM模型使用了低维紧凑的词向量对上文进行表示,这解决了词袋模型带来的数据稀疏、语义鸿沟等问题。
模型在神经网络层参数量巨大。
w t − n + 1 , w t − n + 2 , . . . , w t − 1 w_{t-n+1}, w_{t-n+2}, ..., w_{t-1} wt−n+1,wt−n+2,...,wt−1为输入长度为n-1的一串文本,文本通过one-hot表示, w ∈ R V × 1 w \in R^{V \times 1} w∈RV×1,V为字典大小,包含词的总数。
f ( w t − n + 1 , w t − n + 2 , . . . , w t − 1 ) = w t ^ f(w_{t-n+1}, w_{t-n+2}, ..., w_{t-1})=\hat{w_t} f(wt−n+1,wt−n+2,...,wt−1)=wt^, w ^ \hat{w} w^为预测词,为 m a x { p } max\{\boldsymbol{p}\} max{p}所对应的词,其中
p = { p ( w 1 ∣ w t − n + 1 , w t − n + 2 , . . . , w t − 1 ) , p ( w 2 ∣ w t − n + 1 , w t − n + 2 , . . . , w t − 1 ) , . . . , p ( w i ∣ w t − n + 1 , w t − n + 2 , . . . , w t − 1 ) , . . . } , i = 1 , 2 , 3 , . . . , V \boldsymbol{p}=\{p(w_1|w_{t-n+1}, w_{t-n+2}, ..., w_{t-1}), p(w_2|w_{t-n+1}, w_{t-n+2}, ..., w_{t-1}), ..., p(w_i|w_{t-n+1}, w_{t-n+2}, ..., w_{t-1}),...\}, i=1, 2, 3, ..., V p={p(w1∣wt−n+1,wt−n+2,...,wt−1),p(w2∣wt−n+1,wt−n+2,...,wt−1),...,p(wi∣wt−n+1,wt−n+2,...,wt−1),...},i=1,2,3,...,V
意思就是给定n-1个输入词( w t − n + 1 , w t − n + 2 , . . . , w t − 1 w_{t-n+1}, w_{t-n+2}, ..., w_{t-1} wt−n+1,wt−n+2,...,wt−1),预测第n个词 w t w_{t} wt时, { p } \{\boldsymbol{p}\} {p}中概率最大的那个 p ( w i ∣ w t − n + 1 , w t − n + 2 , . . . , w t − 1 ) p(w_i|w_{t-n+1}, w_{t-n+2}, ..., w_{t-1}) p(wi∣wt−n+1,wt−n+2,...,wt−1)所对应的那个词 w i w_i wi,就是预测输出的词。
w t − n + 1 , w t − n + 2 , . . . , w t − 1 w_{t-n+1}, w_{t-n+2}, ..., w_{t-1} wt−n+1,wt−n+2,...,wt−1为输入长度为n-1的一串文本,文本通过one-hot表示, w ∈ R V × 1 w \in R^{V \times 1} w∈RV×1,V为字典大小,包含词的总数。
x = C t − n + 1 ⊕ C t − n + 2 ⊕ . . . ⊕ C t − 1 , x ∈ R m ( n − 1 ) × 1 \boldsymbol{x}=C_{t-n+1}\oplus C_{t-n+2}\oplus ...\oplus C_{t-1}, \boldsymbol{x}\in R^{m(n-1)\times 1} x=Ct−n+1⊕Ct−n+2⊕...⊕Ct−1,x∈Rm(n−1)×1
其中, ⊕ \oplus ⊕为拼接操作, C i = C w i C_{i}=\boldsymbol{C}w_{i} Ci=Cwi, C i ∈ R m × 1 C_i \in R^{m\times 1} Ci∈Rm×1, C \boldsymbol{C} C为变换矩阵,投影矩阵, C ∈ R m × V \boldsymbol{C} \in R^{m \times V} C∈Rm×V,把one-hot表示的稀疏向量从稀疏的V维空间投影到稠密的m维空间。然后再将 C i C_i Ci拼接起来,形成上下文信息,传递给下一层。
x = C t − n + 1 ⊕ C t − n + 2 ⊕ . . . ⊕ C t − 1 , x ∈ R m ( n − 1 ) × 1 \boldsymbol{x}=C_{t-n+1}\oplus C_{t-n+2}\oplus ...\oplus C_{t-1}, \boldsymbol{x}\in R^{m(n-1)\times 1} x=Ct−n+1⊕Ct−n+2⊕...⊕Ct−1,x∈Rm(n−1)×1
t a n h ( H x + d ) ∈ R h × 1 , H ∈ R h × m ( n − 1 ) , d ∈ R h × 1 tanh(\boldsymbol{H}\boldsymbol{x}+\boldsymbol{d})\in R^{h \times 1}, \boldsymbol{H}\in R^{h \times m(n-1)}, \boldsymbol{d}\in R^{h \times 1} tanh(Hx+d)∈Rh×1,H∈Rh×m(n−1),d∈Rh×1,h为隐藏层神经元个数。
这层提取输入的特征,传给下一层。
输入层与输出层连接时: t a n h ( H x + d ) tanh(\boldsymbol{H}\boldsymbol{x}+\boldsymbol{d}) tanh(Hx+d), x x x
输入层与输出层不连接时: t a n h ( H x + d ) ∈ R h × 1 tanh(\boldsymbol{H}\boldsymbol{x}+\boldsymbol{d})\in R^{h \times 1} tanh(Hx+d)∈Rh×1
w t ^ \hat{w_t} wt^
输入层与输出层连接时:
y = b + W x + U t a n h ( H x + d ) \boldsymbol{y} = \boldsymbol{b}+\boldsymbol{Wx}+\boldsymbol{U}tanh(\boldsymbol{H}\boldsymbol{x}+\boldsymbol{d}) y=b+Wx+Utanh(Hx+d)
其中 b ∈ R V × 1 , W ∈ R V × m ( n − 1 ) , U ∈ R V × h \boldsymbol{b}\in R^{V \times 1}, \boldsymbol{W}\in R^{V \times m(n-1)}, \boldsymbol{U}\in R^{V \times h} b∈RV×1,W∈RV×m(n−1),U∈RV×h,通常 W \boldsymbol{W} W为 0 \boldsymbol{0} 0
输入层与输出层不连接时:
y = b + U t a n h ( H x + d ) , y ∈ R V × 1 \boldsymbol{y} = \boldsymbol{b}+\boldsymbol{U}tanh(\boldsymbol{H}\boldsymbol{x}+\boldsymbol{d}), \boldsymbol{y} \in R^{V \times 1} y=b+Utanh(Hx+d),y∈RV×1
y \boldsymbol{y} y可以理解为融合特征之后,对每一个字典里面的词进行预测值打分,打分的值并不为概率, y \boldsymbol{y} y经过softmax,才是最后的预测概率 p , p ∈ R V × 1 \boldsymbol{p}, \boldsymbol{p} \in R^{V \times 1} p,p∈RV×1
p = e y ∑ i V e y i \boldsymbol{p}=\frac{e^{\boldsymbol{y}}}{\sum\limits_{i}^{V}e^{y_i}} p=i∑Veyiey
本文的分值y为图中的z,本文的概率p为图中的y。
{ p } \{\boldsymbol{p}\} {p}中概率最大的那个 p ( w i ∣ w t − n + 1 , w t − n + 2 , . . . , w t − 1 ) p(w_i|w_{t-n+1}, w_{t-n+2}, ..., w_{t-1}) p(wi∣wt−n+1,wt−n+2,...,wt−1)所对应的那个词 w i w_i wi,就是预测输出的词。
这里使用的是交叉熵cross entropy loss
C
E
H
(
p
,
q
)
=
−
∑
x
∈
X
p
(
x
)
log
q
(
x
)
CEH(p,q)=-\sum\limits_{x \in \boldsymbol{X}} p(x)\log q(x)
CEH(p,q)=−x∈X∑p(x)logq(x)
其中
X
\boldsymbol{X}
X为x的取值范围,多分类任务中代表类别。
这里有2个模型,一个x的真实模型,一个是构造的模型,我们希望构造的模型尽量接近真实模型。交叉熵越小,表示两个概率分布越靠近。p(x)为x的真实概率分布,q(x)为构造模型的概率分布。
l
o
s
s
=
m
i
n
(
−
∑
t
=
1
T
log
p
(
w
t
∣
w
t
−
n
+
1
,
w
t
−
n
+
2
,
.
.
.
,
w
t
−
1
)
)
loss=min(-\sum\limits_{t=1}^T\log p(w_t|w_{t-n+1}, w_{t-n+2}, ..., w_{t-1}))
loss=min(−t=1∑Tlogp(wt∣wt−n+1,wt−n+2,...,wt−1))
待优化的参数为:
b
,
d
,
W
,
U
,
H
,
C
\boldsymbol{b}, \boldsymbol{d}, \boldsymbol{W}, \boldsymbol{U}, \boldsymbol{H}, \boldsymbol{C}
b,d,W,U,H,C
对于一个输入样本 w t − n + 1 , w t − n + 2 , . . . , w t − 1 w_{t-n+1}, w_{t-n+2}, ..., w_{t-1} wt−n+1,wt−n+2,...,wt−1来说,真实概率为one-hot编码值,模型的预测概率为 p \boldsymbol{p} p
原文为:我/爱/中国/共产党,假设字典大小V=4
f
(
w
t
−
n
+
1
,
w
t
−
n
+
2
,
.
.
.
,
w
t
−
1
)
=
w
t
^
f(w_{t-n+1}, w_{t-n+2}, ..., w_{t-1})=\hat{w_t}
f(wt−n+1,wt−n+2,...,wt−1)=wt^
w
t
−
n
+
1
,
w
t
−
n
+
2
,
.
.
.
,
w
t
−
1
w_{t-n+1}, w_{t-n+2}, ..., w_{t-1}
wt−n+1,wt−n+2,...,wt−1为:我/爱/中国
预测词
w
t
^
\hat{w_t}
wt^为:共产党
词 | one-hot编码 |
---|---|
我 | [1,0,0,0] |
爱 | [0,1,0,0] |
中国 | [0,0,1,0] |
共产党 | [0,0,0,1] |
输入到NNLM模型中,最后得到的概率 p = [ 0.1 , 0.1 , 0.2 , 0.6 ] \boldsymbol{p}=[0.1, 0.1, 0.2, 0.6] p=[0.1,0.1,0.2,0.6]
p \boldsymbol{p} p | 概率值 |
---|---|
p ( 我 ∣ 我 , 爱 , 中 国 ) p(我\mid我, 爱, 中国) p(我∣我,爱,中国) | 0.1 |
p ( 爱 ∣ 我 , 爱 , 中 国 ) p(爱\mid我, 爱, 中国) p(爱∣我,爱,中国) | 0.1 |
p ( 中 国 ∣ 我 , 爱 , 中 国 ) p(中国\mid我, 爱, 中国) p(中国∣我,爱,中国) | 0.2 |
p ( 共 产 党 ∣ 我 , 爱 , 中 国 ) p(共产党\mid我, 爱, 中国) p(共产党∣我,爱,中国) | 0.6 |
p ( 共 产 党 ∣ 我 , 爱 , 中 国 ) p(共产党|我, 爱, 中国) p(共产党∣我,爱,中国)的概率最大,预测的词为:共产党
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。