概述
在一语料库中, 假设有长度为 T 的文本序列
S
:
=
w
1
,
w
2
,
⋯
,
w
T
S:=w_{1},w_{2}, cdots, w_{T}
S:=w1,w2,⋯,wT. 如果选子序列
S
:
=
w
t
−
1
,
w
t
−
2
,
⋯
,
w
t
−
n
+
1
S:=w_{t-1},w_{t-2}, cdots, w_{t-n+1}
S:=wt−1,wt−2,⋯,wt−n+1, 想预估 词汇
w
t
w_t
wt 出现的概率, 即计算条件概率
P
(
w
t
∣
w
t
−
1
,
w
t
−
2
,
⋯
,
w
t
−
n
+
1
)
.
P(w_t| w_{t-1},w_{t-2}, cdots, w_{t-n+1}).
P(wt∣wt−1,wt−2,⋯,wt−n+1).
可以使用 NNLM 的方法, 其工作流程见下图
我们先假定语料库生成的 词汇共有 v 个, 则 每个词汇的 1-hot 为 v-维行向量.
第一步, 将 词向量
w
i
w_i
wi,
i
=
t
−
1
,
⋯
,
t
−
n
+
1
i=t-1,cdots,t-n+1
i=t−1,⋯,t−n+1, 投放到 d-维向量空间, d由个人选定. 此处使用的是
v
×
d
v times d
v×d 矩阵C. 输出为
w
i
C
w_i C
wiC, 将 n-1 个输出按顺序拼接成
(
n
−
1
)
d
(n-1)d
(n−1)d-维 行向量 x.
第二步, 将 x 输入到 tanh层中, 这是一个隐含层, 神经元个数可以自己选定设为 h. 于是有一 h × ( n − 1 ) d h times (n-1)d h×(n−1)d 的转移 矩阵, 设为 H. 这个层的输出为 h-维 向量 y’=tanh(xH+ b’).
第三步, 将
x
,
y
′
x,y'
x,y′ 输入sigmoid 层, 输出为 一个行向量 y_t, 输出的维度是 v. 这里 两个转移矩阵
W
(
n
−
1
)
d
×
v
W_{(n-1)d times v}
W(n−1)d×v,
U
h
×
v
U_{h times v}
Uh×v.
y
t
=
s
i
g
m
o
i
d
(
b
+
x
W
+
y
′
U
)
.
y_t=sigmoid(b +xW + y'U).
yt=sigmoid(b+xW+y′U).
使用最大似然估计计算 参数的值.
假定
w
t
w_t
wt 的索引是
i
t
i_t
it, 令
y
t
(
i
t
)
y_t(i_t)
yt(it) 表示
y
t
y_t
yt 的第
i
t
i_t
it个分量, 也即预测为
w
t
w_t
wt 的概率. 希望
∏
t
=
1
T
y
t
(
i
t
)
prod_{t=1}^T y_t(i_t)
∏t=1Tyt(it) 取最大值,
使用 log 后, 取均值, 变成希望
L
(
H
,
b
′
,
W
,
b
,
C
)
:
=
1
T
∑
l
o
g
y
t
(
i
t
)
L(H,b',W,b,C):=frac{1}{T} sum log , y_t(i_t)
L(H,b′,W,b,C):=T1∑logyt(it)
取最值.
最后
以上就是爱笑彩虹为你收集整理的自然网络语言模型(NNLM)的全部内容,希望文章能够帮你解决自然网络语言模型(NNLM)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复