自洽性改善语言模型中的思维链推理

news2024/10/5 14:33:34

自洽性改善语言模型中的思维链推理

  • 摘要
  • 介绍
  • 对多样化路径的自洽
  • 实验
    • 实验设置
    • 主要结果
    • 当CoT影响效率时候,SC会有所帮助
    • 与现有方法进行比较
    • 附加研究
  • 相关工作
  • 总结

原文:
在这里插入图片描述

摘要

本篇论文提出了一种新的编码策略——自洽性,来替换思维链中使用的 贪婪解码(Naive greedy decoding)

Naive greedy decoding一种简单而直接的解码方式,常用于生成型任务。
在这种解码方法中,模型会根据当前的输入和已生成的部分输出,选择概率最高的下一个单词或符号作为预测结果。换句话说,它总是选择当前最可能的输出,而不考虑后续可能的选择。
虽然简单,但可能会导致生成的结果缺乏多样性,因为只关注当前可能的选项,而忽略了其他可能的选择。另外,他也无法处理一些复杂的语言结构或长期依赖关系,因为它没有考虑到全局的上下文信息。

该策略首先对一组不同的推理路径进行采样,然后通过 边缘化采样(marginalizing out the sampled reasoning paths) 的推理路径来选择最一致的答案。

marginalizing out the sampled reasoning paths
指的是采样推理路径时进行边际化处理的过程。
边际化处理指将多个推理路径的结果进行合并,得到最终的推理结果。这样可以避免对每个路径进行单独计算和评估,从而减少计算的复杂度。
具体而言,在采样推理路径的过程中,可以计算每个路径的概率,并将其乘以对应路径的结果,然后将所有路径的结果相加,并进行归一化,得到最终的推理结果。

Self-Consistency 利用 一个复杂的推理问题通常具有允许多种不同的思维方式,从而产生其独特的正确答案。
实践表明:自洽性提升了思维链提示在一系列流行的算数和常识推理基准上的表现。

介绍

本文介绍了一种新的解码方式——自洽性,来替换思维链中使用的Naive greedy decoding,以进一步完善大语言模型的推理能力。该策略首先对一组不同的推理路径进行采样,然后通过边缘化采样(marginalizing out the sampled reasoning paths)的推理路径来选择最一致的答案。问题越需要深思熟虑的思考和分析,找到答案的推理途径就越多样。

首先用CoT来提示语言模型,不采用CoT的Naive greedy decoding解码,而使用“Self-Consistency ”解码,过程如下:

首先,从语言模型的 解码器(decoder) 中采样,生成一组不同的推理路径,每条推理路径可能会产生不同的最终答案,因此需要通过边缘化采样的推理路径来确定最终答案,以在最终答案集中找到最一致的答案。

解码器(decoder)是语言模型的一部分,它负责根据语言模型的内部表示和当前的上下文生成输出文本。
解码器通常使用一种称为“生成算法”的方法,根据模型的输出概率分布选择最后可能的下一个词语或句子。这个过程可以通过不同的算法来实现,例如贪婪搜索等。解码器的目标是生成具有高度流畅和语义连贯性的句子。

这种方法类似于人类的经验,如在思考问题时,如果多种不同的思考法而得出了相同的答案,人们会更确信最终的答案是正确的。

自洽解码消除了困然贪婪解码的重复性和局部最优性,同时也减轻了单采样生成的不稳定性。

在这里插入图片描述

自洽方法比之前的方法简单得多,先前的方法要么训练额外的验证器,要么在给定额外人工注释的情况下训练(re-ranker)重新排序器以提高生成质量。

re-ranker
指对已经生成的候选列表或排序结果进行重新排序或重新打分的过程。
可以根据更多的特征或者使用更复杂的及其学习模型来重新评估和打分搜索结果,以更好满足用户需求。

相反,自洽法是一种完全无监督的,作用在现成的语言模型上,不需要额外的人工注释,避免了任何额外训练、辅助模型或微调。

自洽方法也不同于典型的集成方法(训练多个模型并聚合每个模型的输出),它的行为更像是在单个语言模型之上工作的“自集成”。

对多样化路径的自洽

人类的一个突出方面是人们思维方式的不同。人们很自然的认为,在需要深思熟虑的任务中,可能有多个方法来解决这个问题。这样一个过程可以通过语言模型解码器在语言模型中进行。

对一个数学问题来说,一个模型可以产生多种合理的反应从而都能够得到正确的答案。因为语言模型的推理并不完美,所以模型可能产生错误的推理路径或者在其中一个推理步骤中出错,但是这些解答并不太可能得到相同的答案。

所以我们假设:正确的推理过程(即使是多样的)在最终的结果中往往比不正确的过程有更大的一致性。

