前向算法Forward algorithm),在隐马尔可夫模型(HMM)中,是用于计算“置信状态”的。置信状态指根据既往证据推算出的当前状态的概率分布。这个过程也被叫做“滤波”。前向算法和维特比算法紧密相关但又互不相同。

发展历史

编辑

前向算法是用来解决解码问题的算法之一。自从语音识别技术[1]和模式识别技术发展以来,它也越来越普遍地被用在像计算生物学[2]这样的使用HMM的领域内。

算法

编辑

整个算法的目标是计算联合概率分布  。为了方便,我们把   简写做  ,将   简写做  。直接计算 则需要计算所有状态序列  边缘分布,而它的数量和   成指数相关。使用这一算法,我们可以利用HMM的条件独立性质,递归地进行计算。

我们令

 .

利用链式法则来展开 ,我们可以得到

 .

由于   和除了   之外的一切都条件独立,而   又和   之外的一切都条件独立,因此

 .

这样,由于    由HMM的输出概率状态转移概率我们可以很快计算用   计算出 ,并且可以避免递归计算。

前向算法可以很容易地被修改来适应其他的HMM变种,比如马尔可夫跳跃线性系统

平滑处理

编辑

为了能够使用“未来的历史”(比如我们在试图预测过去的某个时点的状态),我们可以运行后向算法,它是前向算法的一个补充。这一操作被称为平滑[為何?]前向-后向算法  计算  ,因此使用了过去和未来的全部信息。

解码算法

编辑

为了解码最可能的序列,需要使用维特比算法。它会从过去的观测中试图推测最可能的状态序列,也即使   最大化的状态序列。

参考文献

编辑
  1. ^ Lawrence R. Rabiner, "A Tutorial on Hidden Markov Models and Selected Applications in Speech Recognition". Proceedings of the IEEE, 77 (2), p. 257–286, February 1989. 10.1109/5.18626
  2. ^ Richard Durbin, Sean R. Eddy, Anders Krogh, Graeme Mitchison, "Biological Sequence Analysis: Probabilistic Models of Proteins and Nucleic Acids". Cambridge University Press, 1999, ISBN 0521629713.

📚 Artikel Terkait di Wikipedia

算法

算法(英語:algorithm),在数学(算学)和计算机科学中指一个被定义好的、计算机可施行其指示的有限步骤或次序,常用于计算、数据处理和自动推理。算法可以使用条件语句通过各种途径转移代码执行(称为自动决策),并推导出有效的推论(称为自动推理),最终实现自动化。

蝙蝠算法

蝙蝠算法(Bat Algorithm,縮寫 BA),是一种元启发式优化算法,是杨新社(音译自:Xin-She Yang)在2010年提出的算法。这个蝙蝠算法以微蝙蝠(microbats)回声定位行为的基础,采用不同的脉冲发射率和响度。 把蝙蝠的回声定位理想化,可以总结如下:每个虚拟蝙蝠有随机的飞行速度

Midjourney

(原始内容存档于2022-09-01).  @midjourney. We recently started testing a V2 algorithm, it's much better with characters and animals (推文). 2022-04-18 [2023-03-19]

人工神经网络

通過訓練樣本的校正,對各個層的權重進行校正(learning)而建立模型的過程,稱為自動學習過程(training algorithm)。具体的学习方法则因网络结构和模型不同而不同,常用反向传播算法(Backpropagation/倒傳遞/逆傳播,以output利用一次微分Delta

萨塞克斯公爵夫人梅根

Kate. Harry and Meghan targeted by hate campaign fueled by Twitter's algorithm, report says. The Independent. 2021-10-27 [2023-10-31]. (原始内容存档于2021-10-27)

修改型離散餘弦轉換

1061-1075 (1999). V. Britanak and K. R. Rao, "A new fast algorithm for the unified forward and inverse MDCT/MDST computation," Signal Processing 82,

C++標準函式庫

以下文件包含标准库的声明。 <bitset> <deque> <list> <map> <queue> <set> <stack> <vector> <algorithm> <functional> <iterator> <locale> <memory> <stdexcept> <utility> <string>

Vector (STL)

std::begin(data)+1 ;如果删除了最后一个元素,它就是 std::end(data)。 algorithm 头文件中的std::remove(),可以移除一个范围内匹配特定值的元素。remove() 是一个全局函数,所以它不能删除容器中的元素。会