赞
踩
在条件概率公式的链式传导下, 式 ( 1 ) 式(1) 式(1)中联合概率可拆解成多个条件概率的乘积,所以语句符合语法规范的概率可改写为:
P ( S ) = P ( W 1 , W 2 , … , W n ) = P ( W 1 ) P ( W 2 ∣ W 1 ) ⋯ P ( W n ∣ W 1 , W 2 , … , W n − 1 ) P(S) = P(W_1, W_2, …, W_n) = P(W_1)P(W_2| W_1) \cdots P(W_n| W_1, W_2, \dots , W_{n-1}) P(S)=P(W1,W2,…,Wn)=P(W1)P(W2∣W1)⋯P(Wn∣W1,W2,…,Wn−1) P ( S ) = P ( W 1 , W 2 , … , W n ) = ∏ t = 1 n P ( W t ∣ W 1 , ⋯ , W t − 1 ) (2) P(S) = P(W_1, W_2, …, W_n) = \prod_{t=1}^{n} P(W_t | W_1, \cdots, W_{t-1} ) \tag{2} P(S)=P(W1,W2,…,Wn)=t=1∏nP(Wt∣W1,⋯,Wt−1)(2)具体来说,语言模型可理解为 式 ( 2 ) 式(2) 式(2)中条件概率 P ( W t ∣ W 1 , ⋯ , W t − 1 ) P(W_t | W_1, \cdots, W_{t-1} ) P(Wt∣W1,⋯,Wt−1) 的计算方法。且按技术的发展阶段和模型功能不同,语言模型的发展脉络大致可归纳为:统计语言模型,神经网络语言模型、文本生成模型和预训练语言模型。
在理想情况下,我们希望直接在特定任务中测试使用某语言模型后的任务效果,来评价语言模型的好坏。但该评价结果局限于某一具体任务,因此,独立于任务之外的间接模型评估方法被探索建立。
困惑度(perplexity)方法由语言模型定义衍生而出,它的核心思想是:通过语言模型对符合语法规范的标准语句预测概率的高低,来评价语言模型的效果。其计算公式如下所示:
p
e
r
p
l
e
x
i
t
y
(
S
)
=
p
e
r
p
l
e
x
i
t
y
(
W
1
,
W
2
,
…
,
W
n
)
=
2
−
1
n
∑
1
n
l
o
g
[
P
^
L
M
(
W
t
∣
W
1
,
⋯
,
W
t
−
1
)
]
(6)
perplexity(S) = perplexity(W_1, W_2, …, W_n) = 2^{-\frac{1}{n} \sum_{1}^{n} log[ \hat{P}_{LM}(W_t | W_1, \cdots, W_{t-1} ) ]} \tag{6}
perplexity(S)=perplexity(W1,W2,…,Wn)=2−n1∑1nlog[P^LM(Wt∣W1,⋯,Wt−1)](6)
单词在句子出现的概率及条件概率可直接从语料库中统计得到,但随着预测语句长度增长,许多单词在预测语句中出现的上文搭配,在训练语料中未曾出现过。这导致统计得到的单词条件概率为0,使语言模型预测失效。为此衍生出了多种基于统计学原理,简化复杂前置条件概率计算的语言模型,如:Unigram 和 Ngram。
为简化具有复杂前置的条件概率计算,最理想的假设是认为单词在句中出现的概率相互独立,这称作Unigram模型。此条件下,单词在句中出现的条件概率等于该单词独立出现的概率,所以语句符合语法规范的概率可简化为:
P
(
S
)
=
P
(
W
1
,
W
2
,
…
,
W
n
)
=
P
(
W
1
)
P
(
W
2
)
⋯
P
(
W
n
)
(3)
P(S) = P(W_1, W_2, …, W_n) = P(W_1)P(W_2) \cdots P(W_n) \tag{3}
P(S)=P(W1,W2,…,Wn)=P(W1)P(W2)⋯P(Wn)(3)
Unigram模型简化假设过于理想,实际单词间往往存在语境关系、其出现概率不相互独立,所以衍生出基于马尔科夫假设简化条件概率的 n n n 元语法模型(N-gram)。关于 N-gram model 的详细内容,请参见作者文章:语言模型:N元语法模型(N-gram)
虽然N-gram等模型有效缓解了长语句预测中,单词在预测语句上文条件下的条件概率极度稀疏(在语句较长时,近乎一定等于0)的问题。但训练得到的语言模型条件概率仍十分稀疏、容易引起模型预测失效,为此可引入模型平滑方法,进一步改善条件概率稀疏问题。详细内容,请参见作者文章:语言模型:统计语言模型的平滑方法
神经网络语言模型是解决统计语言模型(N-gram)条件概率稀疏的有效方法,它可以在保证最大 n n n 值的同时,获得稠密的单词条件概率 P ( W t ∣ W 1 , ⋯ , W t − 1 ) P(W_t | W_1, \cdots, W_{t-1} ) P(Wt∣W1,⋯,Wt−1)。
神经网络语言模型的结构一般可抽象为顺序排列的嵌入层、特征层和输出层三部分。其中,嵌入层负责将非数值类型的输入(文本)序列 ( x 1 , ⋯ , x T ) (x_1, \cdots, x_T) (x1,⋯,xT),转换成数值类型的编码向量 ( e 1 , ⋯ , e T ) (e_1, \cdots, e_T) (e1,⋯,eT);特征层负责从输入序列中提取特征,输出为一个可以表示历史信息的(隐藏)状态向量 ( h 1 , ⋯ , h T ) (h_1, \cdots, h_T) (h1,⋯,hT);输出层根据接收到的特征向量进行标签预测 ( o 1 , ⋯ , o T ) (o_1, \cdots, o_T) (o1,⋯,oT)。
其特征层,可使用多种类型的神经网络来提取特征,常见的有简单平均、前馈神经网络(前馈神经网络(feedforward neural network)可以是全连接神经网络或卷积神经网络)和循环神经网络三种2。
简单平均能处理不定长输入序列,它简单地将序列上文全部单词的词向量的直接平均值或加权平均值3作为本时刻的(隐藏)状态向量。
前馈神经网络要求输入是一个固定长度的序列,它与 N-gram 模型类似,都假设句子此时刻所表达的历史(语义)信息(即:隐藏状态)只与前面的 n−1 个词(token)有关;前馈神经网络某时刻的状态向量 h t = f D e n s e / C o n v ( e t − n + 1 , ⋯ , e t − 1 ; θ ) , t = 1 , 2 , 3 , ⋯ , T h_t = f_{Dense/Conv}(e_{t-n+1},\cdots, e_{t-1} ; \ \theta), \ \ t=1, 2, 3, \cdots, T ht=fDense/Conv(et−n+1,⋯,et−1; θ), t=1,2,3,⋯,T。
循环神经网络综合前两者优点,在能处理不定长输入序列的同时,也能有效提取输入序列中的特征信息。与只能接受前
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。