程序员的未来属于「伪代码」!Nature专栏:用ChatGPT加速科研编程的三种姿势

d1be64376648078afe825cd32258e960.jpeg


  视学算法报道  

编辑:LRS

【导读】ChatGPT让科研编程不再难!

基于生成式人工智能工具,比如ChatGPT、Bard等聊天机器人的出现,以及如何将AI工具用于学术研究引发了巨大的争议,但与此同时,AI生成的代码用于科学研究的价值被忽视了。

与ChatGPT生成文本导致的剽窃问题相比,用AI抄代码显然争议更小,开放科学甚至鼓励「代码共享」和「代码重用」,溯源起来也很方便,比如python里用到「import」导入依赖包就算引用。

最近Nature上发表了一篇评论文章,作者团队讨论了ChatGPT在科学编程领域的三个潜在能力,包括头脑风暴、分解复杂任务、以及处理简单但耗时的任务。

ca90dff320873772496a2c3a0ec42660.png

文章链接:https://www.nature.com/articles/s41559-023-02063-3

研究人员通过使用ChatGPT将自然语言翻译成计算机可读代码,探索了使用生成式AI来增强科学编码的能力和局限性。

实验中的例子主要探索了可能与生态学、进化及其他领域相关的通用任务,研究人员发现,使用ChatGPT可以完成80%-90%的代码编写任务。

如果任务被分解成小的、可管理的代码块,并带有精确的提示作为查询,ChatGPT可以生成非常有用的代码。

值得注意的是,用Google的Bard进行同样的实验通常会得到类似的结果,但代码中的错误更多,所以这篇文章主要使用ChatGPT进行实验。

第一作者Cory Merow是一位定量生态学家,主要研究方向是建立机制模型来预测人口和社区对环境变化的反应。即使是最好的数据集在预测全球变化反应方面也是不完善的,所以需要开发一些工具来结合数据源和探索数据集,以深入了解生物系统可能发生的变化。

4068bd625743e00ce12037e984854fa9.png

ChatGPT助力科学编码

ChatGPT以回归模型GPT-3为基础,在海量的网页、书籍等文本上进行拟合训练,不需要搜索即可生成文本。

所以ChatGPT更擅长内插(interpolating,即预测与训练数据相似的文本),而不擅长外推(extrapolating,即预测与训练样本不同的新文本)。

训练集的庞大规模是一个优势,意味着GPT-3已经看到了大量的语言模式,使其能够内插并增加生成对人类有用回复的可能性。

不过对代码生成任务来说,GPT-3并不知道如何编程,只是知道代码看起来像什么样,以及哪些词最可能出现在下一个位置,其工作原理类似于自动补全,基于概率模型预测下一个代码块(chunk),块通常比词(word)要小,也可以叫做token

生成正确token的概率基于所有token的概率乘积,即增加预测token的数量或降低选中token的确定性会增加任务的难度,从而降低获得正确token的概率。

因此,想要增加正确token的概率,需要缩短生成任务的长度,或是提供更具体的指令。

最后,研究人员提醒,ChatGPT生成的文本有些看起来像代码,但可能无法执行,所以在编码过程中需要仔细观察调试。

头脑风暴工具

ChatGPT可以很好地检索多个数据源,例如在生态领域可以同时获取植物性状、物种分布区域和气象数据。

虽然ChatGPT提供的数据有些是不正确的,但通过其提供的链接可以很快地校正这些错误。

不过ChatGPT并不能写爬虫从网站上下载数据,可能是因为R语言的包和底层应用程序接口(如R访问数据库的协议)更新过快,毕竟ChatGPT的训练数据是在2021年构建的。

ChatGPT可以在遇到特定问题时提出各种统计技术,在后续的提问中可以生成更多基于用户假设的指导意见,并提供一份初始代码。

不过综合(synthesis)过程只适用于提出并交流想法,仍然需要通过传统的数据源(如论文等)进行事实核查。

需要注意的是,一些网站声称ChatGPT有能力对书籍写摘要,不过从研究人员的测试结果来看,这种摘要综合的结果完全不对,可能是因为测试用的书籍没有在GPT-3训练集中出现。

