InfoQ技术大会双节活动折上折,限时特惠,满10000-1000>> 了解详情
写点什么

放心,GPT-3 不会“杀死”编程

2021 年 9 月 03 日

放心,GPT-3不会“杀死”编程

本文由 Alberto Romero 发表在 towardsdatascience.com,经原作者授权由 InfoQ 中文站翻译并分享


GPT-3 和任何人工智能都不会让编程”凋亡“,所以程序员不需要感到焦虑。


OpenAI 于 2020 年 7 月发布了 GPT-3 的 beta API。此后不久,开发人员开始试用该系统并将其“炒作”得热火朝天,由此人们开始宣称 GPT-3 具有诸多强大的功能。该系统被称为是“有情感”的,能够“推理和理解”,甚至可以称作“通用智能”(general intelligence)。


Frederik Bussler写了一篇在 Towards Data Science 上风靡一时的文章,他在讨论中提出了一个重要问题:GPT-3 能否让我们所知的编程技术凋亡?近几年来,我们已经看到了不少迈向自动化编程或至少减少人工参与的编程技术的趋势。


Bussler 提到了 No-code 和 AutoML 是扼杀未来编程岗位的力量。No-code 是一类设计工具(例如 WordPress),它让用户无需编程就能构建复杂的应用程序。AutoML 是一种基于人工智能的端到端解决方案,用于解决机器学习问题。这两种方法都能让非程序员使用之前他们无力掌握的技术。


GPT-3 遵循了同样的道路。它能根据英文指令生成代码,这是非程序员的终极梦想。我们有理由关注新一代人工智能,但更不应该去惊慌失措。让我们看看 GPT-3 可以做什么,以及为什么我们仍然可以和 AI 程序员做朋友。

GPT-3 的编程能力


GPT-3 最令人惊讶的用例之一是它能够按照自然语言提示进行编程(提示是我们输入系统的文本块)。Sharif Shameen 创建了 debuild.co,这是一个基于 GPT-3 的代码生成器。他在这个例子中展示了该系统如何能够从一组简单的英语指令中构建一个简易的 HTML/CSS/JSX 程序。Jordan Singer 创建了Designer,一个可以替用户进行设计的 Figma 插件。Amjad Masad 创建了Replit,这是一个可以用英语解释代码甚至可以告诉使用者如何改进代码的应用程序。


GPT-3 是如何根据自然语言的输入编写代码的?原因在于它的多任务元学习能力。它可以在仅仅看过几个例子后,学习完成它没有被训练过的文本任务。Sharif Shameen 和其公司调整了 GPT-3 来学习这些任务。元学习是一种令人惊艳的能力,但我们往往高估了人工智能获得这些人类具备的技能的能力,GPT-3 也不例外。它可以编程,但不能写出所有类型的代码。以下是三个重要的限制:

上下文窗口过小


GPT-3 的记忆很短,它只能记住过去很小的一个文本窗口。你可以给它展示几百个字,但也仅此而已。你可以提示它学习编程,但你不能提示它学习写诗。而且你也不可能让它编写一些行数很多的大程序。尽管如此,GPT-3 在它的上下文窗口内的能力还是很令人惊艳的。

缺少责任感


GPT-3 可以做很多事,但它不能评估它的答案是对是错——而它也不在乎对错。如果你在研究一个你也不知道答案的问题,有时使用 GPT-3 就和瞎猜一样。因此,OpenAI 建议不要将 GPT-3 用于“高风险类别“的系统。GPT-3 并不值得信赖。

对不准确的提示同样敏感


GPT-3 的学习能力和我们给出提示的能力成正比。技术博主 Gwern Branwen 证明了良好提示的重要性,他也反对了 GPT-3 的能力不受限于采样的这一观点。(每次我们提示 GPT-3 并获得结果,我们都在创建一个样本。)如果我们不知道如何和 GPT-3 交谈,它就不会展示真正的知识,并且会犯错误。


“采样可以证明知识的存在,但不能证明不存在。如果提示写得不好,GPT-3 可能会“失败”。[...]问题不在于一个给定的提示是否有效,而在于是否所有提示都有效。“—— Gwern Branwen

GPT-3 的不确定性


