- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试使用 Viterbi 算法在 HMM 上找到最可能的路径(即状态序列)。但是,我不知道转换矩阵和发射矩阵,我需要根据观察(数据)来估计它们。
要估计这些矩阵,我应该使用哪种算法:Baum-Welch 或 Viterbi 训练算法?为什么?
万一我应该使用维特比训练算法,谁能给我一个好的伪代码(不容易找到)?
最佳答案
如果有足够的资源,您可能应该使用 Baum-Welch(前向-后向)算法而不是 Viterbi 训练 算法(又名分段 k-means 算法),这是一种替代参数估计过程为了计算效率牺牲了一些 Baum-Welch 的通用性。一般来说,Baum-Welch 算法会给出参数,从而带来更好的性能,尽管在某些情况下是 not the case.。这是一个不错的 comparative study .
此外,请注意,您应该使用 Baum-Welch 算法来估计模型的参数。这使用类似于 EM 算法的东西来设置发射概率和传输概率。在训练 HMM 之后,您将使用 Viterbi 解码 算法来计算最有可能生成您的观察结果的状态序列。
引用方面,我会推荐 Speech and Language Processing , Artificial Intelligence a Modern Approach或 this paper
关于algorithm - Viterbi 训练或 Baum-Welch 算法来估计转换和发射概率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13360892/
在尝试为隐马尔可夫模型编写程序时,我对 Baum-Welch 算法的初始 HMM 做了最简单的假设:将所有内容都作为均匀分布。也就是说, A[i][j] = 1/statenumber; B[i][j
我正在尝试了解 Baum-Welch 算法(与隐马尔可夫模型一起使用)。我了解前向后向模型的基本理论,但如果有人能用一些代码来帮助解释它会很好(我发现阅读代码更容易,因为我可以玩弄它来理解它)。我检查
大家。我正在使用 Baum-Welch 算法来训练词性标注器,它完全是无监督的方式。问题来了:当我得到标签结果时,我只得到一个数字序列。我不知道哪个标签代表 VV、NN、DT。我该如何解决这个问题?
所以我正在尝试构建 Baum Welch 算法来进行词性标注以供练习。但是,我对使用隐马尔可夫模型与马尔可夫模型感到困惑。因为看起来你正在失去从一个状态到另一个状态的上下文。由于在移动到下一个状态时不
我必须实现 LZW 算法,但我发现解码部分存在一些问题。我认为代码是正确的,因为它适用于我在网上某处找到的示例:如果我按如下方式初始化我的字典 m_dictionary.push_back("a");
我有一个基于 LZW 压缩/解压缩算法的实现,并且大部分都将其平方。但是,我在测试的其中一个文件中遇到了问题。以下是所述文件的文本 #include "bits.h" int check_endian
两个样本 t 检验(等方差合并标准偏差)的命令是 power.t.test(n=, delta=, sd=, type="two.sample") 给定不等方差和样本数的两个样本,我如何计算统计功效?
本题可能并不严格限于LZW算法,可能涵盖LZ77和LZ78的其他实现: 我一直在尝试编写一个涉及 LZW 字典编码方案的压缩/解压缩实用程序。问题是我发现有必要在编码阶段写出每个代码字(或“代码”)后
我正在尝试通过使用Python的scipy包来学习DSP。我已经测量了来自机器的一些 200Hz 信号。现在我想检查信号的频谱密度。这是绘制出来的信号: 正如您所看到的,该信号显然不是低频信号。但是,
我尝试用whelch方法,发现零频不正常 import numpy as np import scipy.signal as signal import matplotlib.pyplot as pl
我正在尝试使用 Viterbi 算法在 HMM 上找到最可能的路径(即状态序列)。但是,我不知道转换矩阵和发射矩阵,我需要根据观察(数据)来估计它们。 要估计这些矩阵,我应该使用哪种算法:Baum-W
对于给定的离散时间信号 x(t)带间距dt (等于 1/fs,fs 是采样率),能量为: E[x(t)] = sum(abs(x)**2.0)/fs 然后我做 x(t) 的 DFT : x_tf =
我目前正在尝试用 C 语言实现 Baum Welch 算法,但我遇到了以下问题:gamma 函数: gamma(i,t) = alpha(i,t) * beta(i,t) / sum over `i`
我已经实现了 Baum-Welch 算法,并且正在玩一些玩具数据,这些数据是根据已知分布生成的。数据呈正态分布,根据隐藏状态具有不同的均值和标准差。有2个州。除了隐藏状态的初始分布之外,该算法似乎收敛
我在 python 中遇到了名为 welch ( https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.signal.we
我在理解 Baum-Welch 算法的工作原理时遇到了一些问题。我读到它调整了 HMM 的参数(转换和发射概率),以最大化给定模型可以看到我的观察序列的概率。 但是,如果我有多个观察序列会发生什么?我
我在 R 中使用 oneway.test() 运行了带有韦尔奇校正的单向方差分析测试,因为我的数据违反了等方差假设(转换没有解决问题) . 一个简单的数据示例: > dput(df) structur
我有以下 MATLAB 代码来计算信号的 PSD: x = linspace(0, 10, 100001); dt = x(2) - x(1); Fs = 1 / dt; a1 = 1; f1 = 5
有人告诉我,也见过一些例子,其中线性模型和 t 检验基本上是相同的检验,只是 t 检验是带有虚拟编码预测变量的专门线性模型。有没有办法让 lm 的输出输出与 r 中正常 t.test 函数相同的 t
有人告诉我,也见过一些例子,其中线性模型和 t 检验基本上是相同的检验,只是 t 检验是带有虚拟编码预测变量的专门线性模型。有没有办法让 lm 的输出输出与 r 中正常 t.test 函数相同的 t
我是一名优秀的程序员,十分优秀!