我知道 HMM(隐马尔可夫模型)是生成模型,而 CRF 是判别模型。我也了解 CRF(条件随机场)是如何设计和使用的。我不明白的是它们与 HMM 有何不同?我读到,在 HMM 的情况下,我们只能在前一个节点、当前节点和转移概率上建模我们的下一个状态,但在 CRF 的情况下,我们可以这样做,并且可以将任意数量的节点连接在一起以形成依赖关系还是上下文?我在这里正确吗?
隐马尔可夫模型和条件随机场的直观区别
机器算法验证
机器学习
隐马尔可夫模型
自然语言
条件随机场
2022-01-27 10:59:38
3个回答
来自 McCallum对 CRF 的介绍:
作为旁注:我恳请您维护这个(不完整的)列表,以便感兴趣的用户可以轻松访问资源。现状仍然需要个人调查大量论文和/或长篇技术报告,以找到与 CRF 和 HMM 相关的答案。
除了其他已经很好的答案之外,我想指出我认为最值得注意的独特特征:
- HMM 是尝试对联合分布 P(y,x) 建模的生成模型。因此,此类模型试图对数据 P(x) 的分布进行建模,这反过来可能会施加高度依赖的特征。这些依赖关系有时是不可取的(例如在 NLP 的 POS 标记中),并且通常难以建模/计算。
- CRF 是对 P(y|x) 建模的判别模型。因此,它们不需要显式地对 P(x) 建模,并且取决于任务,因此可能会产生更高的性能,部分原因是它们需要学习的参数更少,例如在不需要生成样本时的设置中。当使用复杂和重叠的特征时,判别模型通常更合适(因为建模它们的分布通常很困难)。
- 如果您有这样的重叠/复杂特征(如在 POS 标记中),您可能需要考虑 CRF,因为它们可以使用其特征函数对这些进行建模(请记住,您通常必须对这些函数进行特征工程)。
- 一般来说,CRF 比 HMM 更强大,因为它们应用了特征函数。例如,您可以对像 1(=NN,=史密斯,=true) 而在(一阶)HMM 中,您使用马尔可夫假设,仅对前一个元素施加依赖。因此,我将CRF 视为 HMM 的概括。
- 还要注意线性和一般 CRF之间的区别。与 HMM 一样,线性 CRF 只对前一个元素施加依赖,而使用通用 CRF,您可以对任意元素施加依赖(例如,在序列的最后访问第一个元素)。
- 在实践中,您会比一般 CRF 更频繁地看到线性 CRF,因为它们通常更容易推理。一般来说,CRF 推理通常是难以处理的,因此您只能选择近似推理)。
- 线性 CRF 中的推理是使用Viterbi 算法完成的,就像在 HMM 中一样。
- HMM 和线性 CRF 通常都使用最大似然技术(例如梯度下降、准牛顿方法)或使用期望最大化技术(Baum-Welch 算法)的 HMM 进行训练。如果优化问题是凸的,这些方法都会产生最优参数集。
- 根据[1],如果所有节点都具有指数族分布并且在训练期间被观察到,则学习线性 CRF 参数的优化问题是凸的。
[1] 萨顿,查尔斯;McCallum, Andrew (2010),“条件随机场简介”
“条件随机场可以理解为最大熵模型的顺序扩展”。这句话来自与“Classical Probabilistic Models and Conditional Random Fields”相关的技术报告。
它可能是 HMM、CRF 和最大熵等主题的最佳读物。
PS:链接中的图1对它们进行了很好的比较。
问候,
其它你可能感兴趣的问题