用Pre-trained Model 来计算一句话符合语法的概率
一、联合概率链(Chain Rule)
朴素贝叶斯中使用的独立性假设为
P ( x 1 , x 2 , x 3 , . . . , x n ) = P ( x 1 ) P ( x 2 ) P ( x 3 ) . . . P ( x n ) (1) P(x_1,x_2,x_3,...,x_n)=P(x_1)P(x_2)P(x_3)...P(x_n) \tag{1} P(x1,x2,x3,...,xn)=P(x1)P(x2)P(x3)...P(xn)(1)
去掉独立性假设,有下面这个恒等式,即联合概率链规则
P ( x 1 , x 2 , x 3 , . . . , x n ) = P ( x 1 ) P ( x 2 ∣ x 1 ) P ( x 3 ∣ x 1 , x 2 ) . . . P ( x n ∣ x 1 , x 2 , . . . , x n − 1 ) (2) P(x_1,x_2,x_3,...,x_n)=P(x_1)P(x_2|x_1)P(x_3|x_1,x_2)...P(x_n|x_1,x_2,...,x_{n-1}) \tag{2} P(x1,x2,x3,...,xn)=P(x1)P(x2∣x1)P(x3∣x1,x2)...P(xn∣x1,x2,...,xn−1)(2)
其中, x i x_i xi代表一个词,联合概率链规则表示句子中每个词都跟前面一个词有关,而独立性假设则是忽略了一个句子中词与词之间的前后关系。
语言模型已经训练并计算好了 p(今天)、p(今天)、p(是|今天)、p(春节|今天,是)、p(我们|今天,是,春节)、p(都|今天,是,春节,我们)、p(休息|今天,是,春节,我们,都) 这些概率的值,利用这些已经训练并计算好的概率值来计算输入到语言模型中的一句话是否符合语法的概率值。
利用联合概率直接计算一句话符合语法的概率的缺点:很多句子太长了,其概率基本为0,比如:p(休息|今天,是,春节,我们,都) = 0
二、 马尔可夫性
马尔可夫性:当一个随机过程在给定当前状态及所有过去状态情况下,其未来状态的条件概率分布仅依赖于当前状态;换句话说,在给定现在状态时,它与过去状态(即该过程的历史路径)是条件独立的,那么此随机过程即具有马尔可夫性质。具有马尔可夫性质的随机过程通常称之为马尔可夫过程。
三、马尔科夫假设(Markov Assumpton)
联合概率链规则是考虑了句子中每个词之间的前后关系,即第k个词 x k x_k xk与前面 k−1个词 x 1 , x 2 , . . , x k − 1 x_1,x_2,..,x_{k−1} x1,x2,..,xk−1 都有关,而马尔科夫假设则是考虑了 n n n 个词语之间的前后关系,比如 n = 2 n=2 n=2 时(2nd Order),第n个词 x n x_n xn 与前面 2 − 1 = 1 2−1=1 2−1=1 个词有关,即:
P ( x 1 , x 2 , x 3 , . . . , x n ) = P ( x 1 ) P ( x 2 ∣ x 1 ) P ( x 3 ∣ x 2 ) . . . P ( x n ∣ x n − 1 ) (3) P(x_1,x_2,x_3,...,x_n)=P(x_1)P(x_2|x_1)P(x_3|x_2)...P(x_n|x_{n-1}) \tag{3} P(x1,x2,x3,...,xn)=P(x1)P(x2∣x1)P(x3∣x2)...P(xn∣xn−1)(3)
比如 n = 3 n=3 n=3 时(3rd Order),第 n n n 个词 x n x_n xn 与前面 3 − 1 = 2 3−1=2 3−1=2 个词有关,即:
P ( x 1 , x 2 , x 3 , . . . , x n ) = P ( x 1 ) P ( x 2 ∣ x 1 ) P ( x 3 ∣ x 1 , x 2 ) . . . P ( x n ∣ x n − 2 , x n − 1 ) (4) P(x_1,x_2,x_3,...,x_n)=P(x_1)P(x_2|x_1)P(x_3|x_1,x_2)...P(x_n|x_{n-2},x_{n-1}) \tag{4} P(x1,x2,x3,...,xn)=P(x1)P(x2∣x1)P(x3∣x1,x2)...P(xn∣xn−2,xn−1)(4)
公式(3)(4)即马尔科夫假设(Markov Assumption):即下一个词的出现仅依赖于它前面的一个或几个词。
四、N-gram语言模型
如果对向量 X 采用条件独立假设,就是朴素贝叶斯方法。
如果对向量 X 采用马尔科夫假设,就是N-gram语言模型。
- Bigram 在 所有N-gram中使用最多
- N一般不超过5
1、Unigram(1-gram):基于朴素贝叶斯假设
假设所有单词都是独立的个体
2、Bigram(2-gram):基于 2nd Order 马尔科夫假设
假设所有单词只与前一个单词有关。
3、Trigram(3-gram):基于 2nd Order 马尔科夫假设
假设所有单词只与前2个单词有关
五、语言模型的平滑方法
训练语料库里没有出现的单词有可能在测试集里出现
零概率问题,就是在计算实例的概率时,如果某个量x,在训练集中没有出现过,会导致整个实例的概率结果是0。在语言模型的问题中,当一个词语没有在训练样本中出现,该词语调概率为0,使用连乘计算文本出现概率时也为0。这是不合理的,不能因为一个事件没有观察到就武断的认为该事件的概率是0。
1、Add-One Smoothing(拉普拉斯平滑,Laplace Smoothing)
该方法在朴素贝叶斯里用的比较多
分母上使用V而不是其他的任意值,是为了让所有概率相加后等于1。
2、Add-K Smoothing
如何选择 k k k 值:可以通过枚举法尝试哪个 k k k 值时最优的;或者通过语言模型在测试集上的优化来得到最优的 k k k 值
3、Interpolation
4、Good-Turning Smoothing
该方法在语言模型里用的比较多
Good-Turning Smoothing 方法的缺点:有些频次的单词数量为0
解决方法:通过机器学习的方法拟合出一条曲线,把缺失值填补上。
六、语言模型的评估:Perplexity(困惑度)
向待评估的模型A、B、C分别喂入一句话,计算各个模型的Perplexity,Perplexity越小的模型效果越好
N-gram中的N越大,语言模型的Perplexity越小,但是该语言模型也越容易过拟合
七、利用语言模型生成句子
1、Unigram Model
不能考虑句子的可读性
2、Unigram Model
可以考虑句子的可读性