【ML】从HMM到CRF,我学到了什么?

目录

 

可以略过的前言

 

朴素贝叶斯

条件随机场

最大熵马尔可夫模型

条件随机场

 

参考


可以略过的前言

以前总结HMM与CRF的区别是什么,只是记住了HMM是生成模型,CRF是条件概率分布模型,深一点的,HMM针对于p(x,y)建模,而CRF是针对于p(y|x)建模,至于他们的原理是什么,他们到底在干什么,根本没有弄明白。

希望能借此文,做一些总结和学习,让自己有所提高。若有大佬路过,请多指教!

最近有了一些新的感悟。源于一句话:“凡你能说的,你说清楚;凡你不能说清楚的,留给沉默。”(维特根斯坦,Tractatus)。

本文大量引用了李宏毅老师的教学内容,特此声明。

概率模型

概率模型提供了一种描述框架,将学习任务归结于计算变量的概率分布。在概率模型中,利用已知变量推测未知变量的分布称为“推断”,其核心是如何基于可观测变量推测未知变量的条件分布。

概率图模型是一类用图来表达变量相关关系的概率模型。概率图模型可大致分为两类:

  • 使用有向无环图表示变量间的依赖关系,称为有向图模型贝叶斯网
  • 使用无向图表示变量间的相关关系,称为无向图模型马尔可夫网

 

朴素贝叶斯

朴素贝叶斯是一个分类模型

朴素贝叶斯基于一个假设:条件独立性假设。这个假设在说,在类别确定的条件下,用于分类的特征是条件独立的。

于是我们可以看到:

\begin{align*} &P(X=x|y=C_k) = P(X^{(1)}=x^{(1)},...,X^{(n)}=x^{(n)}|Y=C_k) \\ & =\prod_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=C_k) \end{align*}

【ML】从HMM到CRF,我学到了什么?_第1张图片

 

马尔可夫模型

HMM是可用于序列标注(Sequence Labeling)的统计学习模型,是一种结构比较简单的动态贝叶斯网络结构。他描述了由隐藏的状态链生成观测序列的过程,属于生成模型。

场景换到序列标注上来,我们看HMM。序列标注情形如下:(图引自http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML16.html)

【ML】从HMM到CRF,我学到了什么?_第2张图片

在此场景下,HMM是一个建模输入序列到输出序列的模型: X\rightarrow Y

【ML】从HMM到CRF,我学到了什么?_第3张图片

隐马尔科夫模型由初始状态概率向量\pi、状态转移矩阵A、和观测概率矩阵(发射矩阵)B决定。用三元符号公式表示:\begin{center} \lambda = (A,B,\pi) \end{center}

转移矩阵A中的元素a_{ij} = P(i_{t+1} = y_j | i_{t} = y_i),i = 1,2,...,N;j=1,2,...,N,显然在上面的序列标注例子中,转移矩阵是这样的一个方阵,大小为(N,N),N表示当前有多少种标注的可能。每一行代表了时刻t标注为y_i 的状态在t+1时刻(即下一个词)标注为其他的词y_j,j =1,2,...,N 的可能性。

观测概率矩阵B中的元素:b_{jk} = P(x_k|y_j),k=1,2,...,M;j=1,2,...,N;本例中,发射矩阵是一个N*M的矩阵,表示时刻t处于状态y_j 的条件下生成x_k的概率。

 

李宏毅老师讲解HMM的例子:

假设我们说出一个句子的过程是这样的:第一步:现在脑海中形成语法链。第二步:根据词汇量匹配语法链。

【ML】从HMM到CRF,我学到了什么?_第4张图片

假设脑中语法知识图是如下形式,我们发现,这个图对应的就是状态转移概率矩阵A,体现的是不同时刻,状态互相转移的概率。自然的,从这个转移矩阵中,我们可以得到一条马尔可夫链(PN->V->D->N)的概率。可以看到,这个"不可观测"的状态序列(PN->V->D->N)的生成是由初始状态概率向量[0.5,0.4,0.1,0,0] 和转移矩阵A共同确定的。

【ML】从HMM到CRF,我学到了什么?_第5张图片

下图表示在状态序列(PN->V->D->N)下生成一句话。即在给定词典中,根据当前时刻的状态,应该选择哪个词汇。从图中我们看到,每一个罐子里面装的是状态序列中某个tag对应的词汇,比如 “PN” 就有['Tom','Jhon','Mary','Alice','Jerry'] 对应,从中选中“John” 的概率为1/2.

这个图对应的实际上就是观测概率矩阵(发射矩阵)B,B_{jk} 表示时刻t处于状态y_j 的条件下生成x_k的概率。

【ML】从HMM到CRF,我学到了什么?_第6张图片

 

