序列数据模型:隐马尔可夫模型与条件随机场详解
1. 对数概率计算
在给定状态序列和预定义的 λ 模型的情况下,计算观察到特定序列的概率的对数,代码如下:
def logProb: Double = foldLeft(lambda.getT, (s, t)
=> s + Math.log(ct(t)), Math.log(alpha))//9
此方法计算概率的对数而非概率本身,因为概率对数的求和比概率的乘积更不容易导致下溢。
2. Beta 类(反向变量)
Beta 值的递归计算与 Alpha 类类似,只是在状态序列上的迭代是反向进行的。其实现步骤如下:
1. 计算 [M5] 并对 t=0 时跨状态的 beta 值进行归一化 [M6]。
2. 迭代计算并归一化从时间 T - 1 到 t 的 beta 值,该值从 t + 1 时的值更新而来 [M7]。
具体公式如下:
- M5:Beta 的初始化:βT - 1(t) = 1
- M6:初始 beta 值的归一化:
(\hat{\beta} {T - 1}(i)=\frac{\beta {T - 1}(i)}{\sum_{j = 0}^{N - 1}\beta_{T - 1}(j)})
- M7:Beta 的归一化求和:
(\hat{\beta} {t}(i)=\frac{1}{c {t}}\sum_{j = 0}^{N - 1}a_{i
订阅专栏 解锁全文
40

被折叠的 条评论
为什么被折叠?



