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

论文笔记:Large Language Models as Analogical Reasoners

iclr 2024 reviewer打分5558

1 intro

  • 基于CoT prompt的大模型能够更好地解决复杂推理问题
    • 然而传统CoT需要提供相关的例子作为指导,这就增加了人工标注的成本
    • ——>Zero-shot CoT避免了人工标注来引导推理
      • 但是对于一些复杂的任务难以完成推理,例如code generation
  • ——>论文提出一种“归纳学习”的提示方法
    • 首先设计prompt让大模型生成出与当前问题比较相关的问题和答案,以辅助问答提出的问题

2 preliminary

  • 给定一个问题x

    • 首先通过prompt将问题映射到文本输入ϕ ( x ) 

      • zero-shotϕ ( x ) 就是x
        zero-shot CoTϕ ( x ) 是[x] think step by step
        few-shot CoT

        ϕ ( x ) 是[x]和一些带label的例子 \{(x_i,r_i,a_i)\})_{i=1}^K,即

        [x1][r1][a1].....[xK][rK][aK][x]

    • 任务目标是调用LLM解决这个问题【生成目标答案y】

      • 生成的目标答案可以包含reasoning path r【推理过程】和答案a 

3 方法

3.1 Self-Generated Exemplars

  • 让大模型从在训练阶段掌握的problem-solving knowledge中生成出相关的问题和解决方法

3.1.1 prompt举例

3.1.2 大模型给的答案

大模型先生成出3个相关的且互不相同的problem,并给出相应的解决方案,然后再对目标问题进行解决。

3.1.3 self-generated instruction的三个核心部分

  • 明确地让大模型生成相关且不同的样例。
    • 因为大模型会偏向于重复地生成一些经典的问题,导致误导
  • single-pass VS independent exemplar generation
    • 所谓single-pass,就是直接prompt,让模型生成3个样例
    • independent exemplar generation:让模型生成若干样例,然后采样3个样例,之后再重新设计prompt让大模型进行生成
    • ——>通过实验,发现single-pass效果最好
  • 生成的样例数量:3~5最佳

3.2 Self-generated Knowledge + Exemplars

  • 对于像代码生成等复杂的任务,3.1这样的案例生成方法不一定能过让模型很好地解决此类问题
    • ——>论文提出一种high-level generation方法。通过设计如下指令来实现:
  • 【让模型先思考选择什么algorithm,以及algorithm对应的tutorial】

有点类似于:论文笔记:Take a Step Back:Evoking Reasoning via Abstraction in Large Language Models-CSDN博客的后退一步?

3.2.1 prompt 案例

3.2.2 大模型给的答案

4 实验

4.1 实验任务

  • 数学问题:GSM8K、MATH等;
  • 代码生成:动态规划、图算法等复杂的编程题

4.2 效果比较

4.2.1 数学问题

4.2.2 代码生成

4.3 few-shot example 数量的异同

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 计算机网络:数据链路层 - CSMA/CD协议
  • 技术突破还是情感寄托?AI克隆人技术的伦理之辨
  • 如何使用宝塔面板搭建MySQL数据库并实现无公网IP远程访问
  • uniapp引入微信小程序版本VantUI,使用VantUI的自定义tabbar,并解决自定义tabbar出现闪烁的情况
  • 代码随想录阅读笔记-二叉树【二叉搜索树转换为累加树】
  • 用vue.js写案例——ToDoList待办事项 (步骤和全码解析)
  • React - 你使用过高阶组件吗
  • WKWebView的使用
  • 安卓远离手机app
  • 自然语言处理-词向量模型-Word2Vec
  • 如何从应用商店Microsoft Store免费下载安装HEVC视频扩展插件
  • 华为OD机试 - 堆栈中的剩余数字(Java JS Python C C++)
  • 【进阶版】基于KubeAdm搭建多节点K8S集群,并使用Rancher导入K8S集群
  • JavaScript中如何理解堆栈溢出和内存泄漏
  • 漫谈:C、C++字符串的困局
  • [数据结构]链表的实现在PHP中
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • canvas绘制圆角头像
  • CSS居中完全指南——构建CSS居中决策树
  • HTML-表单
  • Leetcode 27 Remove Element
  • LeetCode算法系列_0891_子序列宽度之和
  • orm2 中文文档 3.1 模型属性
  • 简单实现一个textarea自适应高度
  • 漂亮刷新控件-iOS
  • 如何利用MongoDB打造TOP榜小程序
  • 如何在GitHub上创建个人博客
  • 软件开发学习的5大技巧,你知道吗?
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 算法-插入排序
  • 无服务器化是企业 IT 架构的未来吗?
  • 小程序01:wepy框架整合iview webapp UI
  • 中文输入法与React文本输入框的问题与解决方案
  • postgresql行列转换函数
  • 翻译 | The Principles of OOD 面向对象设计原则
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (void) (_x == _y)的作用
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (十六)一篇文章学会Java的常用API
  • (一)认识微服务
  • (转)人的集合论——移山之道
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .NET delegate 委托 、 Event 事件,接口回调
  • .NET 中 GetProcess 相关方法的性能
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .net打印*三角形
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • .NET使用存储过程实现对数据库的增删改查
  • .NET与java的MVC模式(2):struts2核心工作流程与原理
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • @Autowired多个相同类型bean装配问题