当我们提示 GPT-3 创建代码时,我们其实正在编写软件3.0。Gwern 说,“提示”应该被理解为一种不同于传统的编码或神经网络的新的编程范式。


例如,当我们用 Python 编写程序时,我们使用的是一种形式语言。有很多方法可以实现相同的解决方案,但每种方法都必须严格遵循该语言的语法规则。这其中没有不确定性。你编写一个程序,计算机以特定的方式运行,没有任何模糊的解释。


提示 GPT-3 编写代码是完全不同的。英语——或者任何其他口语——不是一种形式语言;它是一种自然语言。自然语言不是设计出来的。它们与我们一起进化,并且充满了歧义。大多数时候,实际意义是必须通过上下文的信息一起表达的。书面的自然语言失去了部分意义,因此可以用不同的方式来解释。这会产生不确定性。而 GPT-3 模糊的内部工作原理所带来的不确定性又和这种自然语言的不确定性叠加在了一起。我们无法访问黑匣子,更不用说理解它了。


所以,当我们将一个英语句子输入到 GPT-3,它会输出一些东西,这其中存在着一连串的不确定性,可能会恰好导致我们想要的和我们得到的之间出现灾难性的差异。从这个意义上说,提示 GPT-3 和编程不一样。它可以在某些情况下使用,但短期内不可能取代所有的程序。这是因为这两种方法的性质决定了它们应该用于解决不同的问题。

人工智能不会完全“杀死”编程


在上文中,我已经反驳了一些关于 GPT-3 对编程的威胁的观点。在下文中,我将话题扩展到关于 AI 的论点。有 3 个充分的理由可以说明为什么程序员不需要害怕人工智能:

有些任务更适合其他范式


当我说提示是一种新的编程范式(软件 3.0)时,其中隐含了其他两个范式:传统编程(软件 1.0)和神经网络(软件 2.0)。几年前,Karpathy 发表了一篇传播度非常广的文章,该文章捍卫了神经网络应该被构​​建为一种新形式的软件的观点,并且他认为神经网络比传统编程更适用于某些任务。


在某种程度上我同意他的观点。事实证明,神经网络在处理传统编程一直未能完成的一些任务方面非常成功。特别是,神经网络非常适合视觉和语言。很明显,对于某些问题,直接在程序中编写出我们想要的行为更容易(软件 1.0),但对于其他问题,收集数据作为我们想要重现的行为的示例(软件 2.0)是首选解决方案。


软件 3.0 也一样。提示使得用户能够处理超出以前软件范式能力的任务,但它不适用于其他情况。构建操作系统、办公软件包、数据库或计算数字阶乘的程序,仍将使用传统编码来完成。

其他范式成本更低


深度学习的成本通常令人望而却步。许多公司仍然使用非神经网络机器学习的解决方案,因为数据操作、清理和标记比项目的其余部分的费用更高。


即使更新的技术和技能会变得更快或更精确,经济成本也始终会是一个现实世界的限制。训练 GPT-3 花费了 OpenAI 大约 1200 万美元。有多少公司能负担得起?你会花几百万美元来创建一个为你编写 JSX 的人工智能吗?


即使 API 可供开发人员免费使用,也需要考虑另一个成本,那就是对地球环境的破坏。GPT-3 是如此之复杂,以至于训练它产生的碳足迹与“驾驶汽车前往月球并返回”大致相同。有时更大更复杂的并不是更好的。

今天的人工智能有它的限制


神经网络每年都在变得越来越聪明,但即使是最聪明、最强大的神经网络也有无法处理的任务。 GPT-3 在解释书面输入时的不确定性是不可避免的。


无实体的人工智能,也是迄今为止几乎所有的人工智能,无法获得超越文字的含义。我们可以使用上下文来解释我们周围的世界,因为我们和周围的世界有互动。我们生活在这个世界上,这就是我们能理解语言的原因。我们可以将形式与意义联系起来;我们可以将文字与它们传达的主观体验联系起来。


无论神经网络多么强大,它都无法像人类那样掌握语言。正如 Ragnar Fjelland 教授所说,“只要计算机不长大,不属于一种文化,不活跃于世界,它们就永远不会获得类似人类的智能。”而这种假设不会很快发生。

最后展望


