【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

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

  • 2021-09-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

公众号推荐:

2024 年 1 月,InfoQ 研究中心重磅发布《大语言模型综合能力测评报告 2024》,揭示了 10 个大模型在语义理解、文学创作、知识问答等领域的卓越表现。ChatGPT-4、文心一言等领先模型在编程、逻辑推理等方面展现出惊人的进步,预示着大模型将在 2024 年迎来更广泛的应用和创新。关注公众号「AI 前线」,回复「大模型报告」免费获取电子版研究报告。

AI 前线公众号
2021-09-03 14:334137
用户头像
刘燕 InfoQ高级技术编辑

发布了 1112 篇内容, 共 489.8 次阅读, 收获喜欢 1966 次。

关注

评论

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

没有一个冬天不会过去!疫情当下,企业“逆势而上”必选“上云”跑道

华为云开发者联盟

云计算 新基建 华为云 企业上云 云服务器

第11周作业

娄江国

物联网SIM卡和SIM卡真的不是一回事

华为云开发者联盟

人工智能 物联网 华为云 传感器 SIM卡

全票通过!易观开源项目DolphinScheduler进入Apache孵化器

易观大数据

CHAR与VARCHAR详解

Simon

MySQL

学习笔记

Qx

学习

区块链技术助力甘肃建食安信息追溯平台 为食品安全“立规矩”

CECBC

食品追溯 食品安全

开源,轻松实现RTC与SIP互通

anyRTC开发者

WebRTC 编码 SIP 源码解析

linux入门系列9--用户管理及文件权限控制

黑马腾云

Linux centos centos7 linux运维 linux用户权限

要老婆吗? AR一键生成的那种

程序员生活志

linux入门系列8--shell编程入门

黑马腾云

Linux centos Shell linux命令 linux编程

内容审核平台助力猫爪构建健康安全的社交环境

百度大脑

人工智能 百度 百度大脑 内容审核

JVM原理与实战

东哥

Devops与敏捷二者能否结合?

禅道项目管理

DevOps Scrum 敏捷开发

企业信息化怎么构建?

代码制造者

大数据 低代码 企业信息化 零代码 编程开发

linux入门系列7--管道符、重定向、环境变量

黑马腾云

Linux centos 运维 linux命令 管道符

一位男程序员的英语学习之路

盛安德软件

【Kafka】消费者客户端小结(java)

guoguo 👻

​JDK1.8新特性(八):还在重复写空指针检查代码?赶紧使用Optional吧!​

xcbeyond

Java 新特性 JDK1.8 Optional JDK1.8新特性

非IT行业大企程序员讲述MIS系统开发案例

Learun

敏捷开发 企业信息化 企业管理 .net core 「Java 25周年」

可能是首个支持部署 Deno 前后端应用的部署工具

binggg

taro GitHub 大前端 deno Node

网页游戏

小端taro

INT类型知多少

Simon

MySQL

学习python(嵩天老师的课)

Geek_2a27b0

linux入门系列10--firewalld防火墙管理

黑马腾云

Linux centos 防火墙 linux运维 linux防火墙

35岁大厂程序员被劝退!老板说:没年轻人有冲劲!真有内味了吗?

程序员生活志

程序员 职场

终极学习法,你能学会任何东西--程序员的学习之路

盛安德软件

英特尔神经拟态芯片Loihi大显身手 帮助轮椅上的儿童实现独立生活

最新动态

第11周总结

娄江国

区块链的想象,解决贫富差距

CECBC

区块链 货币 股市

英伟达收购ARM:双赢还是灾难?

脑极体

放心,GPT-3不会“杀死”编程_AI&大模型_Alberto Romero_InfoQ精选文章