概率图模型

本文主要介绍HMM和CRF两种模型。

一、HMM模型
我们以序列标注为例来引入HMM模型。
我们怎么产生一个句子,方法可以是先根据语法产生一个词性序列,然后由每个词性产生一个词(借助词典,这个词典是词性到词的映射,一个词性对应多个词)。如下示意图
这里写图片描述
这里我们就有了词序列和词性序列的pair
这里写图片描述
给一个词序列,那么产生该词序列的词性序列是什么呢?
这里写图片描述
上面的计算用到了贝叶斯条件概率公式。忽略分母 P ( x ) ,问题就转化为求联合概率P(x,y)上了,我们要找的词性序列y就是使得P(x,y)最大的那个y。
那么P(x,y)怎么算呢?
这里写图片描述
上式是建立在马尔可夫假设基础之上,即 1) t 时刻的tag只收前一时刻 t 1 时刻的tag影响;2) t 时刻的发射概率只受 t 时刻的tag影响。
上面的所有概率,比如 P ( y i + 1 | y i ) P ( x i | y i ) 都是从训练数据中直接统计得到。
我们要找 y ~ ,使得
这里写图片描述
在计算的时候你可以穷举出所有可能的y,然后计算每个P(x|y),但是这样的y有可能非常的多,穷举的计算开销太大,这种方法失效,取而代之的是Viterbi Algorithm,该算法专门用来解决给定观测序列,求最有可能的隐藏序列的问题。

HMM存在的问题
HMM有“脑补问题“,HMM可能会给在training data中没见过的序列以很高的概率,参见下面的例子
我们假设transition probability和emission probability为
这里写图片描述
来做一个填空题
这里写图片描述
通过概率来算的话应该是V,但是在training data却有一个D的数据。这就是HMM的脑补现象。
HMM的脑补现象有时候是好事,比如你的训练数据很少。
HMM为什么会有这种脑补能力呢?是因为HMM的transition probability和emission probability是相互独立的。为了解决这个问题,你可以用更复杂的模型,使transition probability和emission probability是dependent的,但这些方法比较复杂,下面将要介绍的CRF,虽然transition probability和emission probability也是相互独立的,但却可以解决问题。

二、CRF
1.CRF引入
如果说HMM是作用在序列上的朴素贝叶斯,那么CRF就是逻辑回归
—— John Lafferty
CRF和逻辑回归是什么关系?
逻辑回归表达式如下,
这里写图片描述
下图是一个CRF中的概率问题
这里写图片描述
可见二者的形式较为接近。

2.CRF模型参数、训练
我们假设联合概率 P ( x , y ) 满足 P ( x , y ) e x p ( w ϕ ( x , y ) )
其中 ϕ ( x , y ) 是一个feature vector, w 是一个weight vector, w 是需要从训练数据中学习的参数。
这里写图片描述
咋一看,你可能会觉得CRF和HMM根本不一样,但其实二者很像
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
从这里我们可以知道, ϕ ( x , y ) 就是 N s , t ( x , y ) N s , s ( x , y ) 这些,而 w 其实就是 l o g P ( t | s ) l o g P ( s | s )
在CRF模型中, w 是作为参数,在训练的过程中进行优化的,这一点与HMM不同,HMM的 l o g P ( t | s ) l o g P ( s | s ) 是直接从训练数据中统计得到,不需要优化。

CRF是怎么训练的呢?(HMM是没有训练过程的)
这里写图片描述
从上面的CRF的训练目标中我们可以也可以从中看出其与HMM的区别。HMM模型,我们找到使得 P ( y | x ) 最大的y,我们只考虑 P ( x , y ) ,而忽略条件概率的分母 P ( x ) ;而在CRF中,我并不忽略 P ( x ) ,我们的优化目标除了使得 P ( x , y ) 很大之外还要使得 P ( x ) 越小越好。
有了优化目标我们可以使用SGD来进行优化。
这里写图片描述
那我们来计算 O n ( w ) w s , t
O n ( w ) = l o g P ( y ^ n | x n ) = l o g P ( y ^ n , x n ) l o g y P ( y , x n ) ,我们先计算 l o g P ( y ^ n , x n ) w s , t ,后半部分的计算同理可得。
l o g P ( y ^ n , x n ) w s , t = l o g ( e x p ( w ϕ ( x n , y ^ n ) ) ) w s , t = ( w ϕ ( x n , y ^ n ) ) w s , t = ( w s , t N s , t ( x n , y ^ n ) ) w s , t = N s , t ( x n , y ^ n )
后半部分的计算按照同样的原理算完之后得到
这里写图片描述
怎么理解上式?如果(s,t)在训练数据 ( x n , y ^ n ) 出现,则增加 w s , t ,否则减小 w s , t
对于后半部分的 y P ( y | x n ) N s , t ( x n , y ) ,李宏毅老师说可以通过
Viterbi algorithm进行计算,暂时没理解是怎么算的。
所以参数的迭代过程如下
这里写图片描述

