基于Beam Search算法:图中每个节点的概率取决于哪些因素?
Great question! Let's break this down clearly—since Beam Search is mostly used in sequence generation tasks (like machine translation, text generation, or speech recognition), each "node" here usually represents a candidate sequence (or a step in building that sequence). The probability assigned to a node comes from a few key node/sequence characteristics:
模型生成的条件概率(核心驱动因素)
节点概率的基础来源是底层模型输出的条件概率。比如在Transformer文本生成模型中,当构建序列"我想吃____"时,模型会根据训练数据学到的语言模式,计算P(火锅 | 我想吃)或P(米饭 | 我想吃)这类条件概率。那些符合上下文逻辑、贴合语言习惯的节点(token/序列延伸),会从模型那里得到更高的条件概率。序列的累积概率
Beam Search里的节点不只是单个token,它代表的是截至当前的整个候选序列。节点的整体概率是路径上所有条件概率的乘积(或者取对数后相加,避免数值下溢)。比如代表"我想吃火锅"的节点,其概率是P(我) * P(想|我) * P(吃|我想) * P(火锅|我想吃)。哪怕某个单个token的条件概率很高,但如果它之前的序列累积概率很低,这个节点的整体得分可能还是不如其他候选。任务特定的调整系数(可选)
在一些场景下,我们会根据任务需求调整节点的概率。比如机器翻译里常用的长度惩罚:为了避免生成过于冗长的译文,我们会给过长的序列降低概率。这时节点的最终概率就是累积概率乘以一个基于序列长度的惩罚系数。还有多样性惩罚,用来鼓励生成更多样化的输出,而不是一直重复安全的高概率序列。
需要注意的是,Beam宽度本身并不决定节点的概率——它只是一个筛选机制,每一步只保留概率最高的N个节点,让算法更高效的同时不会漏掉最有潜力的候选。
内容的提问来源于stack exchange,提问作者Jose Pablo Alvarado