更难的任务需要更多的debug

ChatGPT非常擅长生成模板代码,在特定指令下提供一份包含少量函数的短脚本代码。

比如下面的例子中,研究人员要求ChatGPT将四个常用函数的输入和输出串一起。并提供一个将此函数用于模拟数据的示例代码。

可以看到ChatGPT生成的结果几乎是完美的,调试代码只花了几分钟,不过需要在提示中非常具体地说明query,包括提供命名和用到的函数。

b48da7a5d7ef7ad93904329711a71c24.jpeg

研究人员发现,成功的关键在于:

1、将复杂任务分解成多个子任务,每个子任务最好只需要少数几个步骤即可完成,毕竟ChatGPT生成的代码是基于概率文本预测模型的结果。

2、ChatGPT在使用已经存在的函数时表现最佳,因为这时只涉及内插而非外推。

例如,使用正则表达式(regex)从文本中提取信息的代码对于许多开发人员来说是非常困难的,不过因为已经有正则网站提供了大量在线示例,并可能出现在ChatGPT示例中,所以ChatGPT写正则的性能还是不错的。

3、学术界对ChatGPT最大的批评之一是其信息来源缺乏透明度。

对于代码生成任务,通过指定「命名空间」(namespace),即在使用函数时显式调用包名可以实现一定程度的透明性。

不过ChatGPT可能会直接复制个人的公开代码而没有引用出来,并且研究人员仍然有责任验证正确的代码归属人。

同时,如果要求生成更长的脚本会暴露出一些ChatGPT的缺陷,例如伪造函数名或参数等,这也是StackOverflow禁用ChatGPT生成代码的原因。

但如果用户提供了一组明确的执行步骤,ChatGPT仍然可以生成一个有用的工作流模板,定义步骤之间的输入和输出之间的连接,这可能是用GPT-3外推生成新代码的最有用的途径。

目前ChatGPT还不能将伪代码(用简单语言描述的算法步骤) 转换为完美的计算机可执行代码,但这可能离现实并不遥远。

ChatGPT对于初学者、不熟悉的编程语言来说特别有帮助,因为初学者只会写一些较短的脚本,调试更方便。

ChatGPT更擅长非创造性任务

ChatGPT最擅长解决的是耗时的公式化任务,可用于调试、检测和解释代码中的错误。

ChatGPT在编写函数文档时也非常有效,例如使用roxygen 2的内联文档语法,在标识出所有参数及类上非常高效,不过却很少解释如何使用函数。

一个关键的限制是ChatGPT的生成被限制在大约500个单词,只能专注于较小代码块的生成,同时还可以生成单元测试以自动化确认代码功能。

ChatGPT给出的大多数建议在定义测试的结构和检查预期的对象类方面是很有帮助的。

最后,ChatGPT在对代码进行重新格式化以遵循标准化(例如Google)代码样式方面非常有效。

未来属于伪代码

ChatGPT和其他人工智能驱动的自然语言处理工具已经准备好将开发人员的简单任务进行自动化,例如编写短函数,语法调试,注释和格式化,而扩展复杂性取决于用户的调试意愿(以及他们的熟练程度)。

研究人员总结了ChatGPT在代码生成上的功能,可以简化科学领域的代码编写过程,不过人工检查仍然是必要的,可运行的代码并不一定意味着代码能够执行预期的任务,因此单元测试或非正式的交互式测试仍然至关重要。

ee63ac878bde156f9d39a10c748ef4a4.jpeg

在解决方案可能由人类开发,并由ChhatGPT简单复制生成的情况下,确保正确的代码归属人至关重要。

目前已经有聊天机器人开始自动提供指向其来源的链接(例如,微软的必应),尽管这一步还处于起步阶段。

与传统方法相比,ChatGPT提供了一种学习编码技能的替代方法,通过将伪代码直接转换为代码,可以缓解编写初始任务的障碍。

研究人员怀疑未来的进展将使用ChatGPT这样的工具来自动调试编写的代码,根据遇到的错误迭代地生成、运行和提出新代码,在实验过程中,研究人员发现纠正代码的能力有限,只有在非常具体的指令针对小代码块时才会偶尔成功,调试过程的效率远低于人工调试。