我们通过提出以下自洽性方法来利用这种直觉。

首先,用一组手动编写的思维链示例提示语言模型;下一步,对来自语言模型的解码器的一组候选输出进行采样,产生一套多样化的候选推理路径;最后,通过边缘化抽样推理路径和选择生成答案最一致的那个答案来聚合答案。

更具体来说:假设生成的答案ai来自固定答案集A,ai ∈A,i=1,…,m,ai即对从解码器中所采样的m个候选输出进行索引。给出一个提示和一个问题,自洽性给出了一个额外的潜在变量ri,代表在第i个输出中推理路径的记号序列,然后耦合生成(ri,ai),ri —>ai,生成的推理路径ri是可选择的,并且仅用于得到最终答案ai
在对来自模型解码器的多路采样之后,SC通过对ai进行多票通过,对ri进行边缘化,或者我们将其定义为最终答案集中最“一致”的答案。

实验

实验设置

主要结果

当CoT影响效率时候,SC会有所帮助

与现有方法进行比较

附加研究

相关工作

总结

本文采用的思想类似于,对于一个问题,人们通过不同的思考方式得到了相同的答案,这个答案往往就是正确的。

解码器通常使用一种称为“生成算法”的方法,根据模型的输出概率分布选择最后可能的下一个词语或句子。解码器的目标是生成具有高度流畅和语义连贯性的句子。

思维链中使用了贪婪解码的方法,这种方法总是选择当前概率最大的一个单词或符号作为预测结果,它总是选择当前最可能的输出,而不考虑后续可能的选择,可能会导致生成的结果缺乏多样性。

所以我们提出了更具有多样性的方法——自洽解码。

自洽解码的步骤:假设生成的答案ai来自固定答案集A,ai ∈A,i=1,…,m,ai即对从解码器中所采样的m个候选输出进行索引。给出一个提示和一个问题,SC给了一个额外的潜在变量ri,代表在第i个输出中推理路径的记号序列,然后耦合生成(ri,ai),生成的推理路径ri是可选择的,并且仅用于得到最终答案ai,在对来自模型解码器的多路采样之后,SC通过对ai进行多票通过,对ri进行边缘化,或者我们将其定义为最终答案集中最“一致”的答案。

接着文章进行了一系列实验,介绍了实验的数据集和任务、语言模型和提示以及采样的方案。并且对算数推理、常识和符号推理分别作了对照实验,对照的是使用贪婪解码的CoT。

文章又表明,当CoT性能受损时,SC会有帮助。

又将SC与现有方法进行了比较。

自洽方法不仅在四个不同规模的大型语言模型中显著提高了一系列算数和常识推理任务的准确性。除了准确性提高了之外,自洽还能用于在使用语言模型执行推理任务时收集推理依据,以及提供不准确性评估和改进语言模型输出的校准。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/768388.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【STM32】SPI屏幕刷图总结:GPIO模拟,硬件SPI,DMA+硬件SPI

文章目录 GPIO模拟SPI硬件SPI外设DMA硬件SPI外设总结 代码工程:https://github.com/liefyuan/stm32-spi-st7789-tft.git 前言 我的屏幕的分辨率是:240*320 驱动是:ST7789V 线驱动方式:四线SPI(CS,DC&#…

206. 反转链表

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1]示例 2: 输入:head [1,2] 输出:[2,1]示例 3: 输入&am…

PageObject+Python+Appium

目录 前言: 简介 功能 常用目录 配置 实例 - 第一次启动 app 实例 - 登录 代码入口实例 结果展示 前言: Page Object模式是一种常用的设计模式,用于组织和管理自动化测试脚本中的页面对象。它将页面的元素和操作封装在一个独立的类…

数据质量相关问题系列

数据质量问题是什么? 数据质量,是指在业务环境下,数据符合数据消费者的使用目的,能满足业务场景具体需求的程度。而数据质量问题是指数据集中存在无法容忍的缺陷,从而降低该数据的可靠性和可信度。简单理解就是数据很脏…

【JAVA】云HIS系统功能菜单知识(一)

一、云HIS特色 云HIS滚动消息栏:质控消息、住院时长、药库结转、患者入院、医嘱停止、新开医嘱、门诊用药不良、出院审核、药品调拨、排班提醒、药品库存、药品过期、药品临期等帮助医生、护士和相关管理人员实时接收院内消息并作出处理。 二、云HIS功能菜单 【预约…

【MySQL】MySQL事务保姆级教程(适合MySQL初学者学习)

🧑‍💻作者名称:DaenCode 🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。 😎人生感悟:尝尽人生百味,方知世间冷暖。 📖所属专栏:重…

桥接模式——连接抽象维度和实现维度

