主页

索引

模块索引

搜索页面

Greedy Decoding

  • Greedy Decoding 是序列生成任务(如机器翻译、文本生成、语音识别等)中一种简单的解码策略,用于从模型输出的概率分布中生成序列。它逐步选择每一步概率最高的选项,直到生成完成。

定义

  • Greedy Decoding 是一种逐步生成序列的方法。

  • 在每个时间步 𝑡,根据模型的概率分布 \(𝑃(𝑦_𝑡∣𝑦_{<𝑡}, 𝑥)\) ,选择概率最高的单词(或符号)作为当前的输出 \(𝑦_𝑡=arg\ max_𝑦 𝑃(𝑦∣𝑦_{<𝑡}, 𝑥)\) 生成过程继续,直到模型输出终止符(如 <EOS>)或达到预设的最大长度。

流程

  • 初始状态: 从特殊起始标记 <BOS> 开始生成。

  • 逐步选择: 在每个时间步,模型输出一个概率分布,选择最高概率的词作为输出。

  • 终止条件: 如果输出了 <EOS>,生成停止;否则继续迭代。

示例:文本生成任务:

输入句子:
The weather today is

模型在每个时间步输出的概率分布:
    Step 1: P(sunny | The weather today is)
        sunny: 0.5
        rainy: 0.3
        cloudy: 0.2
        选择: sunny (最高概率)
    Step 2: P(and | The weather today is sunny)
        and: 0.6
        but: 0.2
        or: 0.2
        选择: and (最高概率)
    Step 3: P(warm | The weather today is sunny and)
        warm: 0.4
        cold: 0.35
        humid: 0.25
        选择: warm (最高概率)
    Step 4: P(<EOS> | The weather today is sunny and warm)
        <EOS> (结束符): 0.9
        outside: 0.1
        选择: <EOS> (生成结束)

生成结果:
The weather today is sunny and warm.

示例-机器翻译任务:

输入句子:I love cats.
模型输出概率分布:
    Step 1: P(je | I love cats) = 0.8
    Step 2: P(aime | je) = 0.9
    Step 3: P(les | aime) = 0.85
    Step 4: P(chats | les) = 0.9
    生成结果:je aime les chats.

优缺点

优点:

简单高效:
    不需要额外的复杂计算,如维护多个候选序列(Beam Search)
快速解码:
    每步只需要选择一个最优词,不需要比较多个序列

缺点:

可能产生次优结果:
    Greedy Decoding 总是选择当前步的局部最优解,但可能错过全局最优序列。

缺乏多样性:
    生成的结果较为单一,不能很好地反映输入的潜在多种可能性。

应用场景

  • Greedy Decoding 常用于对生成质量要求较低或解码速度要求较高的场景,比如:实时翻译,快速文本预测

与其他解码方法的比较

  • Beam Search: Beam Search 会同时保留多个候选序列,评估全局得分,通常生成质量更高,但解码速度较慢。

  • Sampling Decoding: Sampling 随机从概率分布中采样,生成结果更有多样性,但可能偏离高概率区域。

主页

索引

模块索引

搜索页面