研究人员猜想,随着技术的进步(比如最近发布的GPT-4模型 ,据称比GPT-3模型大10倍),自动化调试将会得到改进。

未来即将到来,现在是开发人员学习提示工程技能以利用新兴AI工具的时候了,研究人员预计,使用人工智能生成的代码将成为软件开发各个方面越来越有价值的技能,这些技能是科学发现和理解的基础。

参考资料:

https://www.nature.com/articles/s41559-023-02063-3

ac439c76507e46daa11d4824977b2294.png

outside_default.png

点个在看 paper不断!

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

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

相关文章

程序员的未来属于「伪代码」 Nature专栏:用ChatGPT加速科研编程的三种姿势

新智元报道 编辑:LRS 【新智元导读】ChatGPT让科研编程不再难! 基于生成式人工智能工具,比如ChatGPT、Bard等聊天机器人的出现,以及如何将AI工具用于学术研究引发了巨大的争议,但与此同时,AI生成的代码…

对话数字栩生宋震:ChatGPT加速了「数字人」迈向「西部世界」化

未来的数字人既要有好看的皮囊,又要有有趣的灵魂,就像美剧《西部世界》里的人一样,那就是人人幻想的世界。我们始终坚信未来数字人会朝着那个方向发展,而且现在速度会越来越快。 作者:王立新 出品:碳链价值…

GPT4来了!微软云能否反超亚马逊夺冠,就靠它了

文|光锥智能,作者|刘雨琦 “Azure(微软云)能否反超AWS(亚马逊云)夺冠,就靠ChatGPT了。” 今天凌晨,GPT4横空出世,支持图像输入和混合输入,多模态…

ChatGPT 标志着 AI 进入 iPhone 时刻 | 开谈

整理 | 禾木木 责编 | 梦依丹 出品 | CSDN(ID:CSDNnews) 5 天注册用户超 100 万,60 天用户破亿,引得国内外大厂纷纷追随 AIGC 步伐,史上增速最快的消费级应用程序 ChatGPT 更是引领 AI 在科技圈一路“狂…

ChatGPT 之后,B 端产品设计会迎来颠覆式革命吗?| Liga妙谈

近日,脑机接口公司 Neuralink 宣布,其植入式脑机接口设备首次人体临床研究已被准许启动。遥想当年,我们还嘲讽罗老师「动嘴做 PPT」,谁曾想不久后我们可能连嘴都不用动🙊。 脑机接口何时会引爆人机交互革命尚未可知&a…

马斯克要买地当「城主」/ 苹果手表引入ChatGPT/ 小鹏辟谣多名核心高管离职…今日更多新鲜事在此...

日报君 发自 凹非寺量子位 | 公众号 QbitAI 大家好,今天是3月10日星期五,想好明天去哪里嗨皮了嘛。 最近科技圈都发生了哪些新鲜事?一起来和日报君看看。 马斯克计划购地建城 马斯克已经买好土地,准备建城了?&#xff…

Python发送邮件(以QQ邮箱为例)

1.首先去QQ邮箱 设置-》账户 找到邮箱服务 2.打开smtp服务,生成授权码,这里需要QQ邮箱绑定手机号发送验证码发送一条短信进行验证。 发送后,复制授权码。稍后会用到。 3.编写程序 import ssl import requests import requests import json…

Java利用qq邮箱发送邮件

使用java应用程序发送程序十分简单: 本案列使用了开启QQ邮箱的STMP来进行邮件发送,下面是完成步骤: 首先我们需要开启邮箱发送端口: 在获得了授权码后,接下来便是进行编写邮件发送接口了,我们使用的是Java…

如何配置QQ邮箱或腾讯企业邮箱发送邮件

1. 如果是使用QQ邮箱发送 登录qq邮箱点击设置然后点击账户,如图 账户页面往下翻,找到这个地方,画红框的两个服务开启,然后生成一个授权码 找到配置中心填写邮件的 SMTP服务器:smtp.qq.com 发送邮件的邮箱&#xff1…

