作者丨Alberto Romero(工程师、神经科学家)
译者丨张雨佳
2017 年,人工智能领域的大咖、现任特斯拉人工智能总监的 Andrej Karpathy 发表了一篇名为“软件 2.0”的帖子。因为作者的高人气、再加上文章中包含争议性观点,这篇帖子在网络上被大量转载。
作者认为神经网络在许多方面取代了传统的编码方式,这种转变带来的影响比大家想象的要深。因为神经网络已经不仅仅是一种简单的分类方法,而是一种全新的编程范式。
你可以同意或否认他的观点,但不可否认的是,深度学习已经有了一定程度的发展。直至去年 GPT-3 的出现,让我们看到了另一种编程范式。科技博客作者 GwernBranwen 将这种可能改变游戏规则的编程方式叫做“Prompt programming”(提示符编程),我们从此进入了软件 3.0 时代。
1
软件 3.0:提示符编程
2020 年 OpenAI 提出了 GPT-3 模型,它表现出来的高性能震惊了人工智能领域。GPT-3 可以按照英文指令编写代码或吉他乐谱,也可以用它进行对话、写诗或者思考未来和生活的意义。而且未经训练过的 GPT-3 就可以完成这些任务,它是一个多任务元学习模型。
GPT-3 的创新之处在于,当我们用自然语言书写一个带有任务的文本(提示符)时,GPT-3 就能自动“理解”要完成哪些任务。
例如,提示符是:“我爱你→Te quiero(西班牙语)。我有很多工作→Tengomucho trabajo。GPT-3是有史以来最好的人工智能系统→_____”,GPT-3 就能知道需要完成英语-西班牙语的翻译。
Gwern 认为,可以将提示符理解为一种新的编程范式:“因为[提示符]采用了另一种方式去使用[深度学习]模型,所以最好将其看成一种新的编程方式。利用提示符“程序”可以对 GPT-3 进行编程,以完成新的任务。”
每当让系统执行任务时,我们都会创建一个特定的 GPT-3 版本。用特定任务“编程”得到的 GPT-3,可以完成其他 GPT-3 版本不能完成的任务。
但是如果编程效果较差,GPT-3 执行任务的能力也会随着变差。因此一些人认为 GPT-3 缺乏逻辑和常识推理能力,但 Gwern 认为 GPT-3 的失败应该归因于糟糕的提示符。为了显示科学的严谨性,Gwern 对多个不同的提示符反复进行测试,发现好的提示符可以对 GPT-3 进行充分“编程”以执行任务,证明 GPT-3 并不是缺乏逻辑和常识推理能力的。
同时,Gwern 认为良好的提示符是发挥 GPT-3 真正潜力的关键。与其他编程形式一样,我们可以通过大量的实践对提示符进行改进和标准化。而且人们在系统中发现的局限性,往往是因为人类缺乏该部分的能力。
如果我们想让系统完成特定的行为,就得先学会与它沟通。
比如你想用 Python 或 C 语言进行编程,就需要提前知道语法规则,否则编写的任何程序都会无法运行。但你并不能将这推卸给电脑,并认为电脑不具备完成这项任务的能力。
以下是将提示符作为编程范式的两个原因:
第一:提示符允许用户从系统中生成具体的符合自己要求的行为,这与编码的定义类似。即给定一个输入,然后程序按照一组特定指令执行以完成具体功能。
第二:提示符有好有坏,所以我们应该多次实验以确定最佳方法并对其标准化。在传统编码中,我们必须学习语言语法、变量操作、函数等等。对于神经网络,我们必须学会去除数据集中的偏差和噪声。提示符与上面两种方法类似。
如果将提示符编程理解为软件 3.0,那么该如何对待传统的编码方式(软件 1.0)和神经网络(软件 2.0)呢?
提示符是否可以取代这些编程范式?
程序员是否需要将提示符作为一项新的必备技能添加到技能库中?
提示符会改变我们与机器的沟通方式吗?
2
提示符既不会取代传统编码,也不会取代神经网络
去年,Frederik Bussler 在《Towards Data Sciencearguing(数据科学)》上写了一篇很受欢迎的文章,认为 GPT-3 可能会推进编码方式的发展,达到我们可理解(以及无代码和 autoML)编码的尽头。
GPT-3 具有生成良好代码的能力,但它能完成的功能很大程度上取决于使用的提示符是否能传达人们的意图。并且使用 GPT-3 也不会影响编程的简单性,不然就无异于大材小用了。
神经网络也是如此。
Karpathy 认为软件 2.0 可以取代软件 1.0 中的一部分,比如有些问题很难用明确的程序完成和解决,但如果采用收集数据对神经网络进行训练的方法,可能就很容易解决这些困难问题。不过对于某些问题来说,传统编码仍然是首选的最优方法。
软件 3.0 可以覆盖的任务范围并不会 100% 包含软件 1.0 或 2.0 的范围。
因此虽然每种范式的能力范围会有重叠,但它们各自都会有比其他范式表现得更好更有效的领域,从而找到一种稳定的和谐。因此,这些软件范式间并不是相互竞争关系,而是试图找到一种完美的共生关系。
这些范式都是实现真正人工智能的重要组成部分。人类也是由生物软件组成的,某种程度上可以与这些范例相对应。
3
软件 1.0、2.0 和 3.0——了解事情全貌
“[软件 2.0]的未来毫无疑问是光明的,因为当我们开发 AGI 时,必然会使用软件2.0进行编写。”

                                                                               ——Andrej Karpathy
