Viterbi算法(维特比算法)

维特比算法背景:

安德鲁·维特比(Andrew J. Viterbi),CDMA之父IEEE Fellow高通公司创始人之一,高通首席科学家。他开发了卷积码编码的最大似然算法而享誉全球。1991年香农奖(Claude E. Shannon Award)获得者。

维特比算法由 安德鲁·维特比(Andrew Viterbi) 于1967年提出,用于在数字通信链路中解卷积以消除噪音。 此算法被广泛应用于 CDMA 和 GSM 数字蜂窝网络、拨号调制解调器、卫星、深空通信和 802.11 无线网络中解卷积码。维特比算法是一个特殊但应用最广的动态规划算法。利用动态规划,可以解决任何一个图中的最短路径问题。而维特比算法是针对一个特殊的图—篱笆网络(Lattice)的有向图最短路径问题而提出的。它之所以重要,是因为凡是使用隐含马尔可夫模型描述的问题都可以用它来解码,包括今天的数字通信、语音识别、机器翻译、拼音转汉字、分词等。

举一个例子,下图所示,假如需要找一条从S到E的最短路径,每段路径都有固定的长度,为了举例方便图中仅标出部分长度。最无脑的方法就是枚举出所有可能的路径并排序比较最终找出最短的路径。是否有时间复杂度更低的算法呢?Viterbi算法就是一种快速找出最优路径的算法。

边计算边删掉不可能是答案的路径,在最后剩下的路径中挑选最优路径,就是viterbi算法(维特比算法)的重点,因为后面我们再也不用考虑这些被删掉的路径了。

我们从开始S出发一列一列地算,首先是S—>A,仅凭该列三条连接还不能判断从那条线路出发的路径最短,因此我们继续往下看。S—>A—>B的路径共有9种可能,首先比较S—>A—>B1的三条路径如下图所示

经过 B1 的这三条路径中很容易找出最优的一条路径即 S—>A2—>B1,其他两条绝对不是最有路径中的路段,因为从 B1 出发往后继续走的路程概率是一样的,因此从 S—>A—>B1 的三条路径中除了最短那条外其余两条绝对不可能出现在全局最短路径中。这样就筛选掉了两条路径得到如下图的结果。

 注意上述 S—>A—>B 找候选路径中 A—>B 的连线方式是 An—>B1 的方式而不是 A1—>Bn 的方式,如下图所示。这里使用的是图 a 中的方式,而不是 b 中的方式,b的方式并不能确定最短的那个路段就是最可能的候选路径之一。

 S—>A—>B 其他两条最优候选路径如下图所示。

 同理,S—>A—>B—>C1 也有三条候选路径,从中选取最优候选路径的方式与前述类似,以此类推,直到最终剩下三条最有可能的候选路径,假设最终的结果如下图所示。每种颜色代表一种可能的路径,对比这三条路径即可找到全局最优解。

 这种寻找最优路径的方式就是Viterbi算法。

  • 25
    点赞
  • 123
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
LibTorch是一个在PyTorch生态系统中的C++库,它提供了一些功能来处理和操作张量、构建和训练神经网络模型。维算法是一种用于求解最优路径的动态规划算法,经常用于序列标注任务中。 在LibTorch中,可以使用维算法来解决一些序列标注问题。通常,这需要定义一个隐马尔可夫模型(HMM),其中包含了一组隐藏状态和一组观测状态。我们可以使用LibTorch中的张量来表示这些状态,并使用LibTorch提供的函数来实现维算法。 首先,我们需要定义HMM的转移矩阵和观测矩阵。转移矩阵描述了隐藏状态之间的转移概率,而观测矩阵描述了观测状态对应于隐藏状态的概率。 然后,我们可以使用维算法来计算最优路径。该算法利用动态规划的思想,通过递归地计算每个时间步中每个隐藏状态的最优路径分数和最优前驱状态,从而得到整个序列的最优路径。 在LibTorch中,可以使用torch::Tensor表示分数和路径,并使用torch::argmax函数来找到每个时间步中最优路径的索引。维算法的关键步骤是通过前一个时间步的最优路径分数和当前时间步的转移概率、观测概率来计算当前时间步的最优路径分数,并通过比较不同路径分数来选择最优路径。 维算法最终会给出整个序列的最优路径。通过在LibTorch中实现维算法,我们可以在序列标注任务中解决最优路径问题,并得到模型对输入序列的最佳标注结果。 总之,LibTorch提供了一些功能来处理和操作张量、构建和训练神经网络模型,包括维算法的实现,可以帮助我们解决序列标注任务中的最优路径问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

地球被支点撬走啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值