NeurIPS 2024 | 自我纠错如何使OpenAI o1推理能力大大加强?北大、MIT团队给出理论解释

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

neurips 2024 | 自我纠错如何使openai o1推理能力大大加强?北大、mit团队给出理论解释

AIxiv专栏是本站发布学术、技术内容的栏目。过去数年,本站AIxiv专栏接收报道了2000多篇内容,覆盖全球各大高校与企业的顶级实验室,有效促进了学术交流与传播。如果您有优秀的工作想要分享,欢迎投稿或者联系报道。投稿邮箱:liyazhou@jiqizhixin.com;zhaoyunfeng@jiqizhixin.com

自我纠错(Self Correction)能力,传统上被视为人类特有的特征,正越来越多地在人工智能领域,尤其是大型语言模型(LLMs)中得到广泛应用,最近爆火的OpenAI o1模型[1]和Reflection 70B模型[2]都采取了自我纠正的方法。

传统的大语言模型,因为在输出答案的时候是逐个Token输出,当输出长度较长时,中间某些Token出错是必然发生。但即使LLM后来知道前面输出的Token错了,它也得用更多错误来“圆谎”,因为没有机制让它去修正前面的错误。

而OpenAI o1在“慢思考”也就是生成Hidden COT的过程中,通过分析OpenAI官网给出的Hidden COT例子可以发现,在解决字谜问题的思考过程中,o1首先发现了每两个连续的明文字母会映射到一个秘文字母,于是便尝试使用奇数字母来构建明文,但是经过验证发现并不合理(Not directly);接着又重新修正答案最终成功解出字谜。

NeurIPS 2024 | 自我纠错如何使OpenAI o1推理能力大大加强?北大、MIT团队给出理论解释

                               图1 OpenAI o1 官网示例(部分Hidden CoT)

Reflection 70B的关键技术也包括错误识别错误纠正。他们用到了一种名为 Reflection-Tuning(反思微调) 的技术,使得模型能够在最终确定回复之前,先检测自身推理的错误并纠正。在实际的执行过程中,这会用到一种名为思考标签(thinking tag)的机制。模型会在这个标签内部进行反思,直到它得到正确答案或认为自己得到了正确答案。

可图大模型 可图大模型

可图大模型(Kolors)是快手大模型团队自研打造的文生图AI大模型

可图大模型 32 查看详情 可图大模型

频频应用于大语言模型的自我纠错技术为何有效?为什么纠错过程可以让模型把原本答错的问题重新答对?

为了探究这一问题,北大王奕森团队与MIT合作,从理论上分析了大语言模型自我纠错能力背后的工作机理。

NeurIPS 2024 | 自我纠错如何使OpenAI o1推理能力大大加强?北大、MIT团队给出理论解释

论文题目:A Theoretical Understanding of Self-Correction through In-context Alignment

论文地址:https://openreview.net/pdf?id=OtvNLTWYww
代码地址:https://github.com/yifeiwang77/Self-Correction

作者团队将自我纠错的过程抽象为对齐任务,从上下文学习(In-context learning)的角度对自我纠错进行了理论分析。值得一提的是,他们并没有使用线性注意力机制下的线性回归任务进行理论分析,而是使用真实世界LLM在用的softmax多头注意力机制的transformer结构,并利用Bradley-Terry 模型和 Plackett-Luce 模型(LLM对齐的实际选择,用于RLHF和DPO)设计对齐任务进行研究。受理论启发,他们提出了一种简单的自我纠错策略–上下文检查(Check as Context),并通过实验,在消除大语言模型中存在的潜在偏见以及防御越狱攻击中效果显著。

理论分析:自我纠错实际上是一种上下文对齐?

