说起CRF(条件随机场),不得不提起HMM(隐马尔可夫模型),因为HMM和CRF很像。只不过HMM是生成模型,运用的是统计概率;而CRF是判别模型,运用的是生成判别函数,进行迭代求参。
1.基本原理:
隐马尔可夫的基本原理可以用下图说明:
我们可以用一个实例来解释,比如说:词性标注问题,上边是各个分词序列(X),下边是各个分词的词性序列(y),假设我们一句话中有8个词,词性有5种。那么,这时候就有可能的词性序列就有8的5次方个。
一个HMM由以下几个部分组成:
1.模型的状态的数目N(相当于用例中的8个词)
2.每个状态可能出现的可能的数目M(相当于用例中的5个词性)
3.状态转移概率矩阵A={aij}(N*N)(相当于用例中的8*8)
4.从状态观察到的标签的概率分布B={bjk}(N*M)(相当于用例中的8*5)
5.初始状态概率分布π(N*1)
2.HMM算法流程:
(1)初始化状态的概率分布π
(2)设t=1
(3)根据状态的输出概率bjk输出Ot
(4)根据状态转移概率分布aij,将当前时刻t的状态转移到新的状态
(5)t=t+1,如果t<T,重复步骤(3)(4),否则,结束算法
3.HMM中有三个基本问题:
1.估计问题:主要是在已知模型的条件下,求给定观测序列出现的概率,P(O|u)
方法:暴力计算法O(NMN)、前向算法O(NM2)、后向算法O(NM2)
2.序列问题:已知模型参数和观测序列,求观测序列队以很高的最可能的状态序列
方法:“近似算法-->贪心算法-->局部最优”、“维特比算法-->动态规划”
3.参数估计:给定一个观察序列,如何最大似然的估计参数值,使得P(O|u)最大
方法:“监督学习-->给出观测序列+对应的状态序列-->极大似然估计”、“非监督学习-->只有观测序列,无对应状态序列-->前后向算法”
4.HMM三个基本问题:
1.估计问题:通过词语序列,计算该词语序列发生的概率
2.解码问题:通过词语序列,找到与之最匹配的词性序列
3.参数估计:通过匹配出来的结果,进行优化参数
注意:在词性标注中,词语序列是观察序列(即X),词性序列是隐藏序列,属于HMM的解码问题