不可否认,像 GPT-3 这样的神经网络是一个重要的里程碑,它将为下一步迈向通用人工智能(AGI)敞开大门。随着每次的新升级,他们将能够处理更复杂的任务。例如,多模态人工智能将会成为新常态(MUM 和 Wu Dao 2.0 是最新的例子)。


然而,对于某些任务,传统的方法和技术是更好的选择。人工智能将会蚕食掉大量以前属于传统编码领域的存在问题的空间,这种情况在每项新技术诞生后都会发生。然而,新技术让旧技术在一切领域都过时的情况是很少发生的。同时提高效率、减少成本和增加可用性不是必然,是一种例外。人工智能将触及每个行业,但它也不能违反上述规律。


原文链接:


https://towardsdatascience.com/gpt-3-or-any-ai-wont-kill-coding-f4cabd3a536b

2021 年 9 月 03 日 14:333018
用户头像
刘燕 InfoQ记者

发布了 682 篇内容, 共 217.4 次阅读, 收获喜欢 1309 次。

关注

评论

发布
暂无评论
发现更多内容

2.3万个MongoDB数据库遭黑客比特币勒索,你中招了吗?中招怎么办?

墨天轮

比特币 数据库 oracle mongodb 黑客

nightingale安装详解

曾祥斌

java基础思维导图,让java不再难懂 (建议收藏))

码哥小胖

面试 Spring Boot Java 分布式

信创舆情一线--印度封禁59款中国App

统小信uos

App 舆情 印度

原创 | TDD工具集:JUnit、AssertJ和Mockito (二十五)运行测试-在IDE中运行测试

编程道与术

Java intellij-idea 编程 TDD 单元测试

四面阿里巴巴回来分享面经总结,定级P7架构师

小吴选手

架构 技术 面试 Spring Boot 阿里

AndroidStudio真机调试 - Waiting for Debugger

麦洛

Android Studio 真机调试

分布式柔性事务之最大努力通知事务详解

古月木易

分布式事务

听说你还没学Spring就被源码编译劝退了?30+张图带你玩转Spring编译

程序员DMZ

spring Spring源码编译

五分钟让你搞懂Nginx负载均衡原理及四种负载均衡算法

架构大数据双料架构师

猿灯塔:疫情冲击,去体验远程面试被怼10分钟,今年Java开发找工作真难

猿灯塔

马匹、马镫、马车,和华为的数据基础设施革新

脑极体

第五周作业

武鹏

数据产品经理的具象化

松子(李博源)

大数据 产品经理 数据产品

自动特征工程在推荐系统中的研究

天枢数智运营

人工智能 推荐系统

一致性hash

彭阿三

一致性hash

2020年7月国产数据库排行:华为、腾讯发新品,中兴、阿里结硕果

墨天轮

数据库 阿里 排行榜

ThreadPoolExecutor 线程池使用

郭儿的跋涉

线程 多线程 线程池

高效程序员的七个好习惯——你有吗?

小谈

程序员 面试 JVM springboot SpringCloud

测试开发工程师修炼手册—测试技能大盘点

Zoe

测试工程师产出

区块链正处于手脚并用攀爬的“攻坚时刻”

CECBC区块链专委会

数据上链 市场选择

系统架构师week04 Homework - 互联网架构技术手段和方案

尔东雨田

极客大学架构师训练营

架构师训练营 第五周 作业

Poplar

理解 Mysql 索引底层原理只需这一篇就够了

小谈

MySQL 数据结构 面试 Spring Cloud Spring Boot

太阳马戏团在疫情下的组合式创新

石云升

商业模式 组合式创新 思想实验

分布式柔性事务之最大努力通知事务详解

奈学教育

分布式事务

忘掉 Snowflake,感受一下性能高出 587 倍的全局唯一 ID 生成算法

穿甲兵

Go redis 架构 分布式 CAP

Kafka 消息丢失与消费精确一次性

奈学教育

kafka

Kafka 消息丢失与消费精确一次性

古月木易

kafka

向女朋友解释乐观锁与悲观锁的小妙招!

小闫

spring 面试 Spring Cloud 乐观锁 悲观锁

架构师训练营第4周总结

aoeiuvzcs

放心,GPT-3不会“杀死”编程-InfoQ