[论文速览] Sparks of Artificial General Intelligence: Early experiments with GPT-4

Sparks of Artificial General Intelligence: Early experiments with GPT-4

2023.3.22 微软官方发布了目前人类史上最强AI模型 GPT-4 的综合能力评估论文,总所周知,2023年是通用人工智能(Artificial General Intelligence,AGI)元年,作为见证历史的人类现在可以来简单读读这篇论文。
因为个人研究方向主要是软件相关,所以本blog主要且简要关注GPT-4的代码能力评估结果,其他方面和细节参考官方paper
arxiv link:Sparks of Artificial General Intelligence: Early experiments with GPT-4

Coding

在本节中,论文展示了GPT-4能够实现非常高的水平的代码能力,无论是从指令编写代码还是理解现有代码。GPT-4可以处理广泛的代码任务,从编码挑战到现实世界的应用,从低级汇编到高级框架,从简单的数据结构到复杂的程序,如游戏。GPT-4还可以推理代码执行,模拟指令的效果,并用自然语言解释结果。GPT-4甚至可以执行伪代码,这需要解释在任何编程语言中都无效的非正式和模糊的表达式。
在目前的状态下,作者相信GPT-4在编写只依赖于现有公共库的专注程序方面具有很高的熟练度,这与普通软件工程师的能力相比具有优势。更重要的是,它使工程师和非熟练用户都可以使用,因为它使编写、编辑和理解程序变得容易。作者还承认,GPT-4在编码方面还不完美,因为它有时会产生语法无效或语义不正确的代码,特别是对于更长或更复杂的程序。GPT-4有时也无法理解或遵循说明,或者生成的代码与预期的功能或风格不匹配。在此基础上,本文还指出,GPT-4能够通过响应人类的反馈来改进其代码

解算法题

衡量编码能力的一种常见方法是提出需要实现特定功能或算法的编码挑战。首先在HumanEval [CTJ+21]上对GPT-4进行了基准测试,这是一个文档字符串到代码数据集,由164个编码问题组成,测试了编程逻辑和熟练程度的各个方面。如表1所示,GPT-4优于其他llm,包括text- davincian -003 (ChatGPT的基础模型)和其他专门在code、code- davincian -002和CODEGEN-16B上训练的模型

在这里插入图片描述