不同于类似监督学习的标准上下文示例(请求,回答),自我纠错示例可以形成一个三元组形式(请求,回答,奖励),这类似于通过奖励指示好坏样本的 LLM 对齐。因此,作者团队提出将自我纠错形式化为一种“上下文对齐”(In-context Alignment),即通过提供一系列自我纠错步骤的上下文,优化LLM的最终输出,以获得更高的奖励。
对齐的过程通常包括:对于问题,收集个不同的模型回答,然后由人类或评估模型(在本文中,评估模型即该 LLM 本身)对这  个回答给出排序偏好。接着,使用一般的对齐模型(如Bradley-Terry (BT,n=2) or Plackett-Luce (PL loss, general n))进行建模:
NeurIPS 2024 | 自我纠错如何使OpenAI o1推理能力大大加强?北大、MIT团队给出理论解释
其中为奖励模型。
针对transformer模型,作者采用了带有softmax多头注意力机制的transformer结构,其前向传播更新可以分为两部分
多头注意力(MHSA)层:NeurIPS 2024 | 自我纠错如何使OpenAI o1推理能力大大加强?北大、MIT团队给出理论解释
FFN层:NeurIPS 2024 | 自我纠错如何使OpenAI o1推理能力大大加强?北大、MIT团队给出理论解释
奖励函数  被设置为负均方误差(MSE)损失,即:NeurIPS 2024 | 自我纠错如何使OpenAI o1推理能力大大加强?北大、MIT团队给出理论解释
在该设置下,参数的梯度下降可等价于对数据的更新:
NeurIPS 2024 | 自我纠错如何使OpenAI o1推理能力大大加强?北大、MIT团队给出理论解释
作者证明了多层transformer(包含3-head softmax attention和relu激活函数的FFN)可以利用自我纠错样本生成更优奖励的回答。具体而言,作者证明了存在模型权重,使得transformer可以通过在前向传播的过程中执行对其内部奖励模型参数的梯度下降,来生成更符合对齐目标的更优回答
NeurIPS 2024 | 自我纠错如何使OpenAI o1推理能力大大加强?北大、MIT团队给出理论解释
这是首次在理论上表明 LLM 可以在上下文中实现对齐的分析。该理论适用于多种自我纠错方法,因为评估可以来自人类、外部验证者或 LLM 本身。NeurIPS 2024 | 自我纠错如何使OpenAI o1推理能力大大加强?北大、MIT团队给出理论解释
图2 关于上下文对齐的验证实验,分别涉及TF和GD的比较(a)、不同奖励噪声p的影响(b)、模型深度的影响(c)、以及不同注意力机制的效果(d)、(e)、(f)。
作者也通过设置验证实验来检验其理论导出的种种结论,以及各个 transformer 结构模块对 LLM 执行上下文对齐能力的影响,作者发现了很多有趣的结论:
通过观察比较LLM在执行上下文对齐时前向传播的损失与梯度下降的损失曲线,LLM执行上下文对齐时的前传行为与梯度下降损失曲线几乎相同。(图2(a))
评价的质量直接影响自我纠错的质量(图2(b))。
对多样本的排序需要更深的模型层数,在达到一定深度后(15层),增加更多的层数并不能带来更高的收益。(图2(c))
Softmax注意力机制对从评价中分析回答优劣排序至关重要,而linear注意力则做不到这一点。具体来说,softmax 注意力机制可以有效地选取最优回答  并为各样本生成加权平均所需的权重。(图2(d))
多头注意力机制对token角色的区分很重要。具体而言,多头注意力机制可以将生成的回答与正样本拉近,与负样本拉远。实验表明,3个attention head是上下文对齐任务中最优选择。(图2(e))
FFN对于token角色的转变很重要。在经过一个MHSA层后,FFN可以将上一轮的正样本屏蔽掉,从而使次优样本变成下一轮迭代的最优样本。(图2(f))

自我纠错策略:上下文检查

