

本文最初刊载于 MIT Press。
2017年,谷歌的研究人员推出了一种名为“Transformer”的新型机器学习程序,用于处理语言。虽然他们主要关注的是改进机器翻译——Transformer的名字就源于将一种语言转换成另一种语言的目标——但AI社区很快意识到Transformer具有巨大的、深远的影响力。
通过对海量文档进行训练,Transformer能够根据前文预测接下来的内容,从而掌握了文字节奏的惊人技巧。你可以说出一个想法,就像一个非常了解你的朋友一样,Transformer可以帮你完成句子。如果你的输入是一个问题,Transformer就会给出一个答案。更令人惊讶的是,如果你开始描述一个程序,它会在你停下的地方继续,并输出该程序。
长期以来,人们都知道编程很难,因为它有晦涩的符号和对错误毫不留情的态度。有大量证据表明,初级程序员甚至在指定像计算数值平均值这样的简单任务时都会遇到困难,失败率超过一半。即便是专业程序员也曾写出导致飞船坠毁、汽车甚至互联网本身瘫痪的错误代码。
因此,当人们发现像ChatGPT这样的Transformer系统可以将随意的、人类可读的描述转换成可工作的代码时,人们感到非常兴奋。想到只要会写字就能通过生成式AI写程序,这真是令人振奋。AI浪潮的建筑师之一Andrej Karpathy宣称,“目前最热门的新编程语言是英语。” 随着近乎每日公布的惊人进展,你很容易相信学习编程的时代已经过去。但是,尽管最近的发展从根本上改变了新手和专家可能编码的方式,但编程的民主化使得学习编程比以往任何时候都更加重要,因为它赋予了更广泛的人群掌握其优势的能力。生成式AI让事情变得更容易,但它并没有让事情变得简单。
我之所以对没有编程经验的人能够轻易使用Transformer进行编程的说法持怀疑态度,主要有三个原因。第一个是幻觉问题。Transformer以产生听起来合理但却是胡说八道的内容而闻名,尤其是在它们不确定下一步是什么的时候。毕竟,它们是根据过去的经验进行推测,而不是承认错误。想想这对编程意味着什么。
假设你想编写一个计算平均值的程序。你用文字描述你的需求,然后Transformer写出程序。太棒了!但是程序是正确的吗?还是Transformer加入了了一个bug?Transformer可以向你展示程序,但如果你不懂编程,这可能也帮不上忙。我自己也做过这个实验,我看到GPT(OpenAI的“生成式预训练Transformer”,是谷歌团队想法的一个分支)犯了一些令人惊讶的错误,比如使用了错误的平均值计算公式,或者在计算平均值之前将所有数字四舍五入为整数。这些都是小错误,很容易修复,但它们需要你能够读懂Transformer生成的程序。
实际上,编写任务的口头描述是相当困难的,即使是让别人来理解。
通过让Transformer不易出错,并提供更多的测试和反馈,使它们输出的程序的功能更加清晰,或许可以部分解决这个挑战。但还有一个更深层、更具挑战性的第二个问题。实际上,编写任务的口头描述是相当困难的,即使是让别人来理解。任何尝试按照说明组装家具的人都应该很清楚这一点。人们嘲笑宜家的说明书,但他们可能不记得宜家出现之前的最高水平是什么样的。那时候很糟糕。我小时候在70年代买了许多恐龙模型套件,能否成功组装一条迷惑龙,完全是靠运气。
我和一些合作者正在研究这个问题。在一个试点研究中,我们从网上招募了配对的参与者,将他们分为“发送者”和“接收者”。我们向发送者解释了一个版本的平均值计算问题。我们测试他们,以确认他们理解了我们的描述。他们做到了。然后,我们让他们用自己的话向接收者解释这个任务。他们也做到了。然后,我们测试接收者,看他们是否理解。结果,接收者能否完成任务,大约是靠运气。英语可能是一种热门的编程语言,但它和那些冷冰冰的编程语言一样容易出错!
最后,将编程广泛地视为让计算机执行你想要的行为的过程,这表明最终你无法取代那些决定这些行为应该是什么样的人。也就是说,生成式AI可以帮助你更直接地将你期望的行为转化为计算机可以执行的形式。但它无法为你选择目标。而能够决定目标的人群越广泛,计算就会变得越好,也越具代表性。
在生成式AI时代,每个人都能够参与类似编程的活动,指示计算机为自己做事。但是,无论你是在与人、传统的编程语言,还是新的Transformer沟通,准确地表达你的意愿都需要训练、努力和练习。生成式AI通过极大地扩展计算机理解我们的能力,正在帮助我们跨越沟壑。但如何被理解,最终还是需要我们自己去学习。
Michael L. Littman是布朗大学的大学教授,计算机科学系教授,并在佐治亚理工学院计算机学院担任兼职教授。他被美国科学促进会选为领导者,致力于人工智能科学的公众参与。他是《Code to Joy》一书的作者。