InfoQ 编辑部出品——2021年度技术盘点与展望 了解详情
写点什么

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

  • 2021 年 9 月 03 日
  • 本文字数:3232 字

    阅读完需:约 11 分钟

放心,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:333306
用户头像
刘燕 InfoQ记者

发布了 761 篇内容, 共 248.2 次阅读, 收获喜欢 1454 次。

关注

评论

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

即构发布 LCEP 低代码互动平台产品 RoomKit,实现互动房间0代码搭建

ZEGO即构

【JS】事件委托

德育处主任

JavaScript 大前端 js 2月春节不断更

安卓开发在线!Android面试吃透这一篇就没有拿不到的offer!大厂内部资料

欢喜学安卓

android 程序员 面试 移动开发

重磅发布 | 2021年OpenAtom XuperChain开源技术路径

百度开发者中心

百度 #区块链#

Kafka消费者提交消费位移时提交的是当前消费到的最新消息的 offset 还是 offset+1?

码农架构

Java kafka 程序员 架构 消息中间件

Clubhouse是个啥?一夜爆火一码难求

架构精进之路

七日更 2月春节不断更 clubhouse

JDK1.8升级这么久!Stream流的规约操作有哪些?

码农架构

Java 架构 jdk 函数编程

堪称最全的JAVA开发手册(基础+框架+分布式微服务+调优)

Crud的程序员

Java 程序员 架构

为什么联盟链系统没有“激励”?

CECBC

区块链

【百度技术分享】San介绍以及在百度APP的实践

百度Geek说

Java JavaScript feed

第一次凡尔赛,字节跳动3面+腾讯6面一次过,谈谈我的大厂面经

Crud的程序员

Java 编程 架构 面试

开发Kafka消费者客户端需要注意哪些事项?

码农架构

🎨 HTTP 协议的前世今生

飞天小牛肉

Java 程序员 面试 计算机网络 2月春节不断更

百度亮相全球量子信息处理顶会QIP2021 推动全球量子科技进步

爱极客侠

做了6年的Android,Jetpack-MVVM-高频提问和解答,看看这篇文章吧!

欢喜学安卓

android 程序员 面试 移动开发

Kafka在哪些场景下会造成重复消费或消息丢失?

码农架构

Java kafka 程序员 消息中间件 架构·

2021版阿里Java亿级并发设计手册:基础+数据库+缓存+消息队列+分布式+维护+实战

Java架构追梦

Java 阿里巴巴 面试 系统架构 亿级并发

Kafka 发送消息过程中拦截器的用途?

码农架构

Java kafka 程序员 架构·

怎么理解Kafka消费者与消费组之间的关系?

码农架构

Java 大数据 程序员 架构

anyRTC新春大礼包

anyRTC开发者

音视频 WebRTC RTC

Kafka生产者哪些重要的参数是我们需要注意的?

码农架构

Java kafka 程序员 消息中间件 架构·

架构师训练营大作业

Geek_f06ede

“双循环”下的数字货币棋局

CECBC

数字货币

商务部CECBC专委会-商务联络部长王聚师:中医国际化的数字创新密码

CECBC

数字

图解分析:Kafka 生产者客户端工作原理

码农架构

Java 程序员 kafak 架构·

5分钟让你理解K8S必备架构概念,以及网络模型(上)

大数据 架构

重磅发布 | 3.4K Star可视化神器来啦

百度开发者中心

工具 可视化 #飞桨#

第十一周作业&总结

胡益

零基础实现Java直播(二):实现流程

ZEGO即构

架构师训练营大作业(二)

Geek_f06ede

函数式编程Stream接口真的有那么好用吗?

码农架构

Java 程序员 架构·

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