作者使用上下文检查(Check as Context,CaC)作为LLM完成自我纠错的方法,在两个现实世界的对齐任务中探索了自我纠错:缓解社会偏见和防范越狱攻击。
NeurIPS 2024 | 自我纠错如何使OpenAI o1推理能力大大加强?北大、MIT团队给出理论解释
                                    图3 BBQ数据集上使用CaC的示例。
具体而言,首先对模型请求问题获得回答初始回答,然后对该回答进行评估,得到奖励。之后将初始回答,评估送入上下文,并重新请求问题,得到改正后的回答。此过程可多次重复以迭代改进回答,最终以最后一轮的模型回答作为模型的最终输出。

消除LLM社会偏见

本文使用 BBQ(Bias Benchmark for QA)数据集,在 vicuna-7B 和 Llama2-7b-chat 模型上测试了 CaC 方法的效果。此外,还在 BBQ 上研究了模型大小、评估质量和纠错轮数对纠错效果的影响。主要结论如下:
多数情况下,自我纠错后的正确率高于原正确率(图4)
正确率提升与自我评估的准确率高度相关(图4(c): ),甚至呈线性关系(图5(a))。
采用不同的评价方式效果依次提升:仅使用对/错评价 。这是因为 CoT 不仅能提高评价准确性,还能为模型提供额外的自然语言信息。(图5(b))
更大的模型有更好的纠错能力(图5(c)(d))
当评价的正确率足够高时,更多的纠错轮数可以带来更好的纠错效果。(图5(e))
NeurIPS 2024 | 自我纠错如何使OpenAI o1推理能力大大加强?北大、MIT团队给出理论解释
                                          图4 CaC对于不同种类的偏见的修正
NeurIPS 2024 | 自我纠错如何使OpenAI o1推理能力大大加强?北大、MIT团队给出理论解释
                                    图5 BBQ上关于模型大小、评估质量以及纠错轮数的消融实验
同时,在防御越狱攻击的实验中,CaC也是所有测试的防御手段中最低的。
更多文章细节,请参考原文:https://openreview.net/pdf?id=OtvNLTWYww
参考资料:
[1] https://openai.com/index/introducing-openai-o1-preview/
[2] https://reflection70b.com/

以上就是NeurIPS 2024 | 自我纠错如何使OpenAI o1推理能力大大加强?北大、MIT团队给出理论解释的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/613603.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
vue下载文件保存到本地教程
上一篇 2025年11月11日 02:43:37
抖音怎么查找特定的背景音乐_抖音背景音乐搜索方法
下一篇 2025年11月11日 02:43:40