此时的发射矩阵,应该是这样子:
 

  saw John   Mary
PN   0   0.2     0.2  
                 
N   0.17            
                 
               

那么这个例子中,HMM描述了由状态序列(PN,V,D,N)生成观察序列(John,saw,the,saw)的概率为0.2*0.17*0.63*.17。

那么HMM描述整个序列标注情况的方式可以抽象如下:

【ML】从HMM到CRF,我学到了什么?_第7张图片

更一般的,上图中P(y) 我们可以写成 P(y_1)\prod^n_{i=2}P(y_i|y_{i-1})。于是我们得到HMM中所有变量的联合概率分布为:

P(x_1,y_1,\cdots,x_n,y_n)=P(y_1)\prod^n_{i=2}P(y_i|y_{i-1})P(x_i|y_i)

P(y_i|y_{i-1}) 和 P(x_i|y_i) 都很容易从训练数据中求得。

 

总结:

HMM基于两个假设:

1、观测独立性假设,即任意时刻的观测变量只依赖于此时刻的马尔可夫链状态,与其他观测及状态无关。通俗一点说,t时刻,观测变量x_j只与此时的y_j有关。

2、齐次马尔科夫假设,即假设隐藏的马尔可夫链在任意时刻t的状态只依赖于前一时刻的状态,与其他时刻的状态无关。

比如我t时刻的隐状态 假设是图示的PN \rightarrow V \rightarrow D\rightarrow N 他只与前一个时刻假设是(PN \rightarrow D \rightarrow V\rightarrow S)有关。

这种性质决定了HMM中所有变量的联合概率分布为:

P(x_1,y_1,\cdots,x_n,y_n)=P(y_1)\prod^n_{i=2}P(y_i|y_{i-1})P(x_i|y_i)

一个标准的HMM需要解决三个基本问题:

  1. 评估问题,也被称为识别问题。给定模型 \lambda 和观测序列O,计算每个HMM模型产生当前观测序列的输出概率 P(O|\lambda),通过对比各个模型输出概率,概率最大的模型即为识别结果。(前面所述的整个过程。)
  2. 解码问题。给定模型 \lambda和观测序列O,寻找最有可能产生观察序列O的隐含状态序列的过程,即寻找最佳状态序列Q^*=q_1^*q_2^*...q_T^*最好地解释观测序列O。(后面给出解释。)
  3. 学习问题。已知观测序列O,估计模型 (A,B,\pi)参数,使得 P(O|\lambda)最大。(从训练数据中统计即可。)
  4.  

对于第2点,我们同样可以借助序列标注任务来理解。假设我们现在知道了某一个观察序列x,为['Jhon','saw','the','saw'],怎么找到对应的状态序列y呢? 即如何求:\\y = arg\max_{y\in Y} P(y|x)。因为:\\y = arg\max_{y\in Y} \frac{P(x,y)}{P(x)} 而x是给定的,那么我们转化为求:\\y =arg\max_{y\in Y} P(x,y),而P(x,y) 的求法我们已经明确了。

这意味着,原则上,我们只需要将每一个可能的状态序列带入P(x,y)  即带入P(x_1,y_1,\cdots,x_n,y_n)=P(y_1)\prod^n_{i=2}P(y_i|y_{i-1})P(x_i|y_i),看哪一个序列(y_1,\cdots,y_n) 能使得 P(x,y) 最大。

所以HMM是利用状态转移概率和发射概率计算最优解答,这是一个生成模型。

当然穷举是不可能穷举的,试想假设我们有|S| 个可能的状态,而状态序列的长度为 L., 那么我们显然有|S|^L 个可能的序列y. 我们需要Viterbi 算法,一个可以降低复杂度至O(L|S|^2) 的算法。

 

HMM的不足

预测状态序列的时候,我们做inference时,需要在最优序列\hat{y} 输入时,得到的P(x,\hat{y}) 一定大于其他序列y 对应的P(x,y)。但是实际情况可能不是如此。

如图,比如我们的训练数据中,t-1 到t 时刻的 N->V 的状态序列,产生了t时刻观察状态 c ,这个情况在train data 中出现了9次,将之表示为[N->V=>c] * 9,另外还有[P->V=>a] * 9, [N->D=>a] * 1,那么 当我们已知y_{i-1} = N,x_i = a 时,y_i 最有可能是谁呢?

【ML】从HMM到CRF,我学到了什么?_第8张图片

按照HMM的算法,最优的y_i 是V,但这显然与已有的训练数据 [N->D=>a] 相悖。我们看到没有在训练集出现的(x,y)也有可能产生非常大的概率。产生这种现象是因为HMM中转移(transition probability) 和 发射(Emission probability)是分开建模的。

