o1方法性能无上限!马腾宇等证明:推理token够多就能解决问题
qiyuwang 2024-11-02 14:23 13 浏览 0 评论
克雷西 发自 凹非寺
量子位 | 公众号 QbitAI
OpenAI用o1开启推理算力Scaling Law,能走多远?
数学证明来了:没有上限。
斯隆奖得主马腾宇以及Google Brain推理团队创建者Denny Zhou联手证明,只要思维链足够长,Transformer就可以解决任何问题!
通过数学方法,他们证明了Transformer有能力模拟任意多项式大小的数字电路,论文已入选ICLR 2024。
用网友的话来说,CoT的集成缩小了Transformer与图灵机之间的差距,为Transformer实现图灵完备提供了可能。
这意味着,神经网络理论上可以高效解决复杂问题。
再说得直白些的话:Compute is all you need!
CoT让Transformer运行更高效
首先需要说明的是,“可以解决任何问题”是一个通俗化的表述,严格来说,论文的核心结论是思维链(CoT)能够显著提升Transformer的表达能力。
作者首先通过理论分析,提出对于固定深度、多项式宽度、常数精度的Transformer模型,如果不使用CoT,其表达能力将受限于AC0问题类别。(AC0是一类可以在并行计算中高效解决的问题,但不包括需要复杂序列化计算的问题。)
在固定指数位的情况下,固定深度、对数精度的Transformer模型即使引入了正确的舍入操作,其表达能力也仅限于TC0问题类别。
但当引入CoT时,固定深度、常数精度的Transformer模型就能够解决任何由大小为T的布尔电路解决的问题。
这表明CoT显著扩展了模型的表达能力,使其能够处理更复杂的问题。
为了验证理论分析,论文在四个核心问题上进行了实验,考虑了基础(base)、CoT和提示(hint)三种不同的训练设置:
- 模运算(Modular Addition):并行计算问题,论文展示了CoT如何提高模型在这个问题上的准确性;
- 置换群组合(Permutation Composition):需要序列化计算的问题,论文证明了CoT在解决这类问题上的有效性;
- 迭代平方(Iterated Squaring):典型的序列化计算问题,论文展示了CoT如何使模型能够有效地解决这类问题;
- 电路值问题(Circuit Value Problem):这是一个P完全问题,论文证明了即使是在模型深度较低的情况下,CoT也能使模型能够解决这类问题。
首先在可并行的模运算问题上,输入是若干个模7的数,输出是它们的模7和。
实验结果表明,所有设置下的Transformer都能够学习模加;但在较长序列(如n=16)上,CoT的优势更加明显。
这说明即使是可并行问题,CoT也能带来一定的效率提升。
在内在串行的置换群复合任务上,输入是S_5置换群中的若干个置换,输出是它们的复合结果。
结果,CoT提高了低深度模型的准确性——
不使用CoT的Transformer即使深度较大也难以学习该任务(准确率约20%),而使用CoT后即使是1层Transformer也能轻松学习(准确率100%)。
对于迭代平方任务,输入是一个质数p、一个整数r和若干个“^2”符号,输出是r^(2^k) mod p。
实验结果与置换群复合任务相似:不使用CoT时。即使16层Transformer也难以学习;而使用CoT后。1层Transformer就能完美求解。
这再次验证了理论分析,即迭代平方是内在串行的,需要CoT来提供必要的计算能力。
最后的电路值问题,输入是一个随机布尔电路的描述,输出是电路的最终输出值。
实验结果表明,在基准设置下,4层Transformer的准确率约为50%,8层约为90%,16层接近100%;
而使用CoT后,1层Transformer就能达到接近100%的准确率。
这验证了理论结果,即CoT赋予了Transformer任意电路的模拟能力,使其能够解决电路值问题这一P完全问题。
CoT+Transformer模拟门电路
除了上述实验,作者还对以下结论进行了理论证明:
对于任意一个可以用多项式大小的布尔电路计算的函数,都存在一个仅有常数层数的Transformer,可以通过足够多步数的思维链(CoT)来模拟电路的计算过程,从而计算出这个函数。
证明的思路是先将布尔电路视为一系列逻辑门的组合,然后利用Transformer中的位置编码为每个逻辑门及其状态分配一个独特的表示,进而通过逐步计算来模拟整个电路的执行过程。
这个证明的关键,在于利用CoT来逐步模拟电路中每个门的计算。
具体而言,对于一个有T(n)个门的电路,作者设计了一个4T(n)个token的输入序列。
这个序列包含了电路的完整描述,每个门用4个连续的token表示:门类型、两个输入门的索引和当前门的索引,并用输入序列中的第一个token指示了电路的输入值。
然后,作者构造了一个常数深度的Transformer,这个Transformer的嵌入维度只需要O(log n),就足以对T(n)个门进行编码。
在第一层,Transformer读取输入序列,并将电路的描述信息存储到其位置嵌入中。
接下来是关键的CoT步骤。Transformer逐步生成4T(n)个token的思维链,每4个token对应电路中的一个门。
对于第i个门,Transformer执行以下操作:
- 利用注意力机制获取两个输入门的计算结果:如果输入门是电路的输入,可以直接从输入序列中读取;如果输入门是前面计算过的中间结果,则可以从思维链的对应位置读取。
- 根据门的类型(与、或、非等),用前馈网络计算当前门的输出。
- 将当前门的输出写回到思维链中,作为后续门的输入。
通过这一过程,Transformer逐步模拟了电路中每一个门的计算,并将中间结果存储在思维链中。在生成完整个思维链后,最后一个门的输出就对应了电路的最终输出。
也就是说,通过将电路“展开”为一个长度为O(T(n))的思维链,即使固有深度很浅,Transformer也可以逐步执行电路中的计算。
在此基础上,作者进一步证明,具有O(T(n))长度CoT的常数深度Transformer,可以模拟任意T(n)大小的电路,因此其计算能力等价于多项式大小电路。
理论打通了,实际可行吗?
能够模拟电路的计算过程,意味着CoT+Transformer能够解决可计算问题。
同时,这也说明只要有足够的CoT思考时间,大模型不需要扩展尺寸也能解决复杂问题。
有专业人士用一篇长文解释了CoT和图灵完备性之间的关系:
如果没有CoT,Transformer仅限于执行AC0复杂度类中的可并行任务;
CoT推理从根本上改变了这一格局,它使Transformer能够通过中间推理token处理串行计算,从而增加计算深度并允许模型模拟AC0以外的更深层次的电路。
这一进步将Transformer带入了P/poly领域,即多项式大小电路可以解决的问题类型。
理论上,只要有足够的CoT步骤,Transformer就可以模拟多项式大小电路可以执行的任何计算,从而缩小了Transformer与图灵机之间的差距。
但实际限制仍然存在,例如有限的上下文窗口和计算资源。要充分利用这一潜力,需要仔细的模型设计和优化。
还有人把这项成果和OpenAI的“草莓”,也就是爆火的超强模型o1联系到了一起——
草莓同样也是思考的时间越长,准确性越高,按照这个思路,只要有好的模型,就能解决人类面临的一系列难题。
甚至有人表示,如果这项研究是真的,那么AGI就已经在到来的路上了……
不过也有人认为,这只是一个理论性的结果,距离实际应用还存在很大差距。
即使抛开理论与实际条件的不同,时间和成本问题就是一个重要的限制因素。
而且实验的一个假设是模型权重被正确设置,但实际模型的训练很难达到这一程度。
还有人指出,这种模拟门电路运算,并不是大模型实际学习和工作的方式。
换言之,如何将实际问题用布尔电路表示,是Transformer从能解决运算问题到能够解决实际问题的一个关键。
但现实中,诸如“如何治疗癌症”这样的问题,很难以电路的形式去描述。
虽然距离实际应用还有一系列问题要解决,但这项研究至少揭开了CoT的巨大潜力。
作者简介
本论文一共有四名作者,全部都是华人。
按署名顺序,第一位作者为清华姚班校友李志远,是普林斯顿博士、马腾宇的博士后,现为芝加哥丰田技术学院(TTIC)的助理教授。
第二位作者是Hong Liu,也是马腾宇的博士生,现在在读,本科就读于清华,曾获得特等奖学金及优秀毕业生荣誉。
第三位是Google Brain推理团队创建者Denny Zhou,中科院博士,2017年加入Google前在微软担任了11年的高级研究员。
最后是2021年斯隆奖得主、斯坦福大学助理教授马腾宇,他是姚班校友、陈丹琦的同班同学。
论文地址:
https://arxiv.org/abs/2402.12875
参考链接:
[1]https://x.com/denny_zhou/status/1835761801453306089
[2]https://www.reddit.com/r/singularity/comments/1fiemv4/denny_zhou_founded_lead_reasoning_team_at_google/
— 完 —
量子位 QbitAI · 头条号签约
关注我们,第一时间获知前沿科技动态
相关推荐
- 在Word中分栏设置页码一页两个页码的技巧!
-
施老师:在正常情况下,Word文档中一页只会出现一个页码。但在某种情况下,比如说:用了分栏后,我们希望一页中出现两个页码,那应该如何实现呢?今天,就由宁双学好网施老师来为大家讲一下,利用域来实现一页两...
- 如何在关键时刻向上自荐(如何在关键时刻做出正确选择)
-
抓住机会,挺身而出有种时刻叫“关键时刻”,关键时刻,作为一个认为自己有能力的、训练有素的人,应该考虑挺身而出,甚至应该不考虑就挺身而出。...
- WPS Word:跨页的文档表格,快速调整为一页。#Excel
-
如何快速将跨页的文档表格调整为一页?需要根据两种情况分别处理。如果表格所有行的行高相同,调整为一页的方法有两种。第一种方法是将光标移动到表格内,然后将鼠标移动到表格右下角的方框处,按住鼠标左键向上拖动...
- word文档插入下一页分节符(word下一页分页符)
-
在word文档中,对文档页面进行分页是特别常见的操作,其中的下一页分节符也是用得比较多的,但是一些人不太清楚在哪里设置,也不知道它具体能实现的功能是什么。接下来看看如何在word文档中插入下一页分节符...
- word文档如何设置某一页纸张的方向
-
word文档页面方向有横向和纵向,纵向是默认的纸张方向,有时我们需要将页面设置为横向,或只设置其中某一页方向,应该怎么操作呢?一起来看看下面的详细介绍第一步:...
- word怎么单独设置一页为横向(word2019怎样设置单独一页为横向)
-
word里面其中一页可以改为横向的吗?经过实际操作发现是完全可以的。...
- Word如何设置分栏,如何一页内容同时显示一栏和两栏
-
我们使用Word文档,有时需要用到两栏的排版,甚至一页内容同时包含一栏和两栏的排版,这种格式怎么设置呢?具体步骤如下:首先是两栏排版的设置,直接点击Word文件上方工具栏【布局】,选择【分栏】下面的【...
- Word怎么分页?这三个方法可以帮到你
-
我们不仅可以利用Word编辑文档,还可以编辑文集呢。但是有时候会出现两个部分的文章长短不一,我们需要对文档进行分页处理。这样可以方便我们对文档进行其他操作。那么Word怎么分页呢?大家可以采用下面这...
- Word内容稍超一页,如何优化至单页打印?
-
如何将两页纸的内容,缩到一页打印呢?有时候一页纸多一点内容,我们完全可以缩一下,放到一页来打印。...
- [word] word 表格如何跨行显示表头、标题
-
word表格如何跨行显示表头、标题在Word中的表格如果过长的话,会跨行显示在另一页,如果想要在其它页面上也显示表头,更直观的查看数据。难道要一个个复制表头吗?当然不是,教你简单的方法操作设置Wo...
- Word表格跨页如何续上表?(word如何让表格跨页不断掉)
-
长文档的表格跨页时,你会发现页末空白太多了,这时要怎么调整?选中整张表格,右击【表格属性】,点击【行】选项,之后勾选【允许跨页断行】,点击确定即可解决空白问题。...
- Word怎么连续自动生成页码,操作步骤来了!
-
Word怎么连续自动生成页码,操作步骤来了!...
- word文档怎么把两页合并成一页内容?教你4种方法
-
word怎么把两页合并成一页?word怎么把两页合并成一页?用四种方法演示一下。·方法一:把这一个文档合并成一页,按ctrl加a全选文档,然后右键点击段落,弹出的界面行距改成固定值,磅值可以改小一点,...
- 如何将Word中的一页的纸张方向设置为横向?这里提供详细步骤
-
默认情况下,MicrosoftWord将页面定向为纵向视图。虽然这在大多数情况下都很好,但你可能拥有在横向视图中看起来更好的页面或页面组。以下是实现这一目标的两种方法。无论使用哪种方法,请注意,如果...
- Word横竖混排你会玩吗?(word横排竖排混合)
-
我们在用Word排版的时候,一般都是竖版格式,但偶尔会需要到一些特殊的版式要求,比如文档中插入的一个表格,横向的内容比较多,这时就需要用到横版,否则表格显示不全。这种横竖版混排的要求,在Word20...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- navicat无法连接mysql服务器 (65)
- 下横线怎么打 (71)
- flash插件怎么安装 (60)
- lol体验服怎么进 (66)
- ae插件怎么安装 (62)
- yum卸载 (75)
- .key文件 (63)
- cad一打开就致命错误是怎么回事 (61)
- rpm文件怎么安装 (66)
- linux取消挂载 (81)
- ie代理配置错误 (61)
- ajax error (67)
- centos7 重启网络 (67)
- centos6下载 (58)
- mysql 外网访问权限 (69)
- centos查看内核版本 (61)
- ps错误16 (66)
- nodejs读取json文件 (64)
- centos7 1810 (59)
- 加载com加载项时运行错误 (67)
- php打乱数组顺序 (68)
- cad安装失败怎么解决 (58)
- 因文件头错误而不能打开怎么解决 (68)
- js判断字符串为空 (62)
- centos查看端口 (64)