机器学习基础-HMM学学习
可以结合: ⭐HMM模型以及参数估计 + ⭐整理刘建平Pinard-学习笔记-隐马尔可夫模型HMM 体验一下公式的推导过程+实际题目中如何计算的过程。
最后一步和前向不同。 思想就是: 利用上一步计算出来的结果。
学习问题+解码问题—> NER序列标注
⭐HMM模型以及参数估计
可以当作生成模型,也可以当作判别模型:
引申出三个重要问题:
- 在已知模型参数情况下, 根据 观测序列推断出 因状态序列。
- 观测值,预测模型的参数
- 计算边缘概率,所有背后可能的序列考虑。 DP解决;
词性标注问题-HMM框架
问题1: sequence of tagging : inference/ decode —》 维特比算法;
问题2: 参数估计:
2.1 参数1: Emission
2.2 参数2:词性之间的转换:规则、语法等; Transition Probility
2.3 参数pai: 初始化概率: 开始的第一个单词代表的某个词性; 加和=1
* EM算法
问题3:P(W1,W2,W3)的概率
* 动态规划
维特比算法: 为什么可以work?
Z
i
Z_i
Zi 只与前后的变量有联系; 使用维特比算法减小计算量, 要不然没有任何的作用;
上述过程: 从状态1到状态n都是将中间结果进行记录,那这样和直接从后面递归计算有什么区别?
也就是从前往后计算 和 从后往前计算有什么区别?
答案: 类似于动态规划,如果没有从前往后记录结果,每一次对于最后一步的一个状态都需要将前面的步骤全部跑一遍。 类似于:斐波那契数列,中间有大量的重复计算。 最后一步有M种选择。
F/B 算法的一些应用:
- 前向算法
K-means 、 GMM 都用到了:EM算法
HMM/CRF by李宏毅
隐马尔可夫模型命名实体识别NER-HMM-从零解读
HMM: 隐藏的状态生成可观测的序列;
生成模型好像有问题;
HMM训练很快,做的更多的是一些统计,做的极大似然估计。
维特比算法与NER-命名实体识别-viterbi algorithm-HMM-CRF
状态转移图的角度来说,Beam Search是空间剪枝,而Viterbi算法是时间剪枝。
首先: 维特比和CRF、HMM首先没有什么必然的关系,维特比算法是一种解码的思路, 利用了动态规划的思想,每一个时间步骤,对于每种状态计算最大的max转移概率。 相当于对于每个时刻的每个状态都记录到达该时刻每个状态的最大路径。 一直到最终序列结束,直接查看保存的最优路径。
Beam search并不是每个时刻记录每个步骤的最优路径,然后仅仅记录每步转移的最大可能性, 最终的结果可能不是最优路径。 当然也可以进一步维特比+Beam search但是已经不是一个思想了。 具体也不知道怎么选择。 或者每个时刻选择每个状态的 top Beam 的路径记录。
思考1: 直接全部枚举和保存max感觉时间复杂度相同,都是要计算的,只是 维特比只保存最优的,节省了空间。 时间复杂度:
O
(
N
K
2
)
O(N K^2)
O(NK2)。
⭐整理刘建平Pinard-学习笔记-隐马尔可夫模型HMM
机器学习-白板推导系列(十四)-隐马尔可夫模型HMM-未看
EM算法
EM算法原理总结
如果我们从算法思想的角度来思考EM算法,我们可以发现我们的算法里已知的是观察数据,未知的是隐含数据和模型参数,在E步,我们所做的事情是固定模型参数的值,优化隐含数据的分布,而在M步,我们所做的事情是固定隐含数据分布,优化模型参数的值。
维特比算法
一句话总结: 使用动态规划的思想,每个时刻,对于每个状态分别记录到达 当前时刻,当前状态的最小花费(最大概率)以及对应的 上一个时刻跳跃过来的状态。