论文笔记:The Expressive Power of Transformers with Chain of Thought

news2024/10/6 18:31:21

ICLR 2024 reviewer 评分 6888【但是chair 很不喜欢】

1 intro

  • 之前的研究表明,即使是具有理想参数的标准Transformer,也无法完美解决许多大规模的顺序推理问题,如模拟有限状态机、判断图中的节点是否相连,或解决矩阵等式问题
    • 这里的直觉是,Transformer缺乏递归连接,而解决这些顺序推理问题需要递归
    • 实证上,受这些结果启发的推理问题无法被最先进的变压器语言模型如ChatGPT和GPT-4所解决,且GPT-4的推理性能与问题的计算图深度负相关
    • ——>结果表明某些类型的顺序推理对变压器构成挑战,并激励了解决这一问题的扩展
  • 一种在提升Transformer顺序推理方面已经实证成功的方法是增加所谓的思考链(CoT)或草稿本
    • 这些方法允许Transformer在回答前输出一系列中间令牌,而不是在读入输入后立即回答
    • 直观上,这种方法可以在顺序推理问题上解锁更大的表现力,因为模型可以将每个中间令牌作为一种递归状态使用
  • 论文描述在生成答案前采取中间步骤的Transformer解码器的推理能力,并将其与没有中间步骤的Transformer进行比较
    • 提供了Transformer能力的上限和下限,取决于t(n):允许的中间步骤数量作为输入大小n的函数。
      • 主要关注三种情况:
        • 对数步骤(当t(n) = Θ(log n))
        • 线性步骤(当t(n) = Θ(n))
        • 和多项式步骤
  • 无中间步骤
    • 没有任何中间步骤的Transformer解码器只能解决属于相当小的电路复杂度类TC^0和相关逻辑类的问题
      • ——>基本的Transformer远非图灵完备:它们甚至无法解决比TC^0更大的类的完备问题,如模拟自动机(NC1-完备)、决定有向图连通性(NL-完备)或解决线性等式(P-完备)
  • 对数步骤
    • 通过对数数量的中间步骤,我们展示了Transformer的上界从TC0略微扩展到L
    • ——>这意味着具有对数数量中间步骤的Transformer可能获得了一些能力,但它们仍然无法解决像有向图连通性这样的NL-完备问题或解决线性等式这样的P-完备问题
  • 线性步骤
    • 线性中间步骤允许具有预投影范数的Transformer模拟自动机(NC1-完备)
      • 如果没有中间步骤(除非TC0等于NC1),否则无法完成这一任务
  • 多项式步骤
    • 通过多项式数量的解码步骤,论文展示了具有严格因果注意力和预投影范数的Transformer等同于P类。
    • 据我们所知,这是Transformer类与标准复杂度类之间的首次等价。

2 主要结论

2.1 具有中间解码的Transformer的能力

  • TIME(t(n)) 为存在一个在时间 O(t(n)) 内运行并接受语言 L 的图灵机的语言类
  • \widetilde{TIME(t(n))}为在TIME(t(n)log^kn) 中的问题类
    • 对于某些 k,这是当 t(n) ≥ n 时有意义的
  • SPACE(s(n)) 为存在一个带宽受 O(s(n)) 限制的图灵机接受语言 L 的语言类
  • CoT(t(n)) 表示一些使用 t(n) 解码步骤的变压器识别的语言集

——>具有 t(n) 步骤的Transformer与标准时间/空间复杂性类之间的以下关系

2.2 具有思考链的Transformer的能力

  • 方程(1)的左侧表明,具有 Θ(n) 步骤的Transformer解码器可以模拟如自动机或计数机这类的实时计算模型
    • 在复杂性理论的标准假设下,没有解码步骤的Transformer无法模拟所有自动机
    • ——>线性数量的解码步骤显著增强了变压器的能力
  • 同样,方程(1)的左侧意味着具有二次数量步骤的Transformer可以实现线性时间算法(用于随机访问图灵机)来解决有向图连通性问题,这是一个超出标准Transformer能力范围的问题
  • 具有多项式数量解码步骤的变压器可以解决线性等式、霍恩子句满足性和通用上下文无关识别问题,这些都是 P-完备问题,标准变压器已知无法表达