CRF的inference和HMM相同,也是用的Viterbi Algorithm

三、CRF的一般化:从log-linear model到MEMMs、CRFs
1.log-linear model
x X 是输入数据(例如word), y Y 是label(比如名词、动词、介词),我们用 p ( y | x ) 来表示条件概率。我们定义一个feature vector ϕ _ : X × Y R d ,我们还定义一个参数向量 w _ R d 。基于这些定义,我们有log-linear model
这里写图片描述
这公式看着很陌生,其实如果 w _ = [ 1 , 1 ] ,而 ϕ _ ( x , y ) = [ l o g P ( y ) , l o g P ( x | y ) ] T ,就变成了HMM~~
而在log-linear模型中, w _ 待估算的参数,而 ϕ _ ( x , y ) 可以是任意的形式。
模型的目标函数是log-likelihood 函数,
这里写图片描述
而最优的参数 w _ 满足
这里写图片描述
那怎么找到最优的 w _ 呢?
先把 w _ 初始化为0向量,然后执行梯度上升
这里写图片描述
其中的梯度计算
这里写图片描述
形式上是和第二部分的梯度计算结果高度相似的。

2.MEMMs
maximum-entropy Markov models,即最大熵马尔可夫模型,它是以log-linear模型为基础。
x 1 , x 2 , . . . , x m 是输入序列, s 1 , s 2 , . . . , s m 是状态序列,
我们对条件分布 p ( s 1 , s 2 , . . . , s m | x 1 , x 2 , . . . , x m ) 建模,对该分布进行分解
这里写图片描述
上面的(1)式是没问题的,在naive-bayes就曾见过类似的分解。
做一个微小的验证,(1)式的右边= p ( s m | s 1 , . . . , s m 1 , x 1 , . . . , x m ) p ( s m 1 | s 1 , . . . , s m 2 , x 1 , . . . , x m ) . . . p ( s 2 | s 1 , x 1 , . . . , x m ) p ( s 1 | x 1 , . . . , x m ) = p ( s 1 , s 2 , . . . , s m | x 1 , x 2 , . . . , x m )
(2)式是加入了independence assumption,就像HMM那样,第 i 个位置的state只和 i 1 位置的state有关。
基于上面的假设,我们有在每个位置 i 上的条件概率
这里写图片描述
可以看到在位置 i 处,分母中的feature vector ϕ _ ( x 1 , . . . , x m , i , s i 1 , s i ) 和输入序列 x 1 , x 2 , . . . , x m 、位置 i s i 1 s i 四个元素有关。 ϕ _ 可以根据实际需要去定义,比如如果你认为 s i 1 s i 不会都为动词,那么你可以给 ϕ _ ( x 1 , . . . , x m , i , s i 1 , s i ) 赋予一个很小的值,例如-10000。

MEMMs的decoding
与HMM类似,我们定义前向变量 π [ j , s ] ,它表示时刻 j 到达状态 s 的最大概率
这里写图片描述
也就是

max s 1 . . . s j 1 p ( s , s j 1 , . . . , s 1 | x 1 , . . . , x m )

π [ j , s ] 的递推式为
这里写图片描述
所以如果把 p ( s | s , x 1 , . . . , x m )
终止处的判断也类似与HMM
这里写图片描述

3.CRFs
与MEMMs一样,我们对条件概率 p ( s 1 . . . s m | x 1 . . . x m ) = p ( s _ | x _ ) 建模
我们也定义feature vector Φ _ ( x _ , s _ ) R d ,然后我们就有关于条件概率的计算
p ( s _ | x _ ; w _ ) = e x p ( w _ Φ _ ( x _ , s _ ) ) s _ e x p ( w _ Φ _ ( x _ , s _ ) )
这里的 Φ _ 称为global feature vector(对比下下面的local feature vector),因为它扫描了整个序列 x _ s _ 。那么怎么定义 Φ _ 呢?
Φ _ ( x _ , s _ ) = j = 1 m ϕ _ ( x _ , j , s j 1 , s j )
这里的 ϕ _ 只是feature vector的一维,共有 d 维,
for k = 1 , 2 , . . . , d ,第 k 个feature vector的定义为
Φ k ( x _ , s _ ) = j = 1 m ϕ k ( x _ , j , s j 1 , s j )
这里的 Φ k 称为local feature vector。