相关推荐

  • 如何在Java中定义一个包含参数的方法

    定义Java带参方法需明确访问修饰符、返回类型、方法名及参数列表。例如:public static int add(int a, int b) { return a + b; },调用时传入对应类型参数,如add(5, 3)输出结果8,参数类型必须匹配,否则编译错误。 在Java中定义一个包含参数的…

    2026年9月20日
    100
  • 灵绘AI如何生成3D效果_灵绘AI3D效果生成的实用教程

    启用灵绘AI的3D视图增强模式,输入含景深等关键词的提示词,调整视角与深度参数并启用Z轴分层,生成后使用光影滤镜增强立体感,最后导出为WebP 3D或OBJ格式以保留深度信息。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 如果您希望使用灵…

    2026年9月20日
    000
  • mysql如何优化like模糊查询

    优先使用前缀匹配并建立索引,避免前置通配符导致全表扫描;对大字段采用全文索引或外部搜索引擎如Elasticsearch;合理设计覆盖索引,减少SELECT *,提升查询效率。 在MySQL中,LIKE模糊查询虽然常用,但容易导致性能问题,特别是在数据量大的情况下。优化的关键在于减少全表扫描、提升索引…

    2026年9月20日
    000
  • 为什么VSCode的CSS代码提示不全?

    答案:VSCode CSS提示不全通常由配置或环境问题导致。1. 确保文件语言模式为CSS并正确关联扩展名;2. 更新VSCode以支持现代CSS特性,自定义属性需插件辅助;3. 安装IntelliSense、Tailwind或PostCSS等插件增强提示功能;4. 检查settings.json中…

    2026年9月20日
    000
  • 如何在Linux中自动重启 Linux systemd自动恢复

    答案:通过配置systemd服务文件中的Restart、RestartSec、WatchdogSec及StartLimitInterval等参数,可实现Linux服务的自动重启与看门狗监控,并避免无限重启循环,提升系统稳定性。 在Linux中,可以通过systemd来实现服务的自动重启,确保服务在崩…

    2026年9月20日
    000
  • 怎样在VSCode中查看Git提交历史?

    VSCode通过内置源代码管理视图查看Git提交历史,点击左侧图标或使用快捷键Ctrl+Shift+G进入;2. 在COMMIT输入框下方点击“…”菜单选择View Commit History可查看完整提交记录;3. 右键文件选择Git: View File History可查看单个文…

    2026年9月20日
    100
  • 电脑开机要按F1因BIOS设置错误通过恢复默认设置解决

    开机需按F1主因是BIOS检测到配置错误或硬件信息丢失,常见于CMOS电池没电、硬盘模式设置错误等;恢复默认设置可解决多数问题。 电脑开机提示按F1才能进入系统,多数情况是BIOS设置异常导致的。最常见的原因是CMOS电池没电、硬盘模式设置错误、软驱或启动设备配置问题等。这类问题通常可以通过恢复BI…

    2026年9月20日
    100
  • 428万行业最强跑分!荣耀高管:Magic8同是骁龙 大有不同

    10月16日消息,昨晚荣耀magic8系列正式亮相,全系搭载第五代骁龙8至尊版处理器,这款芯片目前处于行业性能巅峰地位。 该处理器采用台积电第三代3nm工艺打造,在相同性能下功耗降低10%。其CPU架构为2+6的八核设计,其中超大核主频高达4.6GHz,创下移动平台新纪录,大核频率则为3.62GHz…

    2026年9月20日
    100
  • Mockito中利用自定义ArgumentMatcher实现集合内参数匹配

    mockito并未提供直接的`in()`参数匹配器来判断方法参数是否包含在指定集合中。本文将详细介绍如何利用`intthat`(或`argthat`)结合lambda表达式或自定义匹配器,灵活实现对方法参数是否属于某个集合的条件匹配,从而在测试存根(stubbing)或验证(verification…

    2026年9月20日
    000
  • Java中将包含嵌套列表的对象列表扁平化为单一元素列表的转换技巧

    本文探讨了在java中如何将一个包含嵌套列表的对象列表进行转换,使其生成一个新的列表,其中每个对象内部的嵌套列表只包含一个元素。文章详细介绍了三种实现方式:基于java 7及以前版本的传统循环方法、利用java 8至java 15的stream api结合`flatmap`操作,以及java 16及…

    2026年9月20日
    200
  • VSCode怎么查看NPM版本_VSCode NPM版本查询教程

    在VSCode中查看NPM版本,需打开集成终端并输入npm -v或npm –version。1. 使用快捷键Ctrl + (Windows/Linux)或Cmd + (macOS)打开终端;2. 输入命令npm -v执行;3. 终端将显示当前NPM版本号,如8.19.2。该方法可快速验证…

    2026年9月20日
    000
  • 如何为VSCode配置C++开发环境?

    答案:配置VSCode的C++环境需安装MinGW-w64编译器并添加到PATH,安装C/C++和可选Code Runner扩展,创建.c_cpp_properties.json、tasks.json和launch.json文件以配置编译器路径、编译任务和调试设置,最后通过编译运行测试代码验证配置成…

    2026年9月20日
    100
  • MySQL索引是什么_如何通过索引提升查询性能?

    MySQL索引是什么_如何通过索引提升查询性能?MySQL索引是什么_如何通过索引提升查询性能?MySQL索引是什么_如何通过索引提升查询性能?MySQL索引是什么_如何通过索引提升查询性能?

    索引通过排序+查找结构提升查询速度,适合加索引的字段包括where条件、join连接、order by和group by中的字段,但唯一值少、数据量小或频繁更新的字段不适合。常见误区有索引失效、模糊查询左侧通配符、联合索引顺序错误、冗余索引等。可通过explain命令查看索引使用情况,定期清理无用索…

    2026年9月20日 用户投稿
    000
  • Mockito ArgumentMatcher:优雅实现参数集合包含性验证

    本文探讨了在mockito中,当需要验证方法参数是否包含在特定集合中时,如何克服标准`argumentmatchers`的限制。通过利用`argumentmatchers.intthat()`(或`argthat()`)结合lambda表达式,可以灵活地实现自定义的参数匹配逻辑。文章还介绍了如何将此…

    2026年9月20日
    000
  • Linux怎么删除用户的某个附属组

    Linux怎么删除用户的某个附属组Linux怎么删除用户的某个附属组Linux怎么删除用户的某个附属组Linux怎么删除用户的某个附属组

    删除Linux用户附属组需先用gpasswd -d移除用户,再用usermod -G更新组列表,确保组定义与用户权限一致,避免权限不一致风险。 删除Linux用户某个附属组,其实就是修改用户所属的组列表。关键在于理解Linux用户组的概念以及如何安全地修改用户账户信息。 解决方案 使用 gpassw…

    2026年9月20日 用户投稿
    000
  • VSCode如何与Git Submodules或SVN等非Git版本控制系统协作?

    VSCode原生支持Git,对Submodules需手动初始化并提交指针,协作时推荐结合终端;通过安装svn-scm插件可支持SVN,依赖本地svn工具,混合项目应避免路径冲突,建议明确分工、合理配置忽略规则,使用集成终端处理复杂操作,确保工具链完整与插件更新,以实现多版本控制系统协同。 VSCod…

    2026年9月20日
    100
  • 绝境北方兑换码有什么 绝境北方最新2025兑换码分享

    绝境北方最新通用兑换码有:north888、viking2025、ship666等等,可在游戏内商城直接兑换,获得黄金龙头船首像、1000铁与建造速度+15%等丰厚奖励,限时有效先到先得,也可在修改器中享受更多福利。 享受无限物品|游戏作弊器: 绝境北方最新2025兑换码如下: NORTH888:兑…

    2026年9月20日
    500
  • Java中通过PKCS12证书实现OkHttp客户端认证的POST请求

    本教程详细介绍了如何在java应用中,利用okhttp库执行需要客户端证书认证的post请求。我们将重点讲解如何加载pkcs12格式的证书文件,配置keystore和keymanagerfactory,初始化sslcontext,并将其集成到okhttpclient中,以确保请求的安全性和认证的正确…

    2026年9月20日
    000
  • 如何使用Laravel队列(Queues)提升性能?

    是的,laravel队列可以显著提升应用性能。通过将耗时任务推入队列异步处理,用户可以立即得到响应,从而提高应用的响应速度和稳定性。例如,将邮件发送任务推入队列后,用户下单时无需等待邮件发送即可完成操作,减轻了服务器负载。 使用Laravel队列(Queues)提升性能?这是一个非常好的问题!在我的…

    2026年9月20日
    100
  • 百度AI如何提升企业运营效率_百度AI企业运营效率提升策略

    通过引入百度AI技术优化企业运营,1. 部署智能电话客服系统,利用语音识别与UNIT技术实现自动应答;2. 实施智能语音质检,将通话转文本并分析情绪与风险;3. 启用人脸识别考勤,提升安全性与效率;4. 构建OCR单据识别体系,实现信息自动录入,全面提升电销、客服与办公协同效率。 ☞☞☞AI 智能聊…

    2026年9月20日
    100

发表回复

登录后才能评论
关注微信