N-Gram Model
N元模型
-
在一般的序列生成任务中,我们生成序列中的某个词需要依赖于生成前面的所有词的条件下,生成某个词的条件概率,即 p ( x t ∣ x 1 : ( t − 1 ) ) p\left(x_{t} \mid \boldsymbol{x}_{1:(t-1)}\right) p(xt∣x1:(t−1))。但当序列比较长时,依然很难估计上述条件概率
-
一个简化的方案就是N-Gram Model,它假设每个词 x t x_t xt只依赖于前面的 N − 1 N-1 N−1个词(即 N N N阶马尔可夫性质)
p ( x t ∣ x 1 : ( t − 1 ) ) = p ( x t ∣ x ( t − N + 1 ) : ( t − 1 ) ) p\left(x_{t} \mid \boldsymbol{x}_{1:(t-1)}\right)=p\left(x_{t} \mid \boldsymbol{x}_{(t-N+1):(t-1)}\right) p(xt∣x1:(t−1))=p(xt∣x(t−N+1):(t−1))
当 N = 1 N=1 N=1时,称为一元模型(Unigram);当 N = 2 N=2 N=2时,称为二元模型(Bigram)
Unigram
一元模型
-
当 N = 1 N=1 N=1时,序列中每个词都和其他词独立,和它的上下文无关
-
在一元模型中,序列 x 1 : T \boldsymbol{x}_{1: T} x1:T的概率可以写为
p ( x 1 : T ; θ ) = ∏ t = 1 T p ( x t ) = ∏ k = 1 ∣ V ∣ θ k m k p\left(\boldsymbol{x}_{1: T} ; \theta\right)=\prod_{t=1}^{T} p\left(x_{t}\right)=\prod_{k=1}^{|\mathcal{V}|} \theta_{k}^{m_{k}} p(x1:T;θ)=t=1∏Tp(xt)=k=1∏∣V∣θkmk
其中 m k m_k mk为词表中第 k k k个词 v k v_k vk在序列中出现的次数 -
给定一组训练集 { x 1 : T n ( n ) } n = 1 N ′ \left\{\boldsymbol{x}_{1: T_{n}}^{(n)}\right\}_{n=1}^{N^{\prime}} {x1:Tn(n)}n=1N′其对数似然函数为
log ∏ n = 1 N ′ p ( x 1 : T n ( n ) ; θ ) = log ∏ k = 1 ∣ v ∣ θ k m k = ∑ k = 1 ∣ v ∣ m k log θ k \begin{aligned} \log \prod_{n=1}^{N^{\prime}} p\left(\boldsymbol{x}_{1: T_{n}}^{(n)} ; \theta\right) &=\log \prod_{k=1}^{|v|} \theta_{k}^{m_{k}} \\ &=\sum_{k=1}^{|v|} m_{k} \log \theta_{k} \end{aligned} logn=1∏N′p(x1:Tn(n);θ)=logk=1∏∣v∣θkmk=k=1∑∣v∣mklogθk
其中 m k m_k mk为第 k k k个词在整个训练集中出现的次数- 上述最大似然估计可转换为约束优化问题
max θ ∑ k = 1 ∣ v ∣ m k log θ k s.t. ∑ k = 1 ∣ v ∣ θ k = 1 \begin{array}{ll} \max _{\theta} & \sum_{k=1}^{|v|} m_{k} \log \theta_{k} \\ \text { s.t. } & \sum_{k=1}^{|v|} \theta_{k}=1 \end{array} maxθ s.t. ∑k=1∣v∣mklogθk∑k=1∣v∣θk=1
- 通过引入拉格朗日函数可解得
θ k = m k ∑ k ′ = 1 ∣ V ∣ m k ′ = m k m ˉ \theta_{k}=\frac{m_{k}}{\sum_{k^{\prime}=1}^{|\mathcal{V}|} m_{k^{\prime}}}=\frac{m_{k}}{\bar{m}} θk=∑k′=1∣V∣mk′mk=mˉmk
- 因此,在一元模型中,最大似然估计等价于频率估计
Bigram
二元模型
N-gram
N元模型
-
条件概率 p ( x t ∣ x ( t − N + 1 ) : ( t − 1 ) ) p\left(x_{t} \mid \boldsymbol{x}_{(t-N+1):(t-1)}\right) p(xt∣x(t−N+1):(t−1))也能通过最大似然估计得到
p ( x t ∣ x ( t − N + 1 ) : ( t − 1 ) ) = m ( x ( t − N + 1 ) : t ) m ( x ( t − N + 1 ) : ( t − 1 ) ) p\left(x_{t} \mid \boldsymbol{x}_{(t-N+1):(t-1)}\right)=\frac{\mathrm{m}\left(\boldsymbol{x}_{(t-N+1): t}\right)}{\mathrm{m}\left(\boldsymbol{x}_{(t-N+1):(t-1)}\right)} p(xt∣x(t−N+1):(t−1))=m(x(t−N+1):(t−1))m(x(t−N+1):t)
m ( x ( t − N + 1 ) : t ) \mathrm{m}\left(\boldsymbol{x}_{(t-N+1): t}\right) m(x(t−N+1):t)为 x ( t − N + 1 ) : t \boldsymbol{x}_{(t-N+1): t} x(t−N+1):t在数据集中出现的次数
Smoothing
平滑技术
-
N元模型的一个主要问题是数据稀疏问题。在一元模型中,如果一个词在训练集中不存在,就会导致任何包含该词的句子的概率都为0;在N元模型中,当一个N元组合在训练集中不存在时,包含这个组合的句子的概率也都为0
-
数据稀疏的解决办法之一是平滑技术(Smoothing),即给一些没有出现的词组合赋予一定的先验概率。例如加法平滑的计算公式为
p ( x t ∣ x ( t − N + 1 ) : ( t − 1 ) ) = m ( x ( t − N + 1 ) : t ) + δ m ( x ( t − N + 1 ) : ( t − 1 ) ) + δ ∣ V ∣ p\left(x_{t} \mid \boldsymbol{x}_{(t-N+1):(t-1)}\right)=\frac{\mathrm{m}\left(\boldsymbol{x}_{(t-N+1): t}\right)+\delta}{\mathrm{m}\left(\boldsymbol{x}_{(t-N+1):(t-1)}\right)+\delta|\mathcal{V}|} p(xt∣x(t−N+1):(t−1))=m(x(t−N+1):(t−1))+δ∣V∣m(x(t−N+1):t)+δ
其中 δ ∈ ( 0 , 1 ] \delta \in (0,1] δ∈(0,1]为常数。当 δ = 1 \delta = 1 δ=1时,称为加1平滑 -
除了加法平滑,还有Good-Turing平滑、Kneser-Ney平滑等