像ChatGPT所支持的大型语言模型在起草法律摘要、分析客户评论的情绪或将文档翻译成不同语言等任务上表现出色。
这些机器学习模型通常只使用自然语言来处理信息和回答查询,这使得它们难以执行需要数字或符号推理的任务。
例如,大型语言模型可能能够记住并背诵最近美国总统及其生日的列表,但如果问这个题目,“1950年后当选的哪些美国总统出生在星期三?”,该模型可能会失败(答案是吉米·卡特。)
麻省理工学院等机构的研究人员提出了一项新技术,该技术使大型语言模型能够通过生成程序来解决自然语言、数学和数据分析以及符号推理任务。该研究发表在arXiv预印本服务器上。
他们的方法称为自然语言嵌入式程序(NLEP),涉及提示语言模型创建和执行Python程序来解决用户的查询,然后将解决方案输出为自然语言。
他们发现,NLEP使大型语言模型能够在各种推理任务上实现更高的准确率。这种方法也是可推广的,这意味着一个NLEP提示可以重复用于多个任务。
NLEP还提高了透明度,因为用户可以检查程序以准确了解模型如何推理查询,如果模型给出了错误的答案,则可以修复程序。
“我们希望人工智能能够以透明和值得信赖的方式进行复杂的推理。虽然还有很长的路要走,但我们已经证明,在大型语言模型中结合编程和自然语言的能力,是迈向未来人们能够完全理解和信任人工智能模型内部发生的事情的一个非常好的潜在第一步,”麻省理工学院博士后、NLEP论文的共同主要作者HongyinLuo博士说。
该研究将在计算语言学协会北美分会的年会上发表。
使用程序解决问题
许多流行的大型语言模型的工作原理是,根据一些自然语言输入预测下一个单词或标记。虽然GPT-4等模型可用于编写程序,但它们将这些程序嵌入自然语言中,这可能会导致程序推理或结果出现错误。
麻省理工学院的研究人员在NLEP中采用了相反的方法。他们让模型完全用Python代码生成分步程序,然后在程序中嵌入必要的自然语言。
NLEP是一个包含四个步骤的问题解决模板。首先,模型调用解决任务所需的必要包或函数。第二步涉及导入任务所需知识的自然语言表示(例如美国总统生日列表)。对于第三步,模型实现了一个计算答案的函数。最后一步,模型将结果输出为一行自然语言,并根据需要自动进行数据可视化。
“它就像一个数字计算器,只要程序正确,它就总能给出正确的计算结果,”罗说。
用户可以轻松调查程序并直接修复代码中的任何错误,而不需要重新运行整个模型来排除故障。
这种方法也比其他一些方法效率更高。如果用户有许多类似的问题,他们可以生成一个核心程序,然后替换某些变量,而不需要重复运行模型。
为了促使模型生成NLEP,研究人员给了它一个编写Python程序的总体指令,提供了两个NLEP示例(一个是数学,一个是自然语言)和一个测试问题。
“通常,当人们进行这种小样本提示时,他们仍然必须为每个任务设计提示。我们发现,我们可以为许多任务设置一个提示,因为它不是一个教法学硕士解决一个问题的提示,而是一个教法学硕士通过编写程序解决许多问题的提示,”罗说。
麻省理工学院-IBM沃森人工智能实验室首席科学家LeonidKarlinsky表示:“让语言模型通过代码进行推理,为工具的使用、输出验证、对模型功能和思维方式的更有条理的理解等提供了许多机会。”