问题标签 [viterbi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 在tensorflow中使用CRF进行解码时如何获得top-k最佳候选序列
CRF++允许我们获得每个标签的边际概率(每个输出标签的一种置信度度量)和输出的可能条件(整个输出的置信度度量)。
Tensorflow 有自己的 crf 实现。在训练一个 crf 模型之后,我们可以通过ory
得到每个测试输入序列的最佳标签序列及其非归一化分数。x
tf.contrib.crf.viterbi_decode()
tf.contrib.crf.crf_decode()
但是,仅获得一个最佳序列对我来说是不够的。目前,top-k 最好的序列及其对应的分数都对我有用。我注意到目前上述两个功能不提供这些信息。因此,我想知道在对 tensorflow 源代码进行微小修改后是否有可能获得前 k 个最佳候选者。
- top-k 标签序列及其对应的非标准化分数。
- 每个标签的边际概率(如 CRF++)
probability - 为单词定义隐马尔可夫模型
我正在尝试定义一个隐藏的马尔可夫模型并使用维特比算法(https://en.wikipedia.org/wiki/Viterbi_algorithm)预测给定的单词序列是否正确。为了帮助理解,我尝试定义模型参数:
语料库中的字母是abbd
。从这里我定义:
以上正确吗?
我需要定义转换概率d
吗?我需要为b->a
&定义排放概率b->d
吗?
我还参考了: https ://stats.stackexchange.com/questions/212961/calculating-emission-probability-values-for-hidden-markov-model-hmm ,它有助于定义排放概率。
graph - 最短路径挑战
给定一个具有起始顶点 S 和结束顶点 E 的图,如何找到从 S 到 E 的 k 条最短路径,条件是所有顶点必须只访问一次?
该图可以有循环。有人可以详细说明如何使用 Dijkstra 或 Viterbi 算法来解决这个问题吗?Start = S, End = End, A,B,C 应该只访问一次
python - DAG 中的 K 条最长路径
我想在有向无环图(DAG)中找到 K 条最长的路径。我已经阅读了几篇关于它的文章,但我找不到任何实现它的实际代码。有人可以帮助我使用python或伪代码吗?
这是一个有趣的算法解释: https ://www.ncbi.nlm.nih.gov/pmc/articles/PMC3009499/
tensorflow - 如何理解 tensorflow 中的“viterbi_decode”
HMM中使用的传统维特比算法有一个起始概率矩阵(维特比算法维基),而tensorflow中的维特比解码参数只需要转移概率矩阵和发射概率矩阵。怎么理解?
python - 维特比算法 (HMM) 质量差
我最近一直在尝试研究隐马尔可夫模型和维特比算法。我找到了一个名为 hmmlearn ( http://hmmlearn.readthedocs.io/en/latest/tutorial.html ) 的库来帮助我生成两个状态的状态序列(具有高斯发射)。然后我想用维特比重新确定状态序列。我的代码有效,但预测了大约 5% 的错误状态(取决于高斯发射的均值和方差)。hmmlearn 库有一个 .predict 方法,它也使用 Viterbi 来确定状态序列。
我现在的问题是 hmmlearn 的 Viterbi 算法比我手写的要好得多(与我的 5% 相比,错误率低于 0.5%)。我在我的代码中找不到任何重大问题,所以我不确定为什么会这样。下面是我的代码,我首先生成状态和观察序列 Z 和 X,用 hmmlearn 预测 Z,最后用我自己的代码预测它:
我不确定我的代码是否有大错误,或者 hmmlearn 是否只是使用了更精细的 Viterbi 算法。通过查看错误预测的状态,我注意到发射概率 B 的影响似乎太大了,因为它导致状态变化过于频繁,即使进入另一个状态的转换概率非常低。
我对python很陌生,所以请原谅我丑陋的编码。提前感谢您提供的任何提示!
编辑:正如您在代码中看到的那样,我很愚蠢并且使用方差而不是标准偏差来确定排放概率。修复此问题后,我得到与实现的 Viterbi 算法相同的结果。
c - 在 c 中实现维特比算法的更好方法是什么?
我想实现用于解码卷积码的维特比算法。
使用 2D 数组或使用 C 编程语言中的链表来实现它会更好吗?
我是 C 语言的新手,如果有任何关于哪种方法会更好的具体原因,我将不胜感激。
decoder - 在维特比前向阶段计算分支度量
我一直在研究 Viterbi 解码器的一些实现,并注意到一种计算分支度量 ( 1 ) 的奇怪方法:
“BM 是由信息码字 c 和带有 R 输入的汉明距离 hd 的乘积计算得出的。”
执行前向相位的函数的输入是输入位 c 以及汉明距离 hd。我的问题是,当分支度量在我的理解中应该是输入位的汉明距离和格子的分支值时,汉明距离如何作为输入?那么,当分支度量实际上应该是汉明距离时,为什么要将其计算为输入位和汉明距离的乘积呢?
hidden-markov-models - 算法 - 从观察中找到 HMM 的顺序
我得到一个数据,该数据由N
一系列可变长度的隐藏变量及其相应的观察变量组成(即,我有每个序列的隐藏变量和观察变量)。
有没有办法找到K
这个数据的“最佳”HMM模型的顺序,而不需要详尽的搜索?(合理的启发式也是合法的)。