0

0

大模型对语言有自己的理解!MIT 论文揭示大模型“思维过程”

PHPz

PHPz

发布时间:2024-08-17 15:36:05

|

938人浏览过

|

来源于ZAKER

转载

大模型对现实世界,可以形成自己的理解!

MIT 的一项研究发现,随着模型能力越强,它对现实的理解可能不仅是简单模仿。

比如大模型没有闻过气味,是否就意味着它不能理解气味?

研究发现,它可以自发模拟一些概念,方便理解。

这项研究意味着,大模型未来有希望更深入理解语言和世界,论文已被顶会 ICML 24 接收。

 大模型对语言有自己的理解!MIT 论文揭示大模型“思维过程”

这篇论文的作者是 MIT 计算机与人工智能实验室(CSAIL)华裔博士生 Charles Jin 和他的导师 Martin Rinard 教授。

研究当中,作者让大模型只学习代码文本,结果发现模型逐渐掌握了其背后的含义。

Rinard 教授表示,这项研究直接针对现代人工智能的一个核心问题——

大模型的能力仅仅是由于大规模的统计相关性,还是对它们要处理的现实问题产生了有意义的理解?

 大模型对语言有自己的理解!MIT 论文揭示大模型“思维过程”

△来源:MIT 官网

同时这项研究也引发了不少讨论。

有网友表示,虽然大模型对语言的理解可能和人类不同,但这项研究至少说明了模型做的绝不仅仅是对训练数据的记忆。

 大模型对语言有自己的理解!MIT 论文揭示大模型“思维过程”

让大模型学习纯代码

为了探究大模型能否产生语义层面的理解,作者构建了一个由程序代码及其对应输入输出组成的合成数据集。

这些代码程序用一种名为Karel的教学语言编写,主要用于实现机器人在 2D 网格世界中导航的任务。

这个网格世界由 8x8 的格子组成,每个格子可以包含障碍物、标记物或空地。机器人可以在格子间移动,并进行放置 / 拾取标记物等操作。

Karel 语言包含 5 个原始操作—— move(前进一步)、turnLeft(左转 90 度)、turnRight(右转 90 度)、pickMarker(拾取标记物)、putMarker(放置标记物),程序就是由这些原始操作的序列组成。

 大模型对语言有自己的理解!MIT 论文揭示大模型“思维过程”

作者随机生成了一个包含 50 万个 Karel 程序的训练集,每个程序长度在 6 到 10 之间。

每个训练样本由三部分组成:5 个输入状态、5 个输出状态和完整的程序代码,输入输出状态以特定格式编码进字符串中。

利用这些数据,作者训练了标准 Transformer 架构的 CodeGen 模型的一个变体。

训练过程中,模型可以访问每个样本中的输入输出信息和程序前缀,但看不到程序执行的完整轨迹和中间状态。

除了训练集,作者还构建了一个包含 1 万个样本的测试集,用于评估模型的泛化性能。

为了研究语言模型是否掌握了代码背后的语义,同时深入了解模型的 " 思维过程 ",作者设计了一套包含线性分类器和单 / 双隐层 MLP 的探测器组合。

探测器的输入是语言模型在生成程序 tokens 过程中的隐藏状态,预测目标则是程序执行的中间状态,具体包括机器人的朝向(direction)、相对于初始位置的偏移量(position)以及是否正面朝向障碍物(obstacle) 这三个特征。

在生成模型的训练过程中,作者每隔 4000 步记录一次上述三个特征,并同时记下生成模型的隐藏状态,形成探测器的训练数据集。

 大模型对语言有自己的理解!MIT 论文揭示大模型“思维过程”

大模型学习的三个阶段

通过观察语言模型产生的程序的多样性、困惑度等指标随训练进程的变化,作者将训练过程分为了三个阶段——

Babbling(胡言乱语)阶段:输出程序重复度高,探测器准确率不稳定。

AirOps
AirOps

AirOps帮助业务团队使用正确的数据创建表、文档和工具

下载

语法习得阶段:程序多样性迅速提高,生成准确率小幅提升,困惑度下降,说明语言模型习得了程序的句法结构。

语义习得阶段:程序多样性和句法结构掌握程度平稳,但生成准确率和探测器性能大幅提升,说明语言模型习得了程序的语义。

具体来说,Babbling 阶段占据了整个训练过程的前 50%,例如在训练到 20% 左右的时候,无论输入什么规范,模型都只会生成一个固定的程序—— "pickMarker" 重复 9 次。

语法习得阶段处于训练过程的 50% 到 75%,模型在 Karel 程序上的困惑度显著下降,表明语言模型开始更好地适应 Karel 程序的统计特性,但生成程序的准确率提升幅度不大(从 10% 左右提升到 25% 左右),仍然无法准确完成任务。

语义习得阶段是最后的 25%,程序的准确率出现了急剧提升,从 25% 左右提升到 90% 以上,生成的程序能够准确地完成给定的任务。

 大模型对语言有自己的理解!MIT 论文揭示大模型“思维过程”

