解码之Beam Search算法

本文介绍了解码策略在Seq2Seq模型中的应用,包括简单的贪心搜索和集束搜索两种方法。贪心搜索每次迭代都选择概率最大的输出,而集束搜索则保留多个可能性较大的输出路径,通过增加搜索空间提高翻译质量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解码是seq2seq模型的常见问题,常用方法有贪心搜索(Greedy Search)集束搜索(Beam Search)。

简单贪心搜索

这里写图片描述
From [1]

如图,Decoder根据Encoder的中间语义编码向量 c c <s>标签得到第一个输出的概率分布[0.1,0.1,0.3,0.4,0.1],选择概率最大的0.4,即moi

根据隐向量 h1 h 1 moi得到第二个输出的概率分布 [0.1,0.1,0.1,0.1,0.6] [ 0.1 , 0.1 , 0.1 , 0.1 , 0.6 ] ,选择概率最大的0.6,即suis

以此类推,直到遇到<\s>标签,得到最终的序列moi suis étudiant

集束搜索

上面的贪心搜索只选择了概率最大的一个,而集束搜索则选择了概率最大的前k个。这个k值也叫做集束宽度(Beam Width)。

还是以上面的例子作为说明,k值等于2,则集束搜索的过程如下图:

这里写图片描述

得到第一个输出的概率分布 [0.1,0.1,0.3,0.4,0.1] [ 0.1 , 0.1 , 0.3 , 0.4 , 0.1 ] ,选择概率最大的前两个,0.3和0.4,即Jemoi

然后Je和moi分别作为Decoder的输入,得到两个概率分布,然后再选择概率和最大的前两个序列,0.3+0.8和0.4+0.6,即Je suismoi suis

以此类推,最终可以得到两个序列,即Je suis étudiantmoi suis étudiant,很明显前者的概率和最大,为2.2,所以这个序列是最终得到的结果。

集束搜索本质上也是贪心的思想,只不过它考虑了更多的候选搜索空间,因此可以得到更多的翻译结果。

References

[1] https://www.tensorflow.org/tutorials/seq2seq

### 语音识别中Beam Search算法实现与优化 #### Beam Search在语音识别中的应用原理 Beam Search是一种启发式图搜索算法,在语音识别领域被广泛应用于从声音信号生成最可能的文字序列[^1]。该算法通过限制每一步保留的最佳候选数(称为束宽或beam width),有效地减少了搜索空间,提高了解码速度而不显著降低准确性。 对于给定的音频输入\( X \),目标是从所有潜在的文字序列集合\(\{W_i\}\)中找到使条件概率\( P(W|X)\)最大的那个特定序列\( W^* \)[^3]: \[ W^{*}=\argmax_{W}{P(W|X)} \] #### 解码过程概述 在实际操作层面,Beam Search按照时间步迭代展开预测直到达到预设的最大长度或是遇到终止符为止。每次扩展时只保存前k个具有最高累积分数的部分假设作为下一轮的基础[k通常被称为“波束宽度”(beam size)]: ```python def beam_search_decoder(probs, k=3): sequences = [[list(), 0.0]] for row in probs: all_candidates = list() # 扩展现有序列并评分 for seq, score in sequences: for i in range(len(row)): candidate = [seq + [i], score - math.log(row[i])] all_candidates.append(candidate) # 排序并截取top-k最佳候选项 ordered = sorted(all_candidates, key=lambda tup:tup[1]) sequences = ordered[:k] return max(sequences, key=lambda pair:pair[1])[0] ``` 此代码片段展示了如何基于log-probabilities执行基本形式的Beam Search解码器。注意这里的`probs`参数代表各时刻各个字符出现的概率分布矩阵。 #### 高效实施策略 为了进一步提升性能,可以考虑以下几种常见的改进措施: - **动态调整波束大小**:根据当前阶段的具体情况灵活改变波束尺寸,比如初期采用较大值确保多样性后期缩小以加快收敛。 - **提前停止机制**:当发现某些分支明显优于其他竞争者时可尽早结束探索节省资源。 - **引入额外约束**:如强制规定最小/最大句子长度、利用外部知识库过滤不合理猜测等手段增强最终输出合理性。 - **集成语言模型**:结合强大的n-gram或其他类型的LMs来重新打分候选列表,从而更好地捕捉上下文依赖关系改善整体流畅度。 这些技术共同作用能够有效缓解传统固定配置下的局限性问题,为用户提供更加精准高效的自动语音识别服务体验。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

手撕机

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

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

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

打赏作者

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

抵扣说明:

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

余额充值