我不同意 Karpathy 的预测。我认为 AGI(人工通用智能)将会是三种编程范式(或者其他尚未发现的范式)的组合。想要理解其中的原因,最好的方法是与真正的智能体——人类,进行类比。
  • 软件1.0
在二十一世纪 10 年代神经网络广泛兴起之前,所有的代码都需要手动编写。所以想要让系统完成特定的行为,就必须明确每种情况下系统需要遵循的指令。传统编码的程序完全按照编写的代码运行,不是黑盒,也不会进行学习。
这也是进化论在创造遗传编码时所考虑的东西。
我们出生时并不像一张白纸,而是有一套由基因决定的、根植于大脑中的模版。我们将这称为生物软件 1.0。基因决定了我们有两只眼睛、两条胳膊和两条腿,包括金发和棕绿色的眼睛。
  • 软件2.0
Karpathy 说,软件 2.0 包括数据集的管理和神经网络架构的设计。
我们需要指定程序的结构并提供程序的输入数据,但不用定义具体内容。神经网络可以通过训练,“编写”自己内部的“程序权重”来自主学习需要完成的任务。
生物软件 2.0 则是成长过程中的经历和感悟。
人们生来就是一个半空的结构,等待着各种物质和社会信息的灌输。基因会硬性要求我们有两只手臂,但我们是学习西班牙语还是英语,什么时候学会走路,如何更好地掌握世界的运作方式。这些都不是由基因决定,而是取决于环境和我们与世界的接触,类似于通过数据集来优化程序。
  • 软件 3.0
通过提示符可以生成特定的 GPT-3。某种意义上,特定的提示符 GPT-3 可以完成其他系统没有学习到的任务。每个特定的 GPT-3 都有学习任务的潜力,但只在有激励时才会发生。
生物软件 3.0 则是作为成年人所经历的具体学习:学习的东西、读的书,从事的工作,掌握的能力和技能。因此,所有人都有类似的潜力去学习这些技能,但每个人都只选择了一部分技能和知识进行学习。这些选择会改变我们的大脑,就像提示符改变了 GPT-3 的能力一样。
值得一提的是,以上对生物软件的类比虽然能说明问题,但同时也简化了问题。生物软件实际上在各个层面上都起作用。我们的基因取决于环境,选择学习工程学或医学取决于我们是否有与生俱来的天赋。所以通过这个类比,只是想让大家意识到要想实现 AGI 需要更多样的软件范式。
AGI 可能需要传统编码来定义基础的、不可改变的结构元素。通过神经网络(或其他深度学习框架)学习外部和内部数据。最后还要通过提示符进行交互,以掌握特定知识。
正如 Karpathy 所说,只通过软件 2.0 是无法构建 AGI 的,它需要从每种范例中获取不同的东西。未来的 AGI 将拥有人工基因组来感知世界,成为一个元学习者(meta-learner)。人们则是利用身体进行实贱,与世界交互。发展型机器人则试图通过结合人工智能、机器人技术和认知科学来实现更好的性能。
*声明:该篇文章只代表作者观点。

推荐阅读

由于微信公众号试行乱序推送,您可能不再能准时收到AI科技评论的推送。为了第一时间收到AI科技评论的报道, 请将“AI科技评论”设为星标账号,以及常点文末右下角的“在看”。

继续阅读
阅读原文