人工智能自然语言处理领域中,很多都能转换为序列的预测问题,比如
- 分词算法可以转化为预测每个字的标签B(词开始位置)、M(词中间位置)、E(词结束位置)、S(单字作为词)
- 语音识别、机器翻译、文本生成算法可以认为是预测每个位置的词语
- 输入法里面的拼音转汉字等等
而数字通信领域,接收机侧做的工作,本质上也是二进制0、1序列的解码,可以看成是二进制序列的预测问题。
同为序列预测问题,为什么分词用维特比算法,机器翻译用定向搜索(BeamSearch)算法,而通信解码用维特比算法呢?本文会分析两大解码算法:维特比、BeamSearch的复杂度及其适用的场景。
一些符号约定:
- 词典大小: V (vocabulary size),
- 序列长度: L (length)
- 定向宽度: B (Beam Width)
暴力搜索: O(V^L)
最简单的方法,用暴力美学去穷举,遍历所有可能路径后,找到最优值。复杂度为O(V^L)。