桥接模式 bridge pattern 一 定义 桥接模式,是将抽象部分与它的具体实现部分分离,使它们都可以独立地变化。它是将两个不同的维度建立联系。这两个维度通常是指:抽象维度和实现维度。 使用场景 在抽象和具体实现之间需要增加更多的灵活性…

找不到dll的问题解决,loadlibrary 126错误

症状:loadlibrary时,getlasterror返回126,表示是找不到模块错误。来到目录下看到依赖所需的dll均存在 解决办法: 1.下载ProcmonProcmom-监视进程所有的动作资源-CSDN文库https://download.csdn.net/download/gergul/880597622.运…

RocketMQ第四节(部署模式、监控面板等)

1:mq的部署模式 部署方式 | RocketMQ 参考官网。 单机模式:抗风险能力差,单机挂机没服务,单机硬盘损坏,丢失数据 多机(多master没有Slave副本): 多个master采用RAID10磁盘,不会丢…

[java安全]类加载器CommonsCollections3

文章目录 【java安全】类加载器&CommonsCollections3前言java类加载器URLClassLoader利用ClassLoader#defineClass()直接加载字节码 使用TemplatesImpl加载字节码TemplatesImpl中字节码实现AbstractTranslet类 构造未完成POCTrAXFilter类调用newTransformer()InstantiateTr…

【AI绘画Stable Diffusion】高清图像放大+面部修复+一键抠图,谈谈你可能不知道的优化技巧!

一提起后期处理,我猜你可能立马想到的就是图像放大。 今天,我要向你展示的后期处理手法,以及优化技巧。 图片放大算法 如果你常用的是秋叶大佬的整合包,那么你对"R-ESRGAN 4x"和"R-ESRGAN 4x Anime6B"应该…

FPGA单端口RAM——IP核

文章目录 前言一、RAM简介1、随机存储器IP核分类1、RAM IP核2、ROM IP核 2、RAM IP核 二、IP核配置步骤三、源码1、ram_rw驱动文件2、ip_1port_ram顶层文件3、仿真文件4、仿真波形 四、SignalTap II在线调试五、总结六、参考资料 前言 环境: 1、Quartus18.1 2、vsco…

Leetcode-每日一题【1019.链表中的下一个更大结点】

题目 给定一个长度为 n 的链表 head 对于列表中的每个节点,查找下一个 更大节点 的值。也就是说,对于每个节点,找到它旁边的第一个节点的值,这个节点的值 严格大于 它的值。 返回一个整数数组 answer ,其中 answer[…

Servlet的监听器

Servlet常用的监听器 ServletContextAttributeListener 用来感知ServlerContext对象属性变化,比如添加或删除属性变化 ServletContextListener 用来感知ServlerContext对象的创建和销毁的 ServletRequestListener 可以用来监听感知ServletRequest对象的创建和销毁的…

大语言模型(LLM)评估综述

论文地址:https://arxiv.org/abs/2307.03109 Github地址:https://github.com/MLGroupJLU/LLM-eval-survey 一 、背景 随着ChatGPT和GPT-4的推出,大型语言模型(LLM)在学术界和工业界的热度日益升高,这主要…

优雅的设计测试用例

⭐️前言⭐️ 入职以后接触到了公司的具体业务,提升了设计测试用例的能力,于是沉淀出这篇文档与大家分享。 🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁 🍉博主将持续更新学习记录收获&…

Acwing.905 区间选点(贪心)

题目 给定N个闭区间[a,bi],请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。输出选择的点的最小数量。 位于区间端点上的点也算作区间内。 输入格式 第一行包含整数N,表示区间数。 接下来N行,每行包含两个整数…

Linux内核《CPU负载计算》

目录 前言一、什么是CPU负载?二、如何计算CPU负载三、计算CPU负载的一个脚本四、top命令详解 前言 在实际的产品开发中,我们往往需要关注CPU的负载,确保程序可以长久稳定的运行,并且能够重复发挥SOC的性能。Linux中提供了一些命令…

ArrayList和LinkedList

ArrayList的注意事项 1、在ArrayList中可以放任意元素,包括空值,任何元素,且可重复添加。 2、ArrayList底层是由数组来实现数据存储的 3、ArrayList基本等同于Vector,除了ArrayList是线程不安全(执行效率高),看源码 在多线程的…

【Linux系列P7】进度条小程序的深度解剖(细节满满)

​​​​​ ​ 前言 大家好吖,欢迎来到 YY 滴 Linux系列 ,热烈欢迎! 本章主要内容面向接触过Linux的老铁,主要内容含 欢迎订阅 YY滴Linux专栏!更多干货持续更新!以下是传送门! 订阅专栏阅读&am…