目录
前言
原理
1. Markov链简述
2.generative model: HMM Pr(X,Y)
2.1 HMM 基础知识
2.2 词性标注问题
3.discriminative model: CRF
2.2 统计概率图基础知识
2.2 CRF与HMM
2.3 CRF基础知识
网上各种文章的起点都不一样,这篇综合了许多篇文章,基本零基础,包含了很多我个人的理解。我认为在研究问题的时候弄清楚有哪些是假设,哪些是事实性的是非常重要的,更利于我们跳出坑,明白我们模型的局限性,也能看到模型的广阔处女地。概率模型这边完全自学,看了一点PRML以后感觉稍微成点体系了,如有错误请指正。
预计阅读时间 100min
CRF是一个判别式模型。通常,判别式模型 discriminative model 计算条件概率,而生成式模型 generative model 计算联合概率分布。
系统对时间存在的状态转移是事实性存在的。马尔可夫模型中假设:事实性的状态转移概率独立于时间t。而离散的一阶马尔可夫链(马尔可夫过程)是依赖于假设:系统在t时刻的状态只与其在t-1状态有关。首先,这两个假设就与真实情况很不相符。比如常见的预测天气的例子,今日的降水量要考虑现在所处的时节,夏天的雨比较长,如果昨天下雨那么今天也下雨的可能性就比较大,冬天的雨一般只能下一天,如果昨天下雨今天很可能晴天降温了。
A) HMM是一个双重随机过程, 一则state sequence的转移是随机的,二则由state到observed的函数是随机的。当然,HMM遵循Markov的思想,认为这其中事实性存在的概率分布是不变的,不受t的影响。 HMM是一种特定的Bayes Net, 等价于一个概率正规语法,或者概率有限状态自动机,可以用NN模拟。
总结一下,HMM的三个假设:
1)Markov性假设:state sequence 是一阶马尔可夫链。
2)不动性假设:转移概率与时间无关。
3)输出独立性假设:某个observed是且仅是当前state的函数。
B) 对于observed和state都确定的情况下,HMM的参数lambda是:状态转移概率矩阵,观察值概率分布矩阵,初始状态概率分布。
HMM往往研究三个问题,记O,Q为observed 和state 序列:
1)评估问题: ——> 前向算法(动态规划) O(N*N*T)
2)解码问题:最可能的Q: ——>Viterbi(动态规划) O(N*N*T), 应用贪心思想的greedy search 和改良的beam search
3)学习问题(也称训练问题,参数估计问题):调整lambda,使O最大:; 学习问题往往需要大量的observed序列。如果状态序列已知,可以采用最大似然估计;EM算法,Baum-Welch算法 (详细可见reference(2))
C) 使用HMM需要考虑的问题:
1)初始状态概率分布:随机?先验?利用大量序列计算?
2)计算中连乘概率的溢出问题:前向算法每一步乘比例因子;Viterbi对概率取对数。
以词性标注问题为例,假设X是observed sequence, Y是state sequence;HMM能够计算出给定一个词和它可能的词性的联合概率分布。换句话说,HMM假设了两类特征,转移概率:前词词性与上一个词词性的关系;发射概率:以及当前词语和当前词性的关系。首先,无假设的条件概率公式按HMM的假设可变为:
词性标注问题就是一个HMM学习问题。两个参数矩阵为|Y|*|X|和|Y|*|Y|大小,得到参数后,再解码,就是词性标注结果。
首先,概率图模型(probability graph models)大概是这样的体系结构。
对于一张图G=(V,E),E表示状态间的依赖关系,V则表示随机变量,其概率分布为Pr(Y)。上图可以看到,贝叶斯网络(信念网络)都是有向的,马尔科夫网络无向。概率图模型就是想求Pr(Y)。贝叶斯网络适合为有单向依赖的数据建模,马尔科夫网络适合实体之间互相依赖的建模。说到这里好像就能看出NLP任务中使用HMM等bayesian网络模型的问题了。
有向图求Pr(Y)就是按照路径将条件概率相乘,类似HMM。
对于无向图,先将图分解成若干个最大团(clique),顶点可以共用。如图,分解为(X1,X3,X4),(X2,X3,X4)。
其中,psi是一个团上随机变量们的联合概率,一般取指数形式:
注意这里的Pr(Y), psi(Y)其实都是条件概率,图结构就是条件。则由Hammersley-Clifford law(证明参见reference (4)):
首先解释一下生成模型和判别模型的区别:
Discriminative model | Generative model | |
工作机制 | 对Pr(Y|X)建模。通过Y和features,学习出一个明显或者比较明显的边界,比如一个函数。推断时,用X代入函数,与边界比较。 | 研究出数据的联合分布Pr(X,Y),推断时,对于P(X)利用条件概率公式计算P(Y|X)。
|
特征 |
对所有的样本只构建一个模型,确认总体判别边界 优点是对数据量要求不大。 |
分类问题要对每个label建模,最终选择最优,所以没有判别边界。中间生成联合分布,并可生成采样数据,关注结果是如何产生的。但是需要非常充足的数据量以保证采样到了数据本来的面目,且速度相比之下更慢。 |
举例 | 神经网络模型、SVM、perceptron、LR、DT…… | Naive Bayesian、LDA…… |
HMM假设了两类特征,一是当前词词性与上一个词词性的关系,以及当前词语和当前词性的关系,分别对应着转移概率和发射概率。CRF没有做上述的假设,而使用feature function来更抽象地表达特征。CRF 有linear和general两种,如下图。
由概率无向图,x,y是序列,y的所有可能取值构成空间Y,linear CRF的条件概率:
对于特征函数,可以定义转移特征和状态特征:
不妨假设每个token(xi)都有T个转移特征,S个状态特征。其实就是对每一个token多次打分。
之后,我们用最大似然估计估计lambda。这里也是Negative Conditional Log-Likelihood,按PRML上讲的标准步骤走就可以。看了一些网上各种公式推导,感觉都不太对,但是这里的偏导求出来也是可以直接利用计算Pr时的中间量的。
Reference:
(1)理解CRF:https://zhuanlan.zhihu.com/p/70067113
(2)隐Markov模型:https://wenku.baidu.com/view/437ce352cfc789eb172dc8f0.html
(3)如何解释CRF:https://www.zhihu.com/question/35866596 知友Scofield总结的非常好。
(4)Hammersley-Clifford 定理证明: https://blog.csdn.net/csuyzt/article/details/81709439