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))其中,C 为语料库,context(w) 为 w 的上下文。
比如在 n-gram 模型中, context(wt)=wt−1t−n+1 ,即词 w 的前 n-1个词。 - 方法一:最大对数似然
L=∑w∈ClogP(w|context(w))求得最优参数 θ∗ 。
- 方法二:把概率视为一个关于
w和context(w)
的函数
F
,即一旦求得最优解 θ∗ 后, F 也被唯一确定,则概率
P(w|context(w))=F(w,context(w),θ) 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(低维表示,引入距离表示词之间的相似性)。