AI知识分享AI知识分享
✿导航
  • 人工智能
  • 神经网络
  • 机器学习
  • 深度学习
  • 强化学习
  • 自然语言处理
  • 计算机视觉
  • 大模型基础
  • 动手学深度学习
  • 理论理解
  • 工程实践
  • 应用开发
  • AI For Everyone
  • AIGC_2024大会
  • AIGC_2025大会
  • Transformer
  • Pytorch
  • HuggingFace
  • 蒸馏
  • RAG
  • 目标检测
  • MCP
  • 概念
  • 意图识别
  • 工具
✿导航
  • 人工智能
  • 神经网络
  • 机器学习
  • 深度学习
  • 强化学习
  • 自然语言处理
  • 计算机视觉
  • 大模型基础
  • 动手学深度学习
  • 理论理解
  • 工程实践
  • 应用开发
  • AI For Everyone
  • AIGC_2024大会
  • AIGC_2025大会
  • Transformer
  • Pytorch
  • HuggingFace
  • 蒸馏
  • RAG
  • 目标检测
  • MCP
  • 概念
  • 意图识别
  • 工具
  • 大模型基础

    • 语言模型基础

      • 概述
      • 基于统计方法的语言模型
      • 基于神经网络的语言模型
      • 语言模型的采样方法
      • 语言模型的评测
    • 大语言模型架构

      • 概述
      • 主流模型架构
      • Encoder-only
      • Encoder-Decoder
      • Decoder-only
      • 非Transformer 架构
    • Prompt工程

      • 工程简介
      • 上下文学习
      • 思维链
      • 技巧
    • 参数高效微调

      • 概述
      • 参数附加方法
      • 参数选择方法
      • 低秩适配方法
      • 实践与应用
    • 模型编辑

      • 简介
      • 方法
      • 附加参数法
      • 定位编辑法
    • RAG

      • 基础
      • 架构
      • 知识检索
      • 生成增强
  • 动手学深度学习

    • 深度学习基础

      • 引言
      • 数据操作
      • 数据预处理
      • 数学知识(线代、矩阵计算、求导)
      • 线性回归
      • 基础优化方法
      • Softmax回归
      • 感知机
      • 模型选择
      • 过拟合和欠拟合
      • 环境和分布偏移
      • 权重衰减
      • Dropout
      • 数值稳定性
    • 卷积神经网络

      • 模型基本操作
      • 从全连接层到卷积
      • 填充和步长
      • 多个输入和输出通道
      • 池化层
      • LeNet
      • AlexNet
      • VGG
      • NiN网络
      • GoogleNet
      • 批量归一化
      • ResNet
    • 计算机视觉

      • 图像增广
      • 微调
      • 目标检测
      • 锚框
      • 区域卷积神经网络
      • 单发多框检测
      • 一次看完
      • 语义分割
      • 转置卷积
      • 全连接卷积神经网络
      • 样式迁移
    • 循环神经网络

      • 序列模型
      • 语言模型
      • 循环神经网络
      • 序列到序列学习
      • 搜索策略
    • 注意力机制

      • 优化算法

搜索策略

在序列到序列(Seq2Seq)模型中,解码器(Decoder)在生成目标序列时,需要从巨大的词汇空间中找到概率最高的序列。由于可能的序列组合呈指数级增长,直接找到全局最优解通常是不可能的。因此,我们使用不同的搜索策略来近似最优解。

常见的搜索策略:贪心搜索(Greedy Search)、穷举搜索(Exhaustive Search / Brute Force) 和 束搜索(Beam Search)。

贪心搜索 (Greedy Search)

贪心搜索是最简单的策略。在每一个时间步 ttt,模型只选择当前条件概率最大的那个词作为输出,并将其作为下一步的输入。它一旦做出选择,就永不回退。

y^t=arg⁡max⁡wP(w∣y∗1,...,y∗t−1,x)\hat{y}_t = \arg\max_{w} P(w | y*1, ..., y*{t-1}, x) y^​t​=argwmax​P(w∣y∗1,...,y∗t−1,x)

在每个时间步,贪心搜索选择具有最高条件概率的词元:

image-20260329105236971
  • 优点:
    • 速度极快:计算复杂度最低,每个时间步只需计算一次前向传播并取最大值。
    • 内存占用小:只需要维护一条路径。
  • 缺点:
    • 容易陷入局部最优:因为它只看眼前利益(当前步概率最大),忽略了长远的全局概率。有时候选择一个当前概率稍低的词,可能会开启后续更高概率的序列,但贪心搜索无法做到这一点。
    • 缺乏多样性:生成的文本往往比较保守、重复或平庸。
  • 适用场景: 对实时性要求极高、对生成质量要求不苛刻的场景,或者作为其他复杂搜索的基线。

穷举搜索 (Exhaustive Search)

穷举搜索(也称为暴力搜索)试图遍历所有可能的序列组合,计算每一条完整序列的联合概率,最后选出概率最大的那一条。

Y^=arg⁡max⁡∗YP(Y∣X)=arg⁡max⁡∗y∗1,...,yT∏∗t=1TP(y∗t∣y1,...,y∗t−1,X)\hat{Y} = \arg\max*{Y} P(Y|X) = \arg\max*{y*1, ..., y_T} \prod*{t=1}^{T} P(y*t | y_1, ..., y*{t-1}, X) Y^=argmax∗YP(Y∣X)=argmax∗y∗1,...,yT​∏∗t=1TP(y∗t∣y1​,...,y∗t−1,X)

  • 优点:
    • 理论上的全局最优:如果算力无限且能遍历完,它一定能找到概率最高的完美序列。
  • 缺点:
    • 计算不可行:假设词汇表大小为 VVV,序列长度为 TTT,搜索空间大小为 VTV^TVT。例如 V=10,000V=10,000V=10,000,T=10T=10T=10,组合数就是 104010^{40}1040,这在现有计算机算力下是完全不可能完成的。
  • 适用场景:
    • 仅用于理论分析或极短序列(如 T=2T=2T=2 或 333)的教学演示。在实际的 NLP 任务中几乎从不使用。

束搜索 (Beam Search)

束搜索是贪心搜索和穷举搜索之间的折中方案,也是目前工业界最常用的解码策略。 它不只是一条路走到黑(像贪心),也不遍历所有路(像穷举),而是维护一个大小为 kkk(称为 Beam Width,束宽)的候选序列集合。

执行步骤

  1. 初始化:在 t=1t=1t=1 时,计算所有词汇的概率,保留概率最高的 kkk 个词,形成 kkk 条路径。
  2. 扩展:在 t=2t=2t=2 时,对这 kkk 条路径分别尝试接上词汇表中的每一个词,产生 k×Vk \times Vk×V 个候选序列。
  3. 剪枝:计算这 k×Vk \times Vk×V 个序列的累积概率,只保留总分最高的 kkk 个序列,丢弃其余的。
  4. 重复:重复上述过程直到所有路径都生成结束符()或达到最大长度。

示例:

image-20260329105611594
  • 优点:
    • 平衡了效率与质量:通过调整束宽 kkk,可以在计算成本和生成质量之间灵活权衡。kkk 越大,越接近穷举搜索的效果;k=1k=1k=1 时退化为贪心搜索。
    • 避免局部最优:允许暂时选择概率不是最高的词,以换取后续更高的整体概率。
  • 缺点:
    • 非并行化:由于每一步依赖上一步的结果,难以像编码过程那样完全并行加速。
    • 可能产生重复:在某些情况下(特别是 kkk 较大时),束搜索倾向于生成重复的短语或循环。
    • 不是全局最优:依然不能保证找到绝对的全局最优解,只是比贪心好很多。
  • 适用场景: 机器翻译、文本摘要、对话系统等大多数需要高质量生成的 Seq2Seq 任务的标准配置。

总结

特性贪心搜索 (Greedy)穷举搜索 (Exhaustive)束搜索 (Beam Search)
核心逻辑每步选最大概率遍历所有可能保留前 kkk 个最佳路径
计算复杂度O(T⋅V)O(T \cdot V)O(T⋅V) (极低)O(VT)O(V^T)O(VT) (指数级,不可行)O(T⋅k⋅V)O(T \cdot k \cdot V)O(T⋅k⋅V) (中等)
全局最优性差 (易陷局部最优)完美 (理论上的)较好 (近似全局最优)
内存消耗低极高 (爆内存)中 (取决于 kkk)
生成多样性低高 (包含所有可能)中 (受 kkk 限制)
实际应用快速原型、实时要求极高基本不用主流标准 (翻译/摘要)
最近更新: 2026/3/30 21:56
Contributors: klc407073648
Prev
序列到序列学习