2.3 具有思考链的Transformer的局限性

  • 方程(1)的右侧确定了依赖于 t(n) 和 n 的变压器解码器中间步骤的两个上界。
  • 论文探讨了这一总结果在不同 t(n) 情形下的含义:
    • 对数步骤:具有 O(log n) 中间步骤的变压器解码器只能识别 L = SPACE(log n) 中的语言
      • ——>具有 O(log n) 中间步骤的变压器无法解决如有向图连通性这样的 NL-或 P-完备问题,就像没有中间解码步骤的变压器一样
    • 线性步骤:具有 O(n) 中间步骤的变压器解码器只能识别同时位于\widetilde{TIME(n^2)}和 SPACE(n) 中的语言
      • 由于 SPACE(n) 属于上下文敏感语言——>具有线性步骤的变压器最多可以识别上下文敏感语言
      • 结合我们的下界,这表明具有 Θ(n) 步骤的变压器解码器在乔姆斯基层级结构中处于正则语言和上下文敏感语言之间
    • 多项式步骤:
      • 如果 t(n) = O(n^c) 对于某些 c,我们得到的上限是P= \bigcup_0^\infty TIME(n^c)
      • 结合我们的下界,这表明具有多项式数量步骤的变压器解码器精确地识别 P 类问题
      • ——>多项式数量的步骤将Transformer转化为强大的推理器,尽管在实践中使用大型Transformer运行多项式数量的前向传递可能是不切实际的

后面的推导,感兴趣的可以看。。。实在是看不懂。。。

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

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

相关文章

架构师系列-搜索引擎ElasticSearch(七)- 集群管理之分片