QQ邮箱 网易邮箱及企业邮箱开通SMTP/POP3及设置授权码

一 、什么是 POP3/IMAP/SMTP 服务 POP3 (Post Office Protocol - Version 3)协议用于支持使用电子邮件客户端获取并删除在服务器上的电子邮件。 IMAP (Internet Message Access Protocol)协议用于支持使用电子邮件客户端交互式存…

QQ邮箱注意点

查找发送过的文件 疑问 今天发现每次发完邮件找不到已发送的邮件,只能查看发送的信息 然后就有了这样的疑惑用QQ邮箱发邮件,发完后“已发送”中没有显示,发出去了吗? 当然可以查看发信状态,但是只能看到是否投递成功…

OutLook Express关联QQ邮箱

目录 前言 一、登录QQ邮箱,并配置POP3/SMTP服务与IMAP/SMTP服务 1、打开QQ邮箱,来到设置—账户,下拉可以看到相关配置区: 二、在OutLook上添加QQ邮箱账户 1、在OutLook中新建邮件账号 2、在邮件服务器上保留邮件副本 3、设定…

针对QQ邮箱发邮件限制的解决方案

由于QQ邮箱对于SMTP服务发送邮件做了限制,每分钟发送40封之后会被限制不能再发送,对于这样的限制又需要发送大量邮件的时候的解决方案如下 使用多个邮箱轮换使用进行发送 1、将使用的邮箱存储在一个统一的字符串变量中,将所有可使用的邮箱存…

Outlook/Microsfot邮件配置:QQ邮箱/腾讯企业邮箱

记录下最终成功的记录 1.QQ邮箱配置 Step1 添加账户 Step 2 弹出的窗口中下拉至最下边:高级设置 Step 3 在弹出的窗口中选择Interner电子邮件 Step 4 填写配置信息,其中,不要忙着填写密码,其他的按照图中填写就可以了。 Step 5 进…

用telnet测试给qq邮箱发邮件,中途可能腾讯要你开启smtp服务器

注意下面绿色为你要在cmd端输入的内容 (第1步)telnet smtp.qq.com 25 220 smtp.qq.com Esmtp QQ Mail Server (第2步)helo 192.168.20.11//与qq服务器握手:这个192.168.20.11是你的主机的ip地址,可以通过…

[实战篇]关于QQ邮箱注册之测试用例

今天,我们来分析一个关于QQ邮箱注册的测试用例: 运用正交法,我们可以得到一个实验计划表,如下: 如图所示,注册页面共有三个输入框,正交表中呈现填写和不填写两种情况,而这三个输入框…

PHP中利用PHPMailer配合QQ邮箱实现发邮件

前言: 由于作业的需要,要实现给我们的网站用户发送邮件,于是就有了这篇博客。以下的内容是我结合网上的例子加上自己的实践的出来的。希望对大家有帮助。 PHPMailer的介绍: 优点: 可运行在任何平台之上支持SMTP验证…

[实战篇]关于QQ邮箱登录之测试用例

今天,我们来分析一个关于QQ邮箱登录模块的测试用例: 邮箱登录模块它就只有两个,一个是登录账号,一个是登录密码。在上一篇注册模块的文章中分析过,如果是一个输入框的话,你就直接对这一个输入框进行等价类…

phpmailer发送邮件(QQ企业邮箱和163邮箱)

注意:使用个人qq邮箱发送邮箱会被腾讯拦截发送失败 第一:163邮箱配置 1、登录163邮箱:https://email.163.com/ 2、在邮箱的设置中开启SMTP服务(设置->POP3/SMTP/IMAP->开启服务),同时生成授权密码(发送邮件需要)&#xf…

腾讯邮箱网页版和foxmail邮箱邮件收取数量不一致

腾讯邮箱网页版无法导出邮件,所以下载了foxmail导出邮件,但是发现foxmail只能收取近一个月的邮箱 解决方法: 打开网页版的腾讯企业邮箱 点击 设置,点击 【收发信设置】 收取 【全部 】 邮件 再在foxmail收取即可&#xf…