语音识别维特比解码_人工智能、通信领域的解码算法对比:维特比和BeamSearch...

本文对比了人工智能领域中的维特比算法与通信领域的解码算法,分析了两者在复杂度和适用场景上的差异。在序列预测问题中,如分词、语音识别和机器翻译,维特比算法适用于小规模词汇,而机器翻译常采用BeamSearch作为近似解。通信解码通常使用维特比算法,因其在保证最优解的同时,复杂度相对适中。
摘要由CSDN通过智能技术生成

人工智能自然语言处理领域中,很多都能转换为序列的预测问题,比如

  • 分词算法可以转化为预测每个字的标签B(词开始位置)、M(词中间位置)、E(词结束位置)、S(单字作为词)
  • 语音识别、机器翻译、文本生成算法可以认为是预测每个位置的词语
  • 输入法里面的拼音转汉字等等

而数字通信领域,接收机侧做的工作,本质上也是二进制0、1序列的解码,可以看成是二进制序列的预测问题。

同为序列预测问题,为什么分词用维特比算法,机器翻译用定向搜索(BeamSearch)算法,而通信解码用维特比算法呢?本文会分析两大解码算法:维特比、BeamSearch的复杂度及其适用的场景。

a5615a6739d13ce31064eefd8ec08a02.png

人工智能领域 VS 通信领域

一些符号约定:

  • 词典大小: V (vocabulary size),
  • 序列长度: L (length)
  • 定向宽度: B (Beam Width)

暴力搜索: O(V^L)

最简单的方法,用暴力美学去穷举,遍历所有可能路径后,找到最优值。复杂度为O(V^L)。

e2d030ae7f1e66ef4928483d827564d8.png

暴力穷举所有路径: O(V^L)

维特比算法: O(V*V*L)

做过中文分词研究人,都会熟悉维特比算法。维特比算法,同时也是数字通信中最常用的算法之一。

这么说可能有点抽象,发明维特比算法的维特比本人,是高通公司的创始人之一,传说是全球第二富有的数学家。(对,就是那个3G、4G、5G领域,和华为竞争,靠制定标准闻名世界的、美国公司)

0145d2b1326e0f196ab6a96095e01a51.png

通信中的卷积码

维特比算法的核心,就是每个时刻,始终维护V条路径,这V条路径的最后状态两两不同,与V个状态一一对应。对t-1时刻的V条路径,按后续所有的可能状态展开,生成V*V条候选路径,再选择V条路径(每条路径结尾状态均不同),成为t时刻维护的V条路径。 复杂度为O(V*V*L)。

下图中,横坐标为时间轴,纵坐标为状态(V=4)。注意:

  • 黑色路径为丢弃的路径,
  • 蓝色路径为t时刻生存下来的路径,
  • 青色为t-1时刻生存下来,但t时刻丢弃的路径
  • 每个时刻,生存下来的路径终点与状态数一一对应
1541e40e229009341477fca7ba0c2897.png

维特比算法:O(V*V*L)

理论上可以证明,维特比解码算法获得的路径就是最优解。有兴趣的,可以想一想。

定向搜索法(BeamSearch): O(V*B*L)

这是一个近似解法,与维特比算法相同的是,每一个时刻始终维护B条路径;不同的是,从t-1时刻的B条路径,展开B*V条路径后,直接取前B条路径,作为 t时刻维护的B条路径。算法复杂度为O(V*B*L), 其中B为Beam Width,翻译为中文,是定向光束的宽度,远小于V, 通常在10以内。

9eb580548d9a0a0f3a706c73f8f90277.png

BeamSearch算法: O(V*B*L),B=3

402691c76b6c96d63291c1752ab5242a.png

机器翻译

注意:解码算法、机器学习算法的不同

虽然机器翻译、分词都是机器学习问题,但此处的解码算法(维特比、 BeamSearch)和计算机科学领域的排序算法是同一性质,本质上是从众多路径中找出最优路径,答案是确定的,属于动态规划。

而机器学习领域的算法,是基于数据,用随机梯度下降法,去拟合模型的众多参数,来使目标损失函数最小,比如决策树、随机森林、深度学习等。很多公司中的算法工程师,主要是做这方面的工作的。

当然,机器学习领域算法的实现,底层都是用计算机科学领域的算法实现的,来保证高效。

注释:人工智能领域中深度学习火起来后,有些概念和其他领域都重名了。比如CNN中卷积和信号处理的卷积,从数学公式上不同,但形式上又相差不大。

总结

BeamSearch、维特比算法复杂度的不同,决定了不同的应用场景。

  • 对于V很大,比如机器翻译,通常词汇量都上万的,如果用维特比算法,可能要等几个小时才能解码成功,黄花菜都凉了,只能用BeamSearch近似解法
  • 对于V很小的情形,比如接收机中的卷积码解码,中文分词(BMES四中状态, V=4),用维特比即可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值