【问题标题】:Find the path with the max likelihood between two vertices in markov model在马尔可夫模型中找到两个顶点之间具有最大似然的路径
【发布时间】:2016-12-18 01:57:21
【问题描述】:

给定一个马尔科夫模型,它有一个名为S的开始状态和一个名为F的退出状态,这个模型可以表示为有向图,有一些约束:

  1. 每条边都有一些权重落在 (0,1] 范围内,作为转移概率。

  2. 从每个节点出来的边的权重总和为 1。

问题是如何对开始状态和退出状态之间的路径进行排序?或者更准确地说,如何找出概率最高的路径?

一方面,权重是概率,因此路径越长,产品越小,因此一种启发式策略是选择更短的路径和更大的权重候选;但是这个问题可以转化为最短路径问题还是使用一些量身定制的维特比算法或DP算法来解决?

【问题讨论】:

    标签: algorithm shortest-path markov-models


    【解决方案1】:

    将您的概率转换为日志空间(日志库无关紧要)。现在路径的概率变成了日志空间权重的总和(因为log(ab) = log(a) + log(b)。由于权重/概率

    要将其更多地引入常规问题,您可以否定所有日志空间权重,以便它们都是正数,并且您正在寻找最低的总和。此时,您可以运行标准算法(Dijkstra 会简单且非常快速)来找到您正在寻找的路径。如果你有总和,则将其取反并计算指数以获得概率。

    TL;DR:将所有权重 w 替换为 -log(w) 并使用新权重运行 Dijkstra。

    【讨论】:

    • 感谢 Sorin 我刚刚意识到我糟糕的数学把自己弄得一团糟。是的,-log(w) 将满足更短的路径和更大的概率,它将输出“更短”的路径。这个问题现在看起来很愚蠢。
    • 通常在马尔科夫模型中你使用维特比而不是迪杰斯特拉
    • 还有一个问题,djikstra 是否适用于这种情况,它可能在图中有循环? @索林
    • 维特比没有修改?我认为 Viterbi 是为 HMM 设计的,如果有一些针对马尔可夫模型的定制版本,我想知道! @justhalf
    • DAG 表示节点具有拓扑顺序。您只需按拓扑顺序遍历每个节点,从所有父节点获取最大值。我现在才看到你的图。您在问题中的图表不是 DAG,它具有循环 A-B-C-D-A。 DAG 表示有向非循环图。如果不是 DAG,则不能使用我的方法。但 Dijkstra 应该没问题。
    猜你喜欢
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多