像 ChatGPT 所支持的大型语言模型在起草法律摘要、分析客户评论的情绪或将文档翻译成不同语言等任务上表现出色。
这些机器学习模型通常只使用自然语言来处理信息和回答查询,这使得它们难以执行需要数字或符号推理的任务。
例如,大型语言模型可能能够记住并背诵美国历任总统及其生日的列表,但如果问“1950 年后当选的哪些美国总统出生在星期三?”,该模型可能会失败(答案是吉米·卡特。)
麻省理工学院等机构的研究人员提出了一项新技术,使大型语言模型能够通过生成程序来解决自然语言、数学和数据分析以及符号推理任务。
他们的方法称为自然语言嵌入式程序 (NLEP),涉及提示语言模型创建和执行 Python 程序来解决用户的查询,然后将解决方案输出为自然语言。
他们发现,NLEP 使大型语言模型能够在各种推理任务上实现更高的准确率。这种方法也是可推广的,这意味着一个 NLEP 提示可以重复用于多个任务。
NLEP 还提高了透明度,因为用户可以检查程序以准确了解模型如何推理查询,如果模型给出了错误的答案,则可以修复程序。
“我们希望人工智能能够以透明和值得信赖的方式进行复杂的推理。虽然还有很长的路要走,但我们已经证明,在大型语言模型中结合编程和自然语言的能力,是迈向未来人们能够完全理解和信任人工智能模型内部发生的事情的一个非常好的潜在第一步,”麻省理工学院博士后、NLEP 论文的共同主要作者 Hongyin Luo 博士 (2022 年)表示。
与罗一起参与撰写这篇论文的还有香港中文大学研究生张天华、北京大学本科生葛佳欣、麻省理工学院电子工程与计算机科学系助理教授、计算机科学与人工智能实验室 (CSAIL) 成员 Yoon Kim、CSAIL 高级研究员兼口语系统小组负责人 James Glass 等。这项研究将在计算语言学协会北美分会的年度会议上发表。
使用程序解决问题
许多流行的大型语言模型的工作原理是,根据一些自然语言输入预测下一个单词或标记。虽然 GPT-4 等模型可用于编写程序,但它们将这些程序嵌入自然语言中,这可能会导致程序推理或结果出现错误。
麻省理工学院的研究人员在 NLEP 中采用了相反的方法。他们让模型完全用 Python 代码生成分步程序,然后在程序中嵌入必要的自然语言。
NLEP 是一个包含四个步骤的问题解决模板。首先,模型调用解决任务所需的必要包或函数。第二步涉及导入任务所需知识的自然语言表示(例如美国总统生日列表)。对于第三步,模型实现一个计算答案的函数。最后一步,模型将结果输出为一行自然语言,并根据需要自动进行数据可视化。
“它就像一个数字计算器,只要程序正确,它就总能给出正确的计算结果,”罗说。
用户可以轻松调查程序并直接修复代码中的任何错误,而不需要重新运行整个模型来排除故障。
这种方法也比其他一些方法效率更高。如果用户有许多类似的问题,他们可以生成一个核心程序,然后替换某些变量,而不需要重复运行模型。
为了促使模型生成 NLEP,研究人员给了它一个编写 Python 程序的总体指令,提供了两个 NLEP 示例(一个是数学,一个是自然语言)和一个测试问题。
“通常,当人们进行这种小样本提示时,他们仍然需要为每项任务设计提示。我们发现,我们可以为许多任务设置一个提示,因为它不是教法学硕士解决一个问题的提示,而是教法学硕士通过编写程序解决许多问题的提示,”罗说。
麻省理工学院 – IBM 沃森人工智能实验室首席科学家 Leonid Karlinsky 表示:“使用语言模型对代码进行推理,为工具使用、输出验证、对模型功能和思维方式的更有条理的理解等提供了许多机会。”
“这里没有魔法”
在提示 GPT-4 解决一系列符号推理任务(例如跟踪打乱的物体或玩 24 点游戏)以及指令跟踪和文本分类任务时,NLEP 的准确率超过 90%。研究人员发现,NLEP 的准确率甚至比特定任务的提示方法高出 30%。该方法还显示出比开源 LLM 更好的性能。
除了提高大型语言模型的准确性之外,NLEP 还可以改善数据隐私。由于 NLEP 程序在本地运行,因此敏感的用户数据无需发送到 OpenAI 或 Google 等公司进行模型处理。
此外,NLEP 可以使小型语言模型表现得更好,而无需为某项任务重新训练模型,这可能是一个昂贵的过程。
“这里没有什么魔法。我们没有更昂贵或更花哨的语言模型。我们所做的就是使用程序生成而不是自然语言生成,我们可以让它的表现更好,”罗说。
然而,NLEP 依赖于模型的程序生成能力,因此该技术对于在有限数据集上训练的较小模型效果不佳。未来,研究人员计划研究使较小语言模型生成更有效的 NLEP 的方法。此外,他们还希望研究提示变化对 NLEP 的影响,以增强模型推理过程的稳健性。
这项研究得到了香港感知与互动智能研究中心的部分支持。