虽然大型预训练语言模型(LLM)在一系列下游任务中展现出飞速提升的性能,但它们是否真的理解其使用和生成的文本语义?
长期以来,AI社区对这一问题存在很大的分歧。有一种猜测是,纯粹基于语言的形式(例如训练语料库中token的条件分布)进行训练的语言模型不会获得任何语义。相反,它们仅仅是根据从训练数据中收集的表面统计相关性来生成文本,其强大的涌现能力则归因于模型和训练数据的规模。这部分人将LLM称为「随机鹦鹉」。
但也有一部分人不认同此观点。一项最近的研究表明,大约51%的NLP社区受访者同意:「一些仅通过文本训练的生成模型,在拥有足够的数据和计算资源的情况下,可以以某种有意义的方式理解自然语言(超越表面层面的统计关联,涉及对语言背后的语义和概念的理解)」。
为了探究这个悬而未决的问题,来自MIT CSAIL的研究人员展开了详细研究。
论文地址:https://paperswithcode.com/paper/evidence-of-meaning-in-language-models
该研究使用的语言模型仅训练成为文本预测下一个token的模型,并制定两个假设:
为了探究 H1 和 H2两个假设的正确性,该研究将语言建模应用于程序合成任务,即在给定输入输出示例形式规范的情况下合成程序。该研究采用这种方法的主要是因为程序的意义(和正确性)完全由编程语言的语义决定。
具体来说,该研究在程序及其规范的语料库上训练语言模型(LM),然后使用线性分类器探测 LM 对于程序语义表征的隐藏状态。该研究发现探测器提取语义的能力在初始化时是随机的,然后在训练期间经历相变,这种相变与 LM 在未见过规范的情况下生成正确程序的能力强相关。此外,该研究还展示了一项介入实验的结果,该实验表明语义在模型状态中得以表征(而不是通过探测器(probe)进行学习)。
该研究的主要贡献包括:
1、实验结果表明,在执行预测下一个token任务的 LM 中出现了有意义的表征。具体来说,该研究使用经过训练的 LM 在给定几个输入输出示例的情况下生成程序,然后训练一个线性探测器,以从模型状态中提取有关程序状态的信息。研究者发现内部表征包含以下线性编码:(1) 抽象语义(抽象解释)——在程序执行过程中跟踪指定输入;(2) 与尚未生成的程序token对应的未来程序状态预测。在训练期间,这些语义的线性表征与 LM 在训练步骤中生成正确程序的能力同步发展。
2、该研究设计并评估了一种新颖的介入(interventional)方法,以探究从表征中提取意义时LM 和探测器的贡献。具体来说,该研究试图分析以下两个问题中哪个成立:(1) LM 表征包含纯(句法)转录本(transcript),同时探测器学习解释转录本以推断含义;(2)LM 表征包含语义状态,探测器只是从语义状态中提取含义。实验结果表明 LM 表征实际上与原始语义对齐(而不是仅仅编码一些词汇和句法内容),这说明假设H2是错误的。
3、该研究表明 LM 的输出与训练分布不同,具体表现为LM 倾向于生成比训练集中的程序更短的程序(并且仍然是正确的)。虽然 LM 合成正确程序的能力有所提高,但LM 在训练集中的程序上的困惑度仍然很高,这表明假设H1是错误的。
总的来说,该研究提出了一个框架,用于根据编程语言的语义对 LM 进行实证研究。这种方法使我们能够定义、测量和试验来自底层编程语言的精确形式语义的概念,从而有助于理解当前 LM 的涌现能力。
该研究使用跟踪语义作为程序含义模型。作为编程语言理论中一个基础主题,形式语义学主要研究如何正式地为语言中的字符串分配语义。该研究使用的语义模型包括跟踪程序的执行:给定一组输入(即变量赋值),一个(句法)程序的含义是用从表达式中计算出的语义值标识的,跟踪轨迹是根据输入执行程序时生成的中间值序列。
将跟踪轨迹用于程序含义模型具有几个重要原因:首先,准确跟踪一段代码的能力与解释代码的能力直接相关;其次,计算机科学教育也强调跟踪是理解程序开发和定位推理错误的重要方法;第三,专业的程序开发依赖基于跟踪的调试器(dbugger)。
该研究使用的训练集包含100万个随机抽样的Karel程序。20世纪70年代,斯坦福大学毕业生 Rich Pattis 设计了一个程序环境,让学生教机器人来解决简单的问题,这个机器人被称为Karel机器人。
该研究通过随机采样来构造训练样本的参考程序,然后采样5个随机输入并执行程序得到对应的5个输出。LM 被训练为对样本语料库执行下一个token预测。在测试时,该研究只提供输入输出前缀给LM,并使用贪心解码完成程序。下图1描绘了一个实际的参考程序和经过训练的 LM 的完成情况。
该研究训练了一个现成的 Transformer 模型对数据集执行下一个token预测。经过 64000 个训练步骤(training step),大约 1.5 个 epoch,最终训练好的 LM 在测试集上达到了 96.4% 的生成准确率。每 2000 个训练步骤,该研究会捕获一个跟踪数据集。对于每个训练轨迹数据集,该研究训练一个线性探测器来预测给定模型状态的程序状态。
研究者对以下假设进行了研究:在训练语言模型执行下一个token预测的过程中,语义状态的表示会作为副产品出现在模型状态中。考虑到最终训练得到的语言模型达到了96.4%的生成准确性,如果否定这个假设,将与H2一致,即语言模型已经学会「仅仅」利用表面统计来一致生成正确的程序。
为了测试这个假设,研究者训练了一个线性探测器,将语义状态从模型状态中提取出来,作为5个独立的4-way任务(每个输入面向一个方向),如第2.2节所述。
意义的涌现与生成准确性呈正相关
图2展示了主要结果。研究者的第一个观察结果是,语义内容从随机猜测的基线表现(25%)开始,并且在训练过程中显著增加。这个结果表明,语言模型的隐藏状态确实包含语义状态的(线性)编码,并且关键的是,这种意义是在一个纯粹用于对文本执行下一个token预测的语言模型中出现的。
将生成准确性与语义内容进行线性回归,二者在训练步骤中呈现出意外的强大且具有统计学意义的线性相关性(R2 = 0.968, p
表征是对未来程序语义的预测
前一节讨论了语言模型能否表示其生成的文本的意义。本文的结果对这个问题给出了积极的答案,即语言模型能够(抽象地)解释生成的程序。然而,解释者(interpreter)并不等同于合成者(synthesizer),仅有理解能力是不足以进行生成的。就人类语言的产生而言,广泛的共识是语言起源于思维中的一种非言语的信息,然后被转化为反映初始概念的话语(utterance)。研究者假设训练后的语言模型的生成过程遵循类似的机制,即语言模型的表示编码了尚未生成的文本的语义。
为了验证这个假设,他们使用与上述相同的方法训练了一个线性探测器,来预测从模型状态中得到的未来语义状态。需要注意的是,由于他们使用贪婪解码策略,未来的语义状态也是确定性的,因此这个任务是明确定义的。
图3展示了线性探测器在预测未来1步和2步的语义状态方面的表现(绿段线表示「Semantic ( 1)」,绿点线表示「Semantic ( 2)」)。与先前的结果类似,探测器的性能从随机猜测的基线开始,然后随着训练显著提高,并且他们还发现未来状态的语义内容与生成准确性(蓝线)在训练步骤中呈现出强烈的相关性。将语义内容与生成准确性进行线性回归分析得到的R2值分别为0.919和0.900,对应于未来1步和2步的语义状态,两者的p值均小于0.001。
他们还考虑了这样一个假设,即模型的表示只编码了当前的语义状态,而探测器仅仅是从当前语义状态预测未来的语义状态。为了测试这个假设,他们计算了一个最优分类器,将当前程序中的ground truth面向方向映射到未来程序中的4个面向方向之一。
需要注意的是,其中的5个操作中有3个保持了面向方向,并且下一个 token是均匀采样的。因此他们预期,对于未来1步的情况,预测未来的语义状态的最优分类器应该通过预测面向方向保持不变来达到60%的准确率。事实上,通过直接拟合测试集,他们发现从当前语义状态预测未来语义状态的上限分别为62.2%和40.7%(对应于未来1步和2步的情况)。相比之下,当给定探测器正确预测当前状态的条件下,探测器在预测未来状态方面的准确率分别为68.4%和61.0%。
这表明,探测器从模型状态中提取未来语义状态的能力不能仅仅通过从当前语义状态的表示中推断得出。因此,他们的结果表明,语言模型会学习去表示尚未生成的token的含义,这否定了语言模型无法学习意义的观点(H2),并且也表明生成过程不仅仅基于纯粹的表面统计(H1)。
接下来,研究者通过比较训练后的语言模型生成的程序分布与训练集中的程序分布,提供反驳H1的证据。如果H1成立,他们预期两个分布应该大致相等,因为语言模型只是在重复训练集中文本的统计相关性。
图6a显示了LM生成的程序的平均长度随时间的变化情况(实线蓝色线条),与训练集中参考程序的平均长度(虚线红色线条)进行对比。他们发现二者存在统计学上的显著差异,这表明LM的输出分布确实与其训练集中的程序分布不同。这与H1中提到的观点(即LM只能重复其训练数据中的统计相关性)相矛盾。
最后,他们还测量了LM在训练集中的程序上的困惑度随时间的变化情况。图6b展示了他们的结果。可以看到,LM从来没有学会很好地拟合训练集中程序的分布,这进一步反驳了H1的观点。这可能是因为在训练集中随机抽样的程序包含了许多无操作指令,而LM更倾向于生成更简洁的程序。有趣的是,困惑度的急剧增加——当LM超越了模仿阶段——似乎导致了生成准确率(和语义内容)的提高。由于程序等价性问题与程序语义密切相关,LM能够生成简短且正确的程序表明它确实学到了语义的某个方面。
详细内容参见原论文。
以上是有证据了,MIT表明:大型语言模型≠随机鹦鹉,确实能学到语义的详细内容。更多信息请关注PHP中文网其他相关文章!