LLM 的真假几何结构研究
深度研究 LLM 对真假的认知机制,理论价值明显。
深度研究 LLM 对真假的认知机制,理论价值明显。
本页面包含一组交互式图表,用于探索大语言模型如何表征真相。它是 Samuel Marks 和 Max Tegmark 论文《真相的几何学:大语言模型对真/假数据集的表征中涌现出的线性结构》的配套页面。
为了生成这些可视化结果,我们首先提取事实陈述在 LLaMA-13B 中的表征。这些表征位于一个 5120 维空间中,维度太高,无法直接想象,因此我们使用 PCA,选取数据变化最大的两个方向。这样,我们就能为 5120 维数据绘制二维图像。更多细节请参阅这条脚注。¹
先来看我们的基础数据集,其中包含一些简单陈述,例如“The city of Beijing is in China”(北京市位于中国,真)或“Fifty-eight is larger than sixty-one”(五十八大于六十一,假)。将鼠标悬停在下方的数据点上,即可查看它们分别对应哪些陈述。
我们不确定为什么 smaller_than 数据集看起来不像其他数据集那样分离得那么明显。不过切换到三维视图后,效果会更好(见下方右图)。
即便只是这些简单的图,也已经有很多值得探索的内容!例如,在 larger_than 中,我们可以看到两个变化轴:一个将红色点云和蓝色点云分开,另一个则与点云平行,从左下指向右上。你能弄清楚第二个变化轴代表什么吗?答案见下文。
现在,让我们为这些陈述引入一些更复杂的逻辑结构。首先,通过添加单词“not”来否定陈述。
从视觉上看,否定陈述的“真相方向”与未否定陈述的“真相方向”相比如何?让我们检查一下:
这里,我们对两个数据集共同进行了 PCA¹。点击图中的图例,可以切换显示哪些数据集。
这里发生了什么?可能的解释有很多,但我们认为最有可能的是所谓的“相关性不一致导致的错位”(Misalignment from Correlational Inconsistency,MCI)假设。简而言之,MCI 假设存在某种混淆特征²:它在 cities 数据集中与真相正相关,而在 neg_cities 数据集中与真相负相关。更多讨论请参阅我们的论文。
现在,让我们尝试一些逻辑合取与析取。将鼠标悬停在下方的数据点上,可以查看这些合取/析取陈述是什么样的。
被圈出的数据点看起来是不是形成了一个略微独立的聚类?我们认为是的,而且这些陈述确实存在某种规律。看看你能否找出这个规律(答案见下文)。
到目前为止,我们观察的都只是第 12 层。但通过逐层扫描 LLaMA-13B,我们可以看到区分真陈述与假陈述的特征是如何涌现出来的。有趣的是,cities 开始分离的层与 cities_cities_conj(关于城市的陈述所组成的合取式)开始分离的层之间相差 4 层。这可能是因为 LLaMA-13B 以层级方式逐步构建概念,组合程度更高的概念需要更长时间才能涌现。
下面是上图的交互式版本,其中包含不同的数据集。
有趣的是,cities 和 neg_cities 最初沿相反方向对齐,随后逐渐旋转,最终像上图那样彼此正交(可以在左图中打开和关闭这些数据集来观察这一过程)。
到目前为止,所有数据集都经过了精心筛选,只包含没有争议、含义明确且简单的陈述。它们的多样性也不高——每个数据集都由单一模板生成。
接下来,我们将观察一些由其他来源改编而来、未经人工筛选的数据集。将鼠标悬停在下方图表上,可以查看这些数据集中的部分陈述。
为什么这些数据集没有分离成真/假两个聚类?原因在于它们具有更高的多样性。回想一下,PCA 会识别数据集中最显著的变化轴。在更多样化的数据集中,这些轴更有可能编码某种与真相无关的特征。例如,companies_true_false 中的陈述由三种不同模板生成,而前两个主成分主要编码的是这些模板之间的差异。common_claim_true_false 包含的陈述差异极大,例如“Rabbits can partially digest memories”(兔子可以部分消化记忆,假)和“Dolphins are capable of acts of impressive intelligence”(海豚能够展现出令人惊叹的智慧行为,真);即便如此,它仍然呈现出了如此明显的真/假分离,着实令人震惊!
如果希望看到真/假聚类的分离,我们可以借用从较为干净的数据集中识别出的某组 PCA 基。比如,下面是在从 cities 数据集中提取的 PCA 基下,对这些未经筛选的数据集进行的可视化。
我们此前主要关注真与假,但这里展示的表征中还包含更多信息。例如,我们曾在上文询问,larger_than 数据集中与真相无关的变化轴代表什么。对于“x is larger than y”这样的陈述,它看起来表示的是差值 x - y 的绝对值!³
我们还注意到,cities_cities_conj 中出现了一个独立的聚类,并向读者发起挑战,希望大家找出这个聚类的区别所在。观察几个示例后,我们发现涉及中国和印度的陈述经常出现在这个聚类中。它会不会是“中国/印度聚类”?这是一个合理的初步猜测,但并不完全正确!下面是这个聚类中的一些示例陈述:
Shantou 市位于中国,并且 Antwerpen 市也位于中国。
Meerut 市位于印度,并且 Varanasi 市也位于印度。
Ha’il 市位于沙特阿拉伯,并且 Astrakhan 市也位于沙特阿拉伯。
Goyang-si 市位于日本,并且 Nagoya 市也位于日本。
Multan 市位于墨西哥,并且 Tlaquepaque 市也位于墨西哥。
看起来,这个聚类对应的是合取式前后两部分中的国家相同的陈述!⁴
更具体地说,我们提取的是每条陈述最后一个 token 对应的 LLaMA-13B residual stream 表征。(请注意,我们的陈述始终以句号结尾。)我们通过减去表征向量的均值,对每个数据集进行中心化;当涉及多个数据集时(例如否定部分中的 cities 和 neg_cities),我们会分别对每个数据集的表征进行中心化。如果不这样做,两个数据集之间就会存在平移偏移。↩ ↩²
更具体地说,我们提取的是每条陈述最后一个 token 对应的 LLaMA-13B residual stream 表征。(请注意,我们的陈述始终以句号结尾。)我们通过减去表征向量的均值,对每个数据集进行中心化;当涉及多个数据集时(例如否定部分中的 cities 和 neg_cities),我们会分别对每个数据集的表征进行中心化。如果不这样做,两个数据集之间就会存在平移偏移。↩ ↩²
例如,这个其他特征可能编码了“位于某个国家”这一关系。对于“The city of Beijing is in China”这样的未否定陈述,该特征与真相正相关;对于“The city of Paris is not in France”这样的否定陈述,该特征则与真相负相关。↩
例如,这个其他特征可能编码了“位于某个国家”这一关系。对于“The city of Beijing is in China”这样的未否定陈述,该特征与真相正相关;对于“The city of Paris is not in France”这样的否定陈述,该特征则与真相负相关。↩
具体来说,这意味着,真、假“接近比较”之间的分离程度,并不低于真、假“明显比较”之间的分离程度——它们只是分别出现在各自聚类的右侧!这一点让我们感到意外。↩
具体来说,这意味着,真、假“接近比较”之间的分离程度,并不低于真、假“明显比较”之间的分离程度——它们只是分别出现在各自聚类的右侧!这一点让我们感到意外。↩
由于中国和印度是 cities 数据集中出现次数最多的国家,因此,在两部分国家相同的陈述中,绝大多数都与中国和印度有关。↩
由于中国和印度是 cities 数据集中出现次数最多的国家,因此,在两部分国家相同的陈述中,绝大多数都与中国和印度有关。↩