另外HMM只依赖于每一个状态和它对应的观察对象但是序列标注问题不仅和单个词相关,而且和观察序列的长度,单词的上下文,等等相关。

 

最大熵马尔可夫模型

MEMM是一种判别式有向图模型。相较于HMM由隐藏状态产生输入(观测),MEMM基于输入(观测)产生隐藏状态(condition on observations)。相比于HMM,MEMM更直观,因为目标是预测出隐藏状态,而不是基于隐藏状态来预测观测。

他打破了HMM的观测独立性假设,直接对条件概率建模,用 P(y_i|y_{i-1}, x_i)来代替HMM中的两个条件概率P(y_i|y_{i-1})P(x_i|y_i),它表示在先前状态 y_{i-1} ,观测值 x_i 下得到当前状态 y_i 的概率,即根据前一状态和当前观测。预测当前状态。可以在长距离上得到features。

【ML】从HMM到CRF,我学到了什么?_第9张图片

相比与HMM,MEMM的y_i依旧前一时刻的y_{i-1}有关。但他考虑了(x_i,y_{i-1}) 的共同作用。

具体建模公式如下:

P(y|x)=P(y_1)\prod^n_{i=2}P(y_i|y_{i-1},x_i)

P_{y_{i-1}}(y_i|x_{i})=\frac{1}{Z(x_{i},y_{i-1})}\sum_a^m(\lambda_af_a(x_{i},y_i))

每个这样的分布函数 P_{y_{i-1}}(y_i|x_i)都是一个服从最大熵的指数模型。

这个指数模型让MEMM在 每个状态 (y_{i-1},x_i,y_i) 都做了局部归一化,因而可能会产生标注偏置的问题。

举两个例子:

【ML】从HMM到CRF,我学到了什么?_第10张图片

 

如图所示,“因为”原本应该是介词词性p,而 MEMM却错误标注其词性为连词c。产生该情况的原因正是一种偏置问题。

原因:“是”存在两个词性,动词v和代词r,包含在状态集合S1中;“因为”包括两个词性,介词p与连词c,包含在状态集合S2中;“事”只有一个词性,名词n,包含在状态集合S3中。由于MEMM对每个状态均定义一个指数模型,因此有:P(n|p)=1, P(n|c)=1, P(p|S1)+P(c|S1)=1; 基于马尔科夫假设,P(S1, p, n)=P(p|S1)*P(n|p)=P(p|S1), 同理,P(S1, c, n)=P(c|S1)*P(n|c)=P(c|S1)。因此S2选择p节点还是c节点只取决于P(p|S1)、P(c|S1),即只与“是”的上下文有关,与“因为”的上下文无关,这即使MEMM产生偏置的一种情况。引自《基于条件随机域的词性标注模型》

 

条件随机场

x=\{x_1,x_2,\cdots,x_n\} 为观测序列,y=\{y_1,y_2,\cdots,y_n\}为对应的标记序列,则条件随机场的目标是对P(y|x) 建模。通常情况下我们讨论的都是链式条件随机场(CRF)。

【ML】从HMM到CRF,我学到了什么?_第11张图片

p(Y|X)为线性条件随机场,则在随机变量X取值为x 的条件下,随机变量Y取值为y的条件概率具有如下形式:

P(y|x)=\frac{1}{Z(x)}exp(\sum_{i,k}\lambda_kt_k(y_{i-1},y_i,x,i)+\sum_{i,l}u_is_l(y_i,x,i))

其中,Z(x)=\sum_{y}exp(\sum_{i,k}\lambda_kt_k(y_{i-1},y_i,x,i)+\sum_{i,l}u_is_l(y_i,x,i))

t_k,s_l是特征函数,\lambda_k,u_l是权重。

可以看到,相较于MEMM,CRF是无向图模型,全局性的归一化(最大团上的归一化)比于MEMM的局部归一化更优,因而解决了MEMM存在的标注偏置问题。

【ML】从HMM到CRF,我学到了什么?_第12张图片

 

同时CRF的特征函数定义非常灵活,可以自定义。CRF中的发射概率和HMM的不一样,是p(y|x),(HMM中是p(x|y)).CRF中整个隐藏序列y依赖于整个观察序列x

同样跟着李宏毅老师理解CRF,认识CRF的目标函数:

CRF假设观测序列x和状态序列y 的概率满足 :P(x,y) \propto exp(w \cdot \phi (x,y)),w 将从训练数据中学习得到。

根据联合概率与边缘概率分布之间的关系,我们有P(y|x) = \frac {P(x,y)}{\sum_{​{y}'}P(x,{y}')},而P(x,y) = \frac{exp(w \cdot \phi (x,y))}{R},那么:

 