集群健康检查 Elasticsearch 的集群监控信息中包含了许多的统计数据,其中最为重要的一项就是集群健康,它在 status字段中展示为 green(所有主分片和副本分片都正常)、yellow(所有数据可用,有些副本分片尚未…

探索设计模式的魅力:深度挖掘响应式模式的潜力,从而精准优化AI与机器学习项目的运行效能,引领技术革新潮流

​🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》 💪🏻 制定明确可量化的目标,坚持默默的做事。 挖掘响应式模式,优化AI与机器学习项目性能,引领技术新潮流 ✨机器学习界的…

phpMyadmin 设置显示完整内容

额外选项这里,默认部分内容改成完整内容 方案: 版本>4.5.4.1,修改文件:config.inc.php,添加一行代码: if ( !isset($_REQUEST[pftext])) $_REQUEST[pftext] F;

【core analyzer】core analyzer的介绍和安装详情

目录 🌞1. core和core analyzer的基本概念 🌼1.1 coredump文件 🌼1.2 core analyzer 🌞2. core analyzer的安装详细过程 🌼2.1 方式一 简单但不推荐 🌼2.2 方式二 推荐 🌻2.2.1 安装遇到…

IOS 短信拦截插件

在使⽤iOS设备的时候, 我们经常会收到1069、1065开头的垃圾短信, 如果开了iMessage会更严重, 各种乱七⼋糟的垃圾信息会时不时地收到。 从iOS11开始, ⼿机可以⽀持恶短信拦截插件了. 我们可以通过该插件添加⼀些规则通过滤这些不需要的信息. ⼀. 使⽤xcode新建⼀个项⽬ 【1】…

python爬虫-----Selenium (第二十二天)

🎈🎈作者主页: 喔的嘛呀🎈🎈 🎈🎈所属专栏:python爬虫学习🎈🎈 ✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天…

设计模式系列:责任链模式

简介 责任链模式是一种行为型设计模式,它允许你将请求沿着处理者链进行发送。每个处理者都可以对请求进行处理,或者将其传递给链上的下一个处理者。责任链模式主要应用于面向对象编程中,特别是当系统中的对象需要根据其属性来决定如何处理请…

Python程序设计 二维列表

教学案例九 二维列表 1. 成绩文件的读取 score.csv文件中记录了多门同学的编号、姓名和三门功课的成绩(逗号键分隔) 格式如下 编写程序,将文件score.csv文件中的数据放入二维列表cjlb中(注意:语文、数学、英语成绩要转换为数值类型) f1open("lbk…

ASP.NET基于BS的计算机等级考试系统的设计与实现

摘 要 随着计算机技术的发展及计算机的日益普及,基于B/S结构的考试系统与无纸化办公一样已成为大势所趋。论文详细论述了一个基于B/S结构的计算机等级考试系统的设计过程。软件采用ASP.NET 2005作开发平台,C#作编程语言,SQL Server 2005作…

sheng的学习笔记-AI-决策树(Decision Tree)

AI目录:sheng的学习笔记-AI目录-CSDN博客 目录 什么是决策树 划分选择 信息增益 增益率 基尼指数 剪枝处理 预剪枝 后剪枝 连续值处理 另一个例子 基本步骤 排序 计算候选划分点集合 评估分割点 每个分割点都进行评估,找到最大信息增益的…

绿联HDMI延长器40265使用AG7120芯片放大器方案

HDMI延长器和放大器 延长器:主要用于HDMI线的延长,有HDMI对接头方式延长,或HDMI公头加HDMI母头的HDMI线进行延长,或通过网线方式延长,早期为双网线,目前已发展为单网线,需要注意的是&#xff0…

ChatGPT-4 Turbo 今天开放啦!附如何查询GPT-4 是否为 Turbo

2024年4月12日,OpenAI在X上宣布GPT-4 Turbo开放了!提高了写作、数学、逻辑推理和编码方面的能力。另外最重要的是,响应速度更快了!! ChatGPT4 Turbo 如何升级?解决国内无法升级GPT4 Turbo的问题&#xff0…

【数据结构】泛型(分享重点)

什么是泛型&#xff1f; 泛型就是适用于许多许多类型&#xff0c;对类型参数化。 怎么创建一个泛型呢 class 泛型类名称<类型形参列表> { // 这里可以使用类型参数 } class ClassName<T1, T2, ..., Tn> { } class 泛型类名称<类型形参列表> extends 继承类…

消息中间件Kafka分布式数据处理平台

目录 一.Kafka基本介绍 1.定义 2.特点 &#xff08;1&#xff09;高吞吐量、低延迟 &#xff08;2&#xff09;可扩展性 &#xff08;3&#xff09;持久性、可靠性 &#xff08;4&#xff09;容错性 &#xff08;5&#xff09;高并发 3.系统架构 &#xff08;1&#…

oracle 19c 主备 补丁升级19.22

补丁升级流程 备库升级 备库备份$ORALCE_HOME du -sh $ORACLE_HOME ​​​​​​​ 备份目录将dbhome_1压缩 cd $ORACLE_HOME cd .. Ls tar -cvzf db_home.tar.gz db_home_1 /opt/oracle/product/19c ​​​​​​​​​​​​​​ 关闭监听关闭数据库查看sq…

【VS2019】x64 Native Tools Command Prompt for Vs 2019使用conda命令进入环境

【VS2019】x64 Native Tools Command Prompt for Vs 2019使用conda命令进入环境 安装完VS2019后&#xff0c;打开终端x64 Native Tools Command Prompt for Vs 2019&#xff0c;直接运行conda会出现‘conda’ 不是内部或外部命令&#xff0c;也不是可运行的程序 原因分析&am…

【Java虚拟机】三色标记、增量更新、原始快照、记忆集与卡表

三色标记、增量更新、原始快照、记忆集与卡表 三色标记基本原来错标、漏标错标漏标 增量更新基本原理写屏障 原始快照基本原理为什么G1使用原始快照而不用增量更新。 记忆集与卡表 三色标记 基本原来 三色标记是JVM的垃圾收集器用于标记对象是否存活的一种方法。 三色是指黑…

【opencv】示例-train_HOG.cpp 训练和测试基于支持向量机(SVM)的行人检测器

#include "opencv2/imgproc.hpp" // 包含OpenCV图像处理头文件 #include "opencv2/highgui.hpp" // 包含OpenCV高层GUI&#xff08;图形用户界面&#xff09;头文件 #include "opencv2/ml.hpp" // 包含OpenCV机器学习模块头文件 #includ…

软考 - 系统架构设计师 - 质量属性例题 (2)

问题1&#xff1a; 、 问题 2&#xff1a; 系统架构风险&#xff1a;指架构设计中 &#xff0c;潜在的&#xff0c;存在问题的架构决策所带来的隐患。 敏感点&#xff1a;指为了实现某个质量属性&#xff0c;一个或多个构件所具有的特性 权衡点&#xff1a;指影响多个质量属性…

(一)基于IDEA的JAVA基础15

还是先来说一下: Arrays工具类 Arrays是java.util包提供的工具类 提供了操作数组的方法&#xff0c;如排序,查询等。 如排序(升序)使用sort方法 语法: Arrays.sort(数组名)&#xff1b; 还是直接写来看看: public class Test01 { public static void main(String[] args)…