这里的Zero-shot是指未经过针对该任务调整的模型,pass@1是指写出来的代码一次通过测试的概率,可以看到GPT-4在HumanEval测试中可以实现一次AC的准确率高达82%,明显高于包括chatGPT在内的其他模型。尽管与之前的模型相比,GPT-4的准确性有了很大的飞跃,但这可能是因为GPT-4在预训练期间看到并记忆了部分(或全部)人类结果。为了考虑这种可能性,作者还在LeetCode (https://leetcode.com)上进行了评估。
作者在表2中展示了结果,将GPT-4与其他模型以及基于LeetCode竞赛结果的人类表现进行了比较(所有问题都失败的用户不包括在内,因此这是一个强大的人类样本)。结果报告了pass@1和pass@5精度,分别衡量模型在第一次或前五次尝试中是否产生了正确的解决方案。GPT-4的表现明显优于其他模型,与人类的表现相当

在这里插入图片描述

可以看到人类刷leetcode的所有难度题目的平均通过率大概在38%左右,而GPT-4的pass@1就已经达到人类水平,pass@5已经大幅度超越了人类程序员水平可以到53%,先不论实际的项目开发工作,至少在算法解题方面GPT4已经超越人类均值。

这是论文中给出的一个让GPT4解算法题的prompt实例
在这里插入图片描述
这是GPT4给出的代码
在这里插入图片描述
这里GPT4使用动态规划算法解决LeetCode的问题。由于带有详细的注释,GPT-4的解决方案甚至还具有很好的可读性。

数据可视化

编码挑战可以评估算法和数据结构的技能。然而,它们往往无法捕捉到现实世界编码任务的全部复杂性和多样性,这需要专业的领域知识、创造力、多个组件和库的集成,以及更改现有代码的能力。为了评估GPT-4在更真实环境下的编码能力,作者设计了与数据可视化、LATEX编码、前端开发和深度学习相关的端到端的现实世界编码挑战,每一个都需要不同的专业技能。

在图3-2中,作者让GPT-4和ChatGPT从LATEX代码中提取数据,并根据与用户的对话用Python绘制图形。之后要求两个模型对生成的图执行各种操作。虽然两个模型都正确地提取了数据(这不是一个简单的任务,因为必须从多列中做推断),但ChatGPT永远不会生成所需的图形。相比之下,GPT-4适当地响应所有用户请求,将数据转换为正确的格式并调整可视化。
在这里插入图片描述

游戏开发

在图3.3中,作者让GPT-4用HTML和JavaScript编写一个3D游戏,使用非常高级的规范。GPT-4以零样本的方式生成满足所有要求的可工作游戏。在3D游戏中,GPT-4甚至能够解释“防御者化身试图阻挡敌人”的含义。相比之下,ChatGPT的回答是“我是一个AI语言模型,我可以为你提供如何使用JavaScript在HTML中创建3D游戏的指导,但我不会编写代码或自己创建游戏。使用JavaScript在HTML中创建3D游戏需要大量的编程知识和经验。这不是一项可以快速或轻松完成的任务。开发所有必要的功能,如3D图形、物理、用户输入和AI,将需要大量的时间和精力。

在这里插入图片描述
在这里插入图片描述

可以看到制作“简单”游戏对于GPT-4来说已经可以实现,只需要将游戏设置规则和设计要求逐条prompt给GPT4,它就能帮你完成代码编写的工作,而且可以实际运行起来(有无bug先不谈,至少能玩)。

深度学习

编写深度学习的代码需要数学、统计学的知识,并熟悉框架和库,如PyTorch, TensorFlow, Keras等。在图3-4中,作者让GPT-4和ChatGPT编写一个自定义优化器模块,即使对人类深度学习专家来说,这也是一项具有挑战性且容易出错的任务。给出了这些模型的自然语言描述,包括一系列非平凡的操作,如应用SVD、在top-k和top-2k特征值处对矩阵进行谱截断、用top-2k截断矩阵的f范数对top-k截断矩阵进行归一化、应用动量和权重衰减。这些说明没有完全详细地说明,例如,“在Gk上应用动量”需要“深度学习常识”。需要注意的是,这个特定的优化器在文献或互联网上并不存在,因此模型无法记住它,必须正确地组合概念才能生成代码。

在这里插入图片描述
GPT4和chatGPT都可以生成语法有效的深度学习代码,不过chatGPT存在bug,GPT4基本能完成目标代码生成,不过漏了维度遍历和正则化的操作。

Latex生成

对计算机科学家和数学家来说,LATEX书写是一项重要的练习,但它的学习曲线并不平坦。即使是专家也会犯恼人的错误,由于严格的语法和缺乏良好的调试器,这些错误每天需要花费数小时来修复。GPT-4可以利用其大师级的LATEX编码技能来大大简化过程,有潜力作为新一代的LATEX编译器,可以处理不精确的自然语言描述。
在图3-5中,作者让GPT-4把一段混合了自然语言、半严格(有bug)的LATEX代码转换成精确的LATEX命令,它转换之后一次就能通过编译并执行。而chatGPT并不具备这样的能力,生成的latex代码是有bug的,无法通过编译。

在这里插入图片描述
以后写latex可以用自然语言来写了(大概),写好要求和简略的latex代码交给GPT4来做剩下的,效率会提高很多。

代码理解

前面的例子表明,GPT-4可以根据指令编写代码,即使指令是模糊的、不完整的或需要领域知识的。他们还表明,GPT-4可以响应后续请求,根据指令修改自己的代码。然而,编码的另一个重要方面是理解和推理他人编写的现有代码的能力,这些代码可能是复杂的、模糊的或缺乏文档。为了测试这一点,我们提出了各种问题,这些问题需要阅读、解释或执行用不同语言和范式编写的代码。
在图3-6的例子中,作者让GPT-4和ChatGPT预测并解释一个打印两个结构体大小的C程序的输出。GPT-4正确地解释了输出可能会根据编译器使用的对齐规则而变化,并给出了一个4字节对齐的可能输出示例。ChatGPT忽略了对齐问题,并给出了错误的输出,还错误地指出了成员的顺序不影响结构的大小。

在这里插入图片描述

代码模拟执行

理解现有代码的最终测试是要求模型直接执行它。在图3-7中,我们可以看到GPT-4能够执行非平凡的Python代码。它必须跟踪多个变量(包括一个嵌套循环和一个字典)并处理递归。它通过编写中间步骤和注释详细解释了执行过程。需要注意的是,GPT-4并不是在Python解释器上运行代码,而是模拟自然语言中的代码。这需要对代码有高度的理解和推理,以及清楚地传达结果的能力。
在这里插入图片描述
甚至可以在伪代码上进行模拟执行
在这里插入图片描述

Interaction with the world

智能的一个关键方面是交互性,作者将其定义为交流和响应来自其他智能体、工具和环境的反馈的能力。交互性对智能很重要,因为它使智能体能够获取和应用知识,解决问题,适应不断变化的情况,并实现超出其个人能力的目标。例如,人类与他人和环境进行交互,以协作、学习、教学、协商、创造等。交互性要求智能体理解复杂的想法,快速学习,并从经验中学习,因此它与我们对智能的定义密切相关。
在本节中,作者探索了交互的两个维度:工具使用和具身交互(embodied interaction)。工具使用涉及使用外部资源(如搜索引擎、计算器或其他api)来执行对于模型而言很难或不可能完成的任务。具身交互涉及使用自然语言作为文本界面与模拟或现实环境进行交互,并从其中接收反馈。

工具使用

尽管在前几节的各种任务中表现令人印象深刻,但GPT-4仍然存在各种语言模型的弱点。这些弱点包括(但不限于)缺乏当前的世界知识,符号操作(例如数学)困难,以及无法执行代码。然而,GPT-4能够使用外部工具(如搜索引擎或api)来克服这些(和其他)限制。例如,在图5-2中,展示了一个简单的提示符,让GPT-4访问搜索引擎和其他功能。在执行过程中,当调用这些函数中的一个时,我们暂停生成,调用适当的函数,将结果粘贴回提示符,然后继续生成。
在这里插入图片描述
GPT-4能够使用极少的指令和没有演示的工具,然后适当地使用输出。最后测试中可以看到GPT4搭配搜索引擎可以回答实时问题,搭配计算器可以用来做算术运算,搭配字符串API可以处理字符串请求。

逆向工程

逆向工程是软件安全性的一项基本测试,其目的是在以机器可读(即二进制)的CPU指令表示形式编写的可执行程序中搜索有用的信息。这是一项具有挑战性的任务,需要理解汇编语言的语法、语义和约定,以及处理器和操作系统的体系结构和行为。
作者展示了GPT-4能够独立运行shell。GPT-4会检查文件格式和元数据,使用“objdump”和“radare2”等工具反汇编代码,使用“gdb”和“ltrace”调试代码,并使用补丁、挂钩和反编译等技术对其进行反向工程。在此过程中,GPT-4从汇编代码中计算出密码与从简单数学公式导出的哈希值进行比较。然后,GPT-4编写一个python程序,尝试不同的数字组合,直到找到与哈希值匹配的数字组合,从而破解密码。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上面是GPT4在用linux的gdb调试一个密码软件,一步步根据调试信息设置断点查看堆栈内存信息,到完成爆破脚本编写,最后找到密码完成crack的过程。
作为一个有逆向工程经验的人,个人看法是GPT-4确实具有至少初步的逆向工程能力,对于一些简单的crack挑战是可以利用gdb调试逐步破解出来秘钥的,而人类想要做到这点需要一点时间的学习和训练,对于不大了解逆向工程的人,GPT-4确实可以作为逆向的助力,对于做逆向的人来说,未来大模型确实有可能帮助到逆向工程师缩短逆向时间和减少逆向的工作量

渗透测试

解决更复杂的任务需要GPT-4组合使用多种工具。我们现在分享一些例子,其中GPT-4能够依靠其理解手头任务的能力来做到这一点,确定所需的工具,以正确的顺序使用它们,并对它们的输出做出适当的响应。
比如渗透测试任务,作者告诉GPT-4,它可以在为数字取证和渗透测试而设计的Linux发行版上执行命令,并执行入侵本地网络上的计算机的任务。在没有任何信息的情况下,它能够制定并执行一个计划,扫描网络中的设备,识别目标主机,运行一个可执行文件,尝试使用普通密码,并获得对机器的root访问权限。虽然机器很容易被入侵,但可以发现到GPT-4精通Linux命令,能够运行适当的命令,解释它们的输出,并进行调整以解决其目标。

在这里插入图片描述

可以看到GPT4在实验中成功使用常见的渗透工具黑入了使用弱口令的目标服务器。当然对于实际的渗透测试任务而言,这样的工作过于简单,但是至少能证明大模型已经具备一点渗透能力。
从安全工作者的角度来看,大模型这种渗透工具的使用能力或许可以利好测试者,辅助人工做一些简单的渗透任务,真要面临复杂的攻防对抗场景,目前来看现在的大模型还未具备资格,但未来很有可能会出现人机对抗和机机对抗的场景,安全不再只是人与人之间的博弈,人人 / 人机 / 机机 对抗,会使得安全攻防博弈出现前所未有的多元化局面。

总结

可以看到GPT-4确实已经称得上是通用AI,并且可以创造和使用工具(人类也不过是会创造和使用工具的动物而已,从这方面看或许已经可以将AGI当做高级智能?),当然实际使用的局限性还是很大,不过GPT-4的出现已经证明了AGI的可行性,在算力高度发展的未来,性能更强,适用性更广泛的AGI落地也只是时间问题,人机结对工作的时代是必然的发展趋势。
总体来说,大模型的能力非常强大,并且理论上没有极限,按照算力和智能的相关性,只要算力足够多,智能就可以足够强。在可预见的未来,大模型研究只会被最强的资本垄断,个体研究者只能捡剩下的边角料,说今年是人类历史转折点也确实不为过。

只不过人类历史最后是通向Cyberpunk还是Communism,仍是不确定的,关键在于AGI掌握在谁的手里。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python3常用其他API速查手册(持续更新ing...)

诸神缄默不语-个人CSDN博文目录 最近更新时间&#xff1a;2023.7.18 最早更新时间&#xff1a;2022.6.27 运算符 - * /" / “就表示 浮点数除法&#xff0c;返回浮点结果;” // "表示整数除法。取余% 指数**等式&#xff1a; > < > <不等于&#xff…

比chatPDF更优秀的国内平替

chatPDF是个非常不错的点子。基于openai的embeddeding接口。但是它有两个缺点。 1、当然是需要魔法才能访问。 2、它和微调不同。所有问题都是基于现有文档。而且每次都是根据你的提问&#xff0c;在文档转化成的向量数据里寻找相关联的内容&#xff0c;一同发给 chatGPT&…

我的plus也GG了

用的好好的4.0&#xff0c;突然就被封了&#xff0c;好在是把钱也退给我了&#xff0c;真是好人啊 刚才找到个chatGPT的镜像&#xff0c; 有GPT4,还可以上传word和pdf的网站ppword.cn

ChatGPT小技巧:如何提升提问效率

别人使用ChatGPT一天内能完成100个网站设计&#xff0c;而你却无法完成一个简单的小程序。原因很可能是你并不清楚自己到底想要什么&#xff0c;导致ChatGPT在没有明确需求的情况下无法生成满意的作品。 不用担心&#xff0c;今天我要分享的这个提示将帮助你解决这个难题。 只需…

经典论文-MobileNetV2论文及实践

**### 2019-MobileNetV2 MobileNetV2: Inverted Residuals and Linear Bottlenecks MobileNetV2: 倒置残差和线性瓶颈 作者&#xff1a;Mark Sandler, Andrew Howard, Menglong Zhu, Andrey Zhmoginov, Liang-Chieh Chen单位&#xff1a;Google 论文地址&#xff1a; https…

首次!中国移动在Nature 杂志子刊 Nature Electronics发表5G高能效通信技术文章

中国移动最新发表在Nature Electronics上的5G论文&#xff1a;面向绿色未来的高能效5G技术 中文版 中国移动首席科学家易芝玲博士、韩双锋博士和边森在最近发表在 nature electronics 的评论文章中分析了5G能效以及如何提高能效的方法。 摘要&#xff1a;能量效率 EE&#xf…

仿10086电信业务平台

目录 配置环境 框架图 模块分析 四大板块 功能代码段 语音播报 数据库调用 显示时间 总体框架 完整代码&#xff1a; 文末附完整代码链接 配置环境 VC6.0 东进语音卡 Access数据库 ADO接口技术 在VC6.0中&#xff0c;我们通过新建MFC&#xff08;微软基础类库&…

Mobile-Former: Bridging MobileNet and Transformer论文简述

本文的核心思想&#xff0c;就是将mobilenet与transformer结合起来&#xff0c;通过mobilenet提取局部特征&#xff0c;transformer来提取全局特征。比较突出的是&#xff0c;本文采用了一种全新的并行结构&#xff0c;而不是之前的将cnn模型穿插在VIT中的方法&#xff0c;并且…

【移动通信】 01-移动通信概论

移动通信概论 1G1.用户接入方式2.收发机的工作方式3.蜂窝技术4.移动通信系统基本结构 2G1.GSM系统打电话2.扩频3.m序列 2.5G3G4G 1G 1.用户接入方式 ​ FDMA&#xff08;频分复用&#xff09;&#xff1a;分割频段给用户且有间隔 ​ TDMA&#xff08;时分复用&#xff09;&am…

MobileNet系列论文

传统CNN&#xff0c;内存需求量大、运算量大&#xff0c;导致无法在移动设备以及嵌入式设备上运行。MobileNet是Google团队在2017年提出&#xff0c;专注于移动端或者嵌入式设备中的轻量级CNN网络。相比于传统的CNN&#xff0c;在准确率下幅度下降的前提下大大减少了模型参数与…

订单助手,拼多多,淘宝或者自定义商城,自动下单发货,无人值守店铺

之前做的小工具软件&#xff0c;拿出来赚钱生活费 无人值守商城店铺订单管理功能&#xff1a; 1、拼多多&#xff0c;淘宝等商城店铺客户下订单后&#xff0c;自动获取未发货订单&#xff0c;去第三方平台商城下单 2、第三方商城发货后&#xff0c;自动把发货物流数据同步过…

chatgpt赋能python:Python自动发货:将你的电商店铺做到极致!

Python自动发货&#xff1a;将你的电商店铺做到极致&#xff01; 随着电商市场的不断发展&#xff0c;电商平台越来越多&#xff0c;对于卖家而言&#xff0c;如何快速而又高效地管理订单和处理发货成为了一个重要的课题。传统的手动发货方式无疑是低效的&#xff0c;费时费力…

淘宝自动发货助手插旗API接口,实现订单插旗颜色标注,自动发货接口

淘宝自动发货助手插旗API接口&#xff0c;实现订单插旗颜色标注&#xff0c;自动发货接口

chatgpt赋能python:Python如何实现画笔的隐藏

Python如何实现画笔的隐藏 作为一种高级编程语言&#xff0c;Python在各个领域中都有着广泛的应用。在图像处理领域中&#xff0c;Python也能够胜任绝大多数的工作。今天我们来讨论一下Python如何实现画笔的隐藏。 什么是画笔的隐藏 在图像处理中&#xff0c;画笔是用来绘制…

携程2023算法开发岗 一面 二面 面经

专栏分享:计算机小伙伴秋招春招找工作的面试经验和面试的详情知识点 专栏首页:软件测试开发类面经合集 主要分享:测试开发类岗位在面试互联网公司时候一些真实的经验 面试code学习参考请看:数据结构面试必刷100题 一面 40min 1. 自我介绍 2. 职业规划 3. 项目介绍(Webserv…

【JavaMailWeb】用户注册通过邮箱激活案例

转载请注明出处&#xff1a; http://blog.csdn.net/qq_26525215 本文源自【大学之旅_谙忆的博客】 前面刚刚学习了JavaMail技术,现在来应用到项目中试试~ 网站用户注册&#xff1a; 主要实现如下两个功能: 1、用户在网站上注册完成后给用户发一封邮件。 2、用户通过邮件激活…

谷歌邮箱SMTP小白教程

废话不多说&#xff01; 谷歌邮箱地址&#xff1a;https://www.google.com/intl/zh-CN_cn/gmail/about/ 注册后&#xff0c;第一步 打开IMAP&#xff0c;查看所有设置 设置 -> 转发和POP/IMAP 第二步&#xff0c;设置授权码 验证完账户密码后需要手机验证 输入验证码 验证…

激活注册邮箱

一、目标 对注册时填写的邮箱进行激活,当注册成功以后,会显示一个前往激活邮箱的按钮,点击即可登录邮箱激活. 情况1:修改了邮箱账号或者激活码,激活失败error;情况2:在指定时间内未激活,激活失败,重新获取激活码再次激活error;情况3:在符合条件的情况下,连续两次激活,第二次激…

一文教你学会实现以邮件激活的注册账户代码

实现思路 通常&#xff0c;我们在进行各大平台进行注册账户时&#xff0c;都会在邮箱收到一封激活邮件&#xff0c;而在点击其中的激活链接之后&#xff0c;我们就能够激活账户&#xff0c;否则&#xff0c;我们将无法正常使用账户&#xff0c;这使得服务平台所拥有的激活用户…

实现邮箱激活账号功能

原文地址&#xff1a;http://blog.sina.com.cn/s/blog_636ed7d00100nss0.html 我们在注册大型网站的时候&#xff0c;比如像新浪&#xff0c;阿里巴巴网站的时候&#xff0c;填写完注册信息后&#xff0c;都会给用户的邮箱发送一个激活注册账号的邮件&#xff0c;让我们激活&am…