当前位置: 首页 > ai >正文

序列搜索策略

序列搜索策略

贪心搜索(greedy search)

  • 在大语言模型中, 对于输出序列的每一时间步t′, 我们都将基于贪心搜索从Y中找到具有最高条件概率的词元,即:
    y t ′ = argmax ⁡ y ∈ Y P ( y ∣ y 1 , … , y t ′ − 1 , c ) y_{t^{\prime}}=\underset{y \in \mathcal{Y}}{\operatorname{argmax}} P\left(y \mid y_1, \ldots, y_{t^{\prime}-1}, \mathbf{c}\right) yt=yYargmaxP(yy1,,yt1,c)
    一旦输出序列包含了“”或者达到其最大长度限制,则输出完成。

    即将当前时刻预测概率最大的词输出

    image-20250602223404094

  • 贪心搜索是效率最高的,但是贪心搜索很可能不是最优的,可以看下面的例子

    在时间步2的时候,选择具有第二高条件概率的词元“C”(而非最高条件概率的词元)

    image-20250602223529773

    因为我们在第二步没有选择最优,导致后续的预测词元概率发生了变化,从而形成了更好的结果


穷举搜索(exhaustive search)

  • 如果目标是获得最优序列, 我们可以考虑使用穷举搜索(exhaustive search): 穷举地列举所有可能的输出序列及其条件概率, 然后计算输出条件概率最高的一个。

  • 最优的算法:对所有可能的序列,计算他的概率,然后选取最好的额那个

  • 如果输出字典大小为n,序列最长为T那么我们需要考察 n T n^T nT个序列,假设

    n = 10000 T = 100 则 n T = 10 50 n^T = 10^{50} nT=1050

    计算上是不可行的

  • 所以最好我们需要有个折中的方法

集束搜索(beam search)

  • 束搜索(beam search)是贪心搜索的一个改进版本。 它有一个超参数,名为束宽(beam size)k。 在时间步1,我们选择具有最高条件概率的k个词元。 这k个词元将分别是k个候选输出序列的第一个词元。 在随后的每个时间步,基于上一时间步的k个候选输出序列, 我们将继续从k|Y|个可能的选择中 挑出具有最高条件概率的k个候选输出序列。下面是k=2,字典长度为5时候的示例

    image-20250602224347302

  • 集束搜索时间复杂度
    O ( k n T ) O(knT) O(knT)

  • 每个候选的最终分数为:
    1 L α log ⁡ P ( y 1 , … , y L ∣ c ) = 1 L α ∑ t ′ = 1 L log ⁡ P ( y t ′ ∣ y 1 , … , y t ′ − 1 , c ) \frac{1}{L^\alpha} \log P\left(y_1, \ldots, y_L \mid \mathbf{c}\right)=\frac{1}{L^\alpha} \sum_{t^{\prime}=1}^L \log P\left(y_{t^{\prime}} \mid y_1, \ldots, y_{t^{\prime}-1}, \mathbf{c}\right) Lα1logP(y1,,yLc)=Lα1t=1LlogP(yty1,,yt1,c)
    通常 α = 0.75 \alpha=0.75 α=0.75,其中L是最终候选序列的长度, α通常设置为0.75。 因为一个较长的序列在 的求和中会有更多的对数项, 因此分母中的Lα用于惩罚长序列。

  • 总结:集束搜索在每次搜索时保存K个最好的候选。当k=1时时贪心搜索,当k=n时时穷举搜索

http://www.xdnf.cn/news/10628.html

相关文章:

  • 探秘 Minimax:AI 领域的创新先锋
  • CangjieMagic 智能体框架嵌入式系统实测:以树莓派 4B 为例
  • 【Redis技术进阶之路】「系统架构系列中篇」高可用之Master-Slave主从架构的复制问题(分析旧版点制功能)
  • rabbitmq Direct交换机简介
  • K-匿名模型
  • 强类型语言和弱类型语言
  • 振动力学:有阻尼单自由度系统
  • 极客时间:用 FAISS、LangChain 和 Google Colab 模拟 LLM 的短期与长期记忆
  • RNN循环网络:给AI装上“记忆“(superior哥AI系列第5期)
  • 房屋租赁系统 Java+Vue.js+SpringBoot,包括房屋类型、房屋信息、预约看房、合同信息、房屋报修、房屋评价、房主管理模块
  • 洛谷-P3912素数个数题解
  • 模型训练的“隐形杀手”——过拟合!全面解析与实用应对方案
  • MySQL中的锁
  • 【nssctf第三题】[NSSCTF 2022 Spring Recruit]easy C
  • 29 C 语言内存管理与多文件编程详解:栈区、全局静态区、static 与 extern 深度解析
  • Codeforces Round 1026 (Div. 2) C. Racing
  • Java内存模型与互斥锁
  • Python打卡训练营Day43
  • 《多状态DP:状态设计与状态转移方程速成指南》​
  • Leetcode 1136. 并行课程
  • MySQL语法练习 - 基础DDL/DML/DQL/DCL练习
  • 监督学习 vs 无监督学习:AI两大学习范式深度解析
  • Java内部类详细教程
  • 06.MySQL数据库操作详解
  • Retrievers检索器+RAG文档助手项目实战
  • 字符串加解密
  • 配置刷新技术
  • 【Python 进阶3】常见的 call 和 forward 区别
  • JavaSE 字符串:深入解析 String、StringBuilder与 StringBuffer
  • 第十章:Next的Seo实践