1. 统计语言模型
- 句子
W=wT1=(w1,w2,⋯,wT),wT1 表示句子的第一个词语到第T个词语。 -
P(W)=P(wT1)=P(w1,w2,⋯,wT)=P(w1)×P(w2|w1)×P(w3|w21)×⋯×P(wT|wT1) - 句子长度为 T,词典 D 的大小为 N ,存在
NT 种句子,每个句子需要 T 个参数,共T×NT 个参数(其中有重复的)。 - 下面讨论两种计算参数的方法:n-gram模型、神经网络。
2. n-gram 模型
- n-1 阶的 Markov 假设: 一个词出现的概率,仅与前 n-1 个词语有关,即
P(wk|wk−11)≈P(wk|wk−1k−n+1) - 在语料库C足够大时,
P(wk|wk−1k−n+1)≈count(wkk−n+1)count(wk−1k−n+1) - 理论上,n 越大越好,参数越多,模型的可区别性越好;但n较大时,由于语料库的限制,每个参数的实例变少,可靠性降低;一般最大
n=3 。 - 平滑技术。
- n-gram 主要统计语料中各种词串出现的次数,以及做平滑处理。需要计算某个句子的概率时,找到相关的参数连乘即可。
3. 神经概率语言模型
两种求参方法
- 目标函数
L=∏w∈CP(w|context(w))
比如在 n-gram 模型中,context(wt)=wt−1t−n+1 ,即词 w 的前 n-1个词。 -
方法一:最大对数似然
L=∑w∈ClogP(w|context(w)) θ∗ 。 -
方法二:把概率视为一个关于
w和context(w) 的函数F ,即P(w|context(w))=F(w,context(w),θ) θ∗ 后,F 也被唯一确定,则概率P(w|context(w)) 可以通过函数F(w,context(w),θ∗) 来计算。 - 不需要保存所有的概率值,而是通过
F() 直接计算。 - 通过选取合适的模型,可使得
F() 的参数个数远小于 n-gram 模型中参数的个数。
神经网络构造
F(⋅)
- 词向量:对于词典
D 中的任意一个词w,|D|=N,v(w)∈Rm,m 为词向量长度。 训练样本:
(context(w),w),其中 context(w)=wt−1t−n+1 。-
输入层:
n−1 个结点,每个结点为一个词向量v(wi)∈Rm,i=1,⋯,n−1 -
投影层:
(n−1)×m 个结点,xw∈R(n−1)×m v(wt−1),v(wt−2),⋯,v(wt−n+1) 首尾相接。 -
隐藏层:
zw=tanh(Wxw+p),zw∈Rnh,W∈Rnh×(n−1)m,p∈Rnh nh 为超参数。 -
输出层:
yw=Uzw+q,yw∈RN,U∈RN×nh,q∈RN yw=(yw,1,yw,2,⋯,yw,N)T 。 -
Softmax 层:yw 不能表示概率,想要yw 的第i 个分量ym,i 表示上下文为context(w) 时下一个词是词典D 中第i 个词的概率,需要把N 个输出通过Softmax 归一化,即P(w|context(w))=eyw,iw∑Ni=1eyw,i iw 表示词w 在词典D 中的索引。 - 优势1:神经概率语言模型假定词义相近的词的词向量也相似(欧氏距离小或者内积大),词向量中的小变化对概率的影响也是小的。
- 优势2:不需要做平滑处理,
Sotfmax 保证了概率值不会为0或1。 - 词向量有两种表示方法:one-hot representation(维数灾难,没有考虑词与词的相关性);distributed representation(低维表示,引入距离表示词之间的相似性)。