Language Model
LM是一个概率分布模型,对于语言里的每一个字符串S给出一个对应的概率
P
(
S
)
P(S)
P(S),其计算过程:
P
(
S
)
P(S)
P(S)=
P
(
w
1
w
2
.
.
.
w
n
)
P(w_1w_2...w_n)
P(w1w2...wn) =
P
(
w
n
∣
w
1
w
2
.
.
.
w
n
−
1
)
P(w_n|w_1w_2...w_{n-1})
P(wn∣w1w2...wn−1)
P
(
w
1
w
2
.
.
.
w
n
−
1
)
P(w_1w_2...w_{n-1})
P(w1w2...wn−1)=
P
(
w
1
)
∏
i
=
2
n
P
(
w
i
∣
w
1
.
.
.
w
i
−
1
)
P(w_1)\prod_{i=2}^nP(w_i|w_1...w_{i-1})
P(w1)∏i=2nP(wi∣w1...wi−1)
由公式知,这是一个典型的联合概率求解问题,利用RNN实现文本生成,也是一样的原理,利用贝叶斯公式,给定前面的词,求出后面一个词的条件概率。
对于LM的求解,有两种处理方法,N-gram语言模型和神经网络概率语言模型。
N-gram模型:基于马尔科夫假设(任意一个词的出现概率只与它前面出现的有限个N个词相关),基于这个假设的统计语言模型叫n-gram。
对于n的取值,理论上越大越好,但随着n的增大,效果并不一定越好,因为n越大,参数量会越大,区别性增加,但单个参数的影响会减少,从而影响其鲁棒性。常见有n=1.n=2,n=3,自由参数量是词典的^n。
实际求解中,是利用词频计算n-gram中的条件概率:
P
(
w
i
∣
w
i
−
n
−
1
,
.
.
.
,
w
i
−
1
)
P(w_i|wi-{n-1},...,w_{i-1})
P(wi∣wi−n−1,...,wi−1) =
c
o
u
n
t
(
w
i
−
(
n
−
1
)
,
.
.
.
,
w
i
−
1
)
c
o
u
n
t
(
w
i
−
n
−
1
,
.
.
.
,
w
i
−
1
)
\frac{count(w_{i-(n-1)},...,w_{i-1})}{count(w_{i-{n-1}},...,w_{i-1})}
count(wi−n−1,...,wi−1)count(wi−(n−1),...,wi−1)
比如:小王今天很努力,分词后【小王,今天,很,努力】,产生的概率为
P
(
小
王
,
今
天
,
很
,
努
力
)
P(小王,今天,很,努力)
P(小王,今天,很,努力)=
P
(
小
王
)
×
P
(
今
天
∣
小
王
)
×
P
(
很
∣
小
王
,
今
天
)
×
P
(
努
力
∣
小
王
,
今
天
,
很
)
P(小王)\times P(今天|小王)\times P(很|小王,今天) \times P(努力|小王,今天,很)
P(小王)×P(今天∣小王)×P(很∣小王,今天)×P(努力∣小王,今天,很),计算变很复杂,但如果n=2,就简化成了
P
(
今
天
∣
我
)
P
(
很
∣
今
天
)
P
(
努
力
∣
今
天
)
P(今天|我) P(很|今天)P(努力|今天)
P(今天∣我)P(很∣今天)P(努力∣今天)
神经网络概率语言模型
神经语言模型使用连续表示或词汇Embedding来进行预测。 以神经网络为基础来训练模型。