进一步实验又发现,探测器不仅可以对 t 时刻的同时间步进行预测,还能预测后续时间步的程序执行状态。

举例来说,假设生成模型在 t 时刻生成了 token"move",并将在 t+1 时刻生成 "turnLeft"。

与此同时,t 时刻的程序状态是机器人面向北方,位于坐标 ( 0,0 ) ,而 t+1 时刻机器人将是机器人将面向西方,位置不变。

如果探测器能够从语言模型在 t 时刻的隐藏状态中,成功预测到 t+1 时刻机器人会面向西方,就说明在生成 "turnLeft" 之前,隐藏状态就已经包含了这一操作带来的状态变化信息。

这一现象说明,模型并非只对已生成的程序部分有语义理解,而是在生成每一步时,就已经对接下来要生成的内容有所预期和规划,显现出了初步的面向未来的推理能力。

但这一发现又给这项研究带来了新的问题——

实验中观察到的准确度提升,到底真的是生成模型进步了,还是探测器自己推论的结果呢?

为了解决这个疑惑,作者补充了语义探测干预实验。

 大模型对语言有自己的理解!MIT 论文揭示大模型“思维过程”

实验的基本思路是改变程序操作的语义解释规则,具体又分为 "flip" 和 "adversarial" 两种方式。

"flip" 是强行反转指令含义,如将 "turnRight" 强行解释为 " 左转 " 不过能进行这种反转的也只有 "turnLeft" 和 "turnRight";

"adversarial" 则是将所有指令对应的语义随机打乱,具体方式如下方表格。

 大模型对语言有自己的理解!MIT 论文揭示大模型“思维过程”

如果生成模型的隐藏状态只编码了程序的句法结构,而非语义信息,那么探测器应该仍然能够从隐藏状态中以同等的性能去提取这些被改变的语义信息。

相反,如果探测器性能显著下降,则说明探测器显示出的的性能提升的确是因为生成模型隐藏状态编码了实际语义。

实验结果显示,在两种新语义下,探测器的性能都出现了显著下降。

尤其是在 "adversarial" 模式下更加明显,这也与该模式下的语义与原始语义差异更大的特征相一致。

 大模型对语言有自己的理解!MIT 论文揭示大模型“思维过程”

这些结果有力地排除了探测器 " 自己学会语义映射 " 的可能性,进一步证实了生成模型的确掌握了代码的含义。

论文地址:

https://icml.cc/virtual/2024/poster/34849

参考链接:

[ 1 ] https://news.mit.edu/2024/llms-develop-own-understanding-of-reality-as-language-abilities-improve-0814

[ 2 ] https://www.reddit.com/r/LocalLLaMA/comments/1esxkin/llms_develop_their_own_understanding_of_reality/

相关专题

更多
登录token无效
登录token无效

登录token无效解决方法:1、检查token的有效期限,如果token已经过期,需要重新获取一个新的token;2、检查token的签名,如果签名不正确,需要重新获取一个新的token;3、检查密钥的正确性,如果密钥不正确,需要重新获取一个新的token;4、使用HTTPS协议传输token,建议使用HTTPS协议进行传输 ;5、使用双因素认证,双因素认证可以提高账户的安全性。

6096

2023.09.14

登录token无效怎么办
登录token无效怎么办

登录token无效的解决办法有检查Token是否过期、检查Token是否正确、检查Token是否被篡改、检查Token是否与用户匹配、清除缓存或Cookie、检查网络连接和服务器状态、重新登录或请求新的Token、联系技术支持或开发人员等。本专题为大家提供token相关的文章、下载、课程内容,供大家免费下载体验。

806

2023.09.14

token怎么获取
token怎么获取

获取token值的方法:1、小程序调用“wx.login()”获取 临时登录凭证code,并回传到开发者服务器;2、开发者服务器以code换取,用户唯一标识openid和会话密钥“session_key”。想了解更详细的内容,可以阅读本专题下面的文章。

1062

2023.12.21

token什么意思
token什么意思

token是一种用于表示用户权限、记录交易信息、支付虚拟货币的数字货币。可以用来在特定的网络上进行交易,用来购买或出售特定的虚拟货币,也可以用来支付特定的服务费用。想了解更多token什么意思的相关内容可以访问本专题下面的文章。

1253

2024.03.01

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

258

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

208

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1465

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

620

2023.11.24

PHP WebSocket 实时通信开发
PHP WebSocket 实时通信开发

本专题系统讲解 PHP 在实时通信与长连接场景中的应用实践,涵盖 WebSocket 协议原理、服务端连接管理、消息推送机制、心跳检测、断线重连以及与前端的实时交互实现。通过聊天系统、实时通知等案例,帮助开发者掌握 使用 PHP 构建实时通信与推送服务的完整开发流程,适用于即时消息与高互动性应用场景。

0

2026.01.19

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Django 教程
Django 教程

共28课时 | 3.2万人学习

Go 教程
Go 教程

共32课时 | 3.9万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 2.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号