1 只是用BiLSTM,不使用CRF或者加上softmax,这样可以吗?
A:只用BiLstm是不行的,因为它只用来提取特征。CRF起到分类和损失函数的作用。
使用softmax只能计算概率,不能起到前后关联的作用。而从CRF的使用场景:当输出序列的每一个位置的状态,需要考虑到相邻位置的状态的时候。因为CRF从X到Y过程中,Y是有关联的,这更加符合项目需求。另外从CRF的源代码看(分析可见此文):内部包含了两部分用于计算数损失函数:计算输出概率,还有一个转换损失函数(这就是关联使得Y关联的关键所在)。
2 HMM和CRF的理解
HMM
一句话简介:HMM是一种链式依赖模型,属于有向图模型范畴。具体有初始状态概率矩阵π、隐状态转移概率矩阵A(隐状态之间)、发射矩阵B(隐状态到观测状态);π和A决定了隐状态序列,B决定观测序列,因此HMM可以使用三元符号表示,称为HMM的三元素: λ = (A, B,π)。为简化计算,包含两个假设(齐次Markov假设和观测独立假设)。常见问题有:
- 观测序列概率计算:前向-后向算法【给定模型λ=(A,B,π)和观测序列Q={q1,q2,…,qT},计算模型λ下观测到序列Q出现的概率P(Q|λ)】;
- 模型学习:第一种情况较为简单,就是我们已知观测序列和对应的隐藏状态序列,直接利用大数定理的结论“频率的极限是概率”,直接给出HMM的参数估计;第二种Baum-Welch(鲍姆-韦尔奇)算法(状态未知)【已知观测序列Q={q1,q2,…,qT},求模型λ=(A,B,π)的参数,使得在该模型下观测序列P(Q|λ)最大】,该算法其实是一个EM算法。
- 预测问题也称为解码:Viterbi(维特比)算法【给定模型λ=(A,B,π)和观测序列Q={q1,q2,…,qT},求给定观测序列条件概率P(I|Q,λ)最大的隐含状态序列I】。Viterbi算法实际是用动态规划的思路求解HMM预测问题,求出概率最大的“路径”,每条“路径”对应一个状态序列
HMM:https://www.cnblogs.com/yifanrensheng/p/12684717.html 实例: https://www.cnblogs.com/yifanrensheng/p/13510897.html
CRF
一句话简介:条件随机场(Conditional Random Fields, 简称CRF)是给定一组输入序列条件下另一组输出序列的条件概率分布模型(是给定随机变量X条件下,随机变量Y的马尔科夫随机场。)。可以作为一种软分类模型,在自然语言处理中得到了广泛应用。和HMM很相似,去掉了HMM中的隐状态齐次Markov假设和观测序列的独立假设。
三个问题和HMM问题非常类似:
不过和HMM不同,在linear-CRF中,我们对于给出的观测序列x是一直作为一个整体看待的,也就是不会拆开看(x1,x2,…),因此linear-CRF的问题模型要比HMM简单一些,如果你很熟悉HMM,那么CRF的这三个问题的求解就不难了。
- linear-CRF第一个问题是评估推断(Inference),即给定 linear-CRF的条件概率分布P(y|x), 在给定输入序列x和输出序列y时,计算条件概率P(yi|x)和P(yi−1,yi|x)以及对应的期望。
- linear-CRF第二个问题是学习(Learning),即给定训练数据集X和Y,学习linear-CRF的模型参数wk和条件概率Pw(y|x),这个问题的求解比HMM的学习算法简单的多,普通的梯度下降法,拟牛顿法都可以解决。
- linear-CRF第三个问题是解码(Decoding),即给定 linear-CRF的条件概率分布P(y|x),和输入序列x, 计算使条件概率最大的输出序列y。类似于HMM,使用维特比算法可以很方便的解决这个问题。
比较
CRF和异同点
相同点:
linear-CRF模型和HMM模型有很多相似之处,尤其是其三个典型问题非常类似,除了模型参数学习的问题求解方法不同以外,概率估计问题和解码问题使用的算法思想基本也是相同的。同时,两者都可以用于序列模型,因此都广泛用于自然语言处理的各个方面。
不同点:
- HMM是假定满足观测序列HMM独立假设。CRF没有,所以CRF能容纳更多上下文信息。
- linear-CRF是利用最大熵模型的思路去建立条件概率模型,对于隐状态序列并没有做马尔科夫假设。而HMM是在对隐状态做了马尔科夫假设的前提下建立联合分布的模型
- CRF计算的是全局最优解,不是局部最优值。
- CRF模型是判别模型,而HMM是生成模型,即linear-CRF模型要优化求解的是条件概率 P (y|x),则HMM要求解的是联合分布P (y,x) 。
- CRF计算量大于HMM,但性能更优
最后只有linear-CRF模型和HMM模型才是可以比较讨论的。但是linear-CRF是CRF的一个特例,CRF本身是一个可以适用于很复杂条件概率的模型,因此理论上CRF的使用范围要比HMM广泛的多。
一般而言,CRF优于HMM
其中一个原因是HMM只考虑前一个状态,而CRF是前后两个状态,考虑了前后之间的相互关系,而不是HMM的只考虑向前的关系。实际上CRF的优越性是以复杂度为代价的,除了线性链CRF和HMM还算结构差不多,算法复杂度勉强差不多以外,其他的CRF的模型都比HMM复杂很多。
另外:HMM的两个假设其实是你自己建模的时候假设出来的前提,也是计算简答的重要原因。如果你觉得这个前提对你的问题解决影响不大,那么尽可以用HMM来做。如果觉得这样做效果可能不好,或者不满足需求,那么可以考虑linear_CRF
另外: CRF没有HMM那样严格的独立性假设条件,因而可以容纳任意的上下文信息,特征设计灵活。CRF需要训练的参数更多,与MEMM和HMM相比,它存在训练代价大、复杂度高的缺点。
CRF:https://www.cnblogs.com/yifanrensheng/p/13174437.html#_label7_0
CRF三个问题:https://www.cnblogs.com/yifanrensheng/p/13193755.html#_labelTop
CRF词性标注:https://www.cnblogs.com/yifanrensheng/p/13510899.html#_label3