\\P(y|x) = \frac{exp(w \cdot \phi (x,y))}{\sum_{​{y}'\in \mathbb{Y}}exp(w \cdot \phi (x,{y}'))}= \frac{exp(w \cdot \phi (x,y))}{Z(x)}。这样,我们就建立了conditional model。{\color{DarkRed} {Z(x)}} 就是全局规范化因子。

 

 

 

为什么:P(x,y) \propto exp(w \cdot \phi (x,y))?他与HMM的函数有多少区别?

 

我们看HMM的函数:

P(x,y)=P(y_1)\prod^n_{i=2}P(y_i|y_{i-1})P(x_i|y_i)

取log:

logP(x,y)=logP(y_1)+{\color{Orange} \sum^n_{i=2}logP(y_i|y_{i-1})} + {\color{Red} \sum^n_{i=2}logP(x_i|y_i)}

在序列标注中,可以有如下的等价关系:

{\color{Red} \sum^n_{i=2}logP(x_i|y_i) }= \sum_{s,t}{\color{Blue} logP(t|s)} \times {\color{Magenta} N_{s,t}(x,y)}

【ML】从HMM到CRF,我学到了什么?_第13张图片

 

为什么可以这样子转换,可以看下图的示例:

【ML】从HMM到CRF,我学到了什么?_第14张图片

 

同理:

{\color{Orange} \sum^n_{i=2}logP(y_i|y_{i-1})} = \sum_{s,{s}'}{\color{Blue} logP({s}'|s)} \times {\color{Magenta} N_{s,{s}'}(x,y)}

那么:

logP(x,y)=logP(y_1)+{\color{Orange} \sum^n_{i=2}logP(y_i|y_{i-1})} + {\color{Red} \sum^n_{i=2}logP(x_i|y_i)}\\= \sum_{s,t}{\color{Blue} logP(t|s)} \times {\color{Magenta} N_{s,t}(x,y)}\\+\sum_{s,{s}'}{\color{Blue} logP({s}'|s)} \times {\color{Magenta} N_{s,{s}'}(x,y)}\\= {\color{Blue} \begin{bmatrix} ... \\ logP(t|s) \\ ... \\ logP({s}'|s) \\ ... \end{bmatrix} }\cdot {\color{Magenta} \begin{bmatrix} ... \\ N_{s,t}(x,y) \\ ... \\ N_{s,{s}'}(x,y) \\ ... \end{bmatrix}}\\={\color{Blue} w} \cdot {\color{Magenta} \phi(x,y)}

所以:P(x,y) \propto exp(w \cdot \phi (x,y))

 

这里直接引用李宏毅老师的课件转述特征函数的一个计算示例:

【ML】从HMM到CRF,我学到了什么?_第15张图片

【ML】从HMM到CRF,我学到了什么?_第16张图片

【ML】从HMM到CRF,我学到了什么?_第17张图片

 |S|*|S|+2|S|是因为有start 和 end tag。

关于参数的训练:

【ML】从HMM到CRF,我学到了什么?_第18张图片

 

 CRF比HMM更进一步的,在基于统计的基础上,CRF会调整参数W的值,使之更能fit 数据。

【ML】从HMM到CRF,我学到了什么?_第19张图片

 

【ML】从HMM到CRF,我学到了什么?_第20张图片

 

关于bilstmCRF在做序列标注,尤其是NER时,对于CRF的描述,知乎上的回答很中肯:


简单说就是条件随机场可以把label的上下文学出来。lstm加softmax分类的时候只能把特征的上下文关系学出来,label的没学出来。

作者:火华

我理解B-LSTM+CRF模型,所谓在LSTM上面套CRF其实是不严谨的说法,假如这样说,那实际上是两层sequence model了吗。我认为其实是说把LSTM和CRF融合起来。比如LSTM的产出只有发射概率,尽管这个发射概率考虑到了上下文,因为LSTM有门机制,可以记忆或者遗忘前面内容,然后双向,有前有后这样,但是毕竟没有转移概率,像CRF HMM这种,都是结合发射概率和转移概率的。比如在词性标注,最简单BIO这样,有显而易见的规则,就是B-X后面不会有I-Y。所以干脆搞出B-LSTM+CRF,结合发射概率和转移概率这样。实际上后面接的CRF并不是真的CRF,比如它又没有特征模板,它又不接受离散特征,他只是一次Viterbi推导而已。

作者:uuisafresh
链接:https://www.zhihu.com/question/62399257/answer/206903718


 

参考

  • 《机器学习》 周志华
  • 《统计学习方法》李航
  • HMM MEMM CRF 区别 联系
  • hmm-memm-crf
  • 【NLP】命名实体识别(NER)的BiLSTM-CRF模型

  • 李宏毅sequence labeling

 

你可能感兴趣的:(机器学习)