CRFs的decoding
我们的目标是找到最优的序列 s _ ,使得
这里写图片描述
继续推导
这里写图片描述
这里写图片描述
所以我们的目标就转换为寻找 s _ ,使得
这里写图片描述
成分 w _ ϕ _ ( x _ , j , s j 1 , s j ) 可以为一种transition score,如果 s j 1 s j 的转换是合理的,相应地 w _ ϕ _ ( x _ , j , s j 1 , s j ) 值会比较大,反之 w _ ϕ _ ( x _ , j , s j 1 , s j ) 值会比较小。
与HMM、MEMMs类似,我们用viterb算法进行CRFs的decoding。
初始化 π [ 1 , s ] = w _ ϕ _ ( x _ , 1 , s 0 , s ) ,递推方法为
这里写图片描述
终止处
这里写图片描述

CRFs的参数估计
带正则的目标函数
这里写图片描述
我们要找到能够最大化目标函数的参数向量 w
这里写图片描述
用梯度上升方法进行优化,梯度的计算为
这里写图片描述
右边第一项很好算,第二项难算,用到动态规划。

四、总结
HMM是生成模型,而MEMMs和CRFs是判别模型
这里写图片描述

五、概率图模型的应用
1.jieba分词
原理是HMM

2.CRF++
CRF++是CRF算法实现效果最好的工具,他可以用来做序列标注、实体识别、分词等任务。
CRF++的训练数据是如下
这里写图片描述
这个数据有三列,第一列是词语,第二列是词性(不是必须的),第三列是标注,也是我们要预测的标签。
CRF++最重要的一块内容就是特征模版,特征模版中包含了用户自己定义的若干特征,特征主要包含两大类,即Unigram和Bigram。
如下是一组Unigram的例子
U00:%x[-2,0]
U01:%x[-1,0]
U02:%x[0,0]
U03:%x[1,0]
U04:%x[2,0]
U05:%x[-1,0]/%x[0,0]
U06:%x[0,0]/%x[1,0]
U07:%x[-1,0]/%x[1,0]
U08:%x[0,1]
U09:%x[-1,1]/%x[0,1]
上面每一个元素称为一个特征模版?每一个特征模版都要去扫描整个句子,在句子的每一个位置,该特征模版都生成一个特征函数集合。
举例来说,我们假设有这样一个模版U10:%x[0,1]这个特征模版,它代表的是0行,1列的元素。这里的0行是相对概念(就是特征模版所扫描到的当前位置),1列是绝对位置,就是指的第2列。这个特征模版的含有是根据词语的词性去预测词语的标签。
我们假设当前输入的训练数据(一个句子)为
这里写图片描述
当我们扫描到句子的第一行时,我们生成如下一批特征函数
这里写图片描述
这些函数共有多少个?记第三列的标签共有 L 个,该模版关注的输入数据(也就是第二列)去重后数据共有 N 个,那么该特征模版在第一行会产生 L N 个数值(0或1),
所以这个特征模版在整个句子上生成一个“特征矩阵“(里面的数字是我随便填的~)
这里写图片描述
上面只是一个特征模版的例子,那么你可以定义其他模版,比如你除了用第二列的词性预测标注外,你还需要第一列,即词汇本身,所以你还可以设计这样一个特征模版
UXX:%x[0,0],它会利用数据的第一列去生成特征。
再比如你可以设计特征模版UXX:%x[-1,1],它会关注上一个词的词性。
大部分情况下Unigram已经够了,而且生成的特征函数已经够多了。简单介绍一下Bigram,比如你建了一个B01:%x[0,1],它是要考虑当前行的标枪以及上一行的标签,生成如下特征函数
这里写图片描述

参考资料:
Log-Linear Models, MEMMs, and CRFs

Log-linear models and conditional random fields

conditional random fields:probability models for segmenting and labeling sequence data

https://www.jianshu.com/p/55755fc649b1

https://www.quora.com/What-are-the-pros-and-cons-of-these-three-sequence-models-MaxEnt-Markov-Model-Conditional-random-fields-and-recurrent-neural-networks#GQGcN

猜你喜欢

转载自blog.csdn.net/u010859324/article/details/80979118