本文转自苏神的博客
在分析模型的参数时,有些情况下我们会将模型的所有参数当成一个整体的向量,有些情况下我们则会将不同的参数拆开来看。比如,一个7B大小的LLAMA模型所拥有的70亿参数量,有时候我们会将它当成“一个70亿维的向量”,有时候我们会按照模型的实现方式将它看成“数百个不同维度的向量”,最极端的情况下,我们也会将它看成是“七十亿个1维向量”。既然有不同的看待方式,那么当我们要算一些统计指标时,也就会有不同的计算方式,即局部计算和全局计算,这引出了局部计算的指标与全局计算的指标有何关联的问题。
本文我们关心两个向量的余弦相似度。如果两个大向量的维度被拆成了若干组,同一组对应的子向量余弦相似度都很大,那么两个大向量的余弦相似度是否一定就大呢?答案是否定的。特别地,这还跟著名的“辛普森悖论”有关。
问题背景
这个问题源于笔者对优化器的参数增量导致的损失函数变化量的分析。具体来说,假设优化器的更新规则是:
但问题来了,正如本文开头所说,模型的参数有不同的拆分方式,我们是将模型所有参数当成一个大向量来算更新向量与梯度的余弦(全局),还是每一层、每个参数单独来算(局部)?笔者两者都做了,并且对局部余弦做了截断(保证每个参数对应的更新向量与梯度的余弦大于某个正阈值),然后发现全局居然小于该阈值。初见之下感觉比较意外,于是简单分析了一番。
简单分析
现在问题抽象为:
假如两个向量的局部余弦相似度都不小于
,那么这两个向量的全局余弦相似度一定不小于λ吗?
答案大家已经知道了,是否定的。否定只需要举一个反例,假设x=(1,1),y=(1,2),很明显x≠y,所以cos(x,y)≠1,但是它们的子向量——也就是每个分量——都是正数,正数作为一维向量,它们的余弦相似度都是1,所以我们就得到了一个局部余弦相似度全是1、全局相似度小于1的反例。
更一般的分析,我们可以设
如果让
至于上界,则可以证明:
(再次强调,以上证明都是在
相关悖论
以上结果有什么更现实的对应吗?有,将它放到相关性分析中,就引申出了著名的“辛普森悖论(Simpson’s paradox)”。
我们知道,有个衡量线性相关性的系数叫做“皮尔逊系数(Pearson Coefficient)”,定义为
再认真观察一下,如果我们记
而“辛普森悖论”说的更彻底一些,说的是每一批数据都是正相关,合起来不仅可能是线性无关,还可能是负相关,这是因为相关系数相比单纯的余弦相似度多了个 x, y 参数,可调的自由度更大。几何图像也非常直观,比如下图:
“辛普森悖论”直观图像
上图中,蓝色数据完全在同一条直线上,而且斜率为正,所以相关系数为1,红色数据也是如此,它们在自己的批次内都是“完全正线性相关”。但是将数据合起来后,如果非要用一条直线拟合,那么只能是虚线,而且斜率为负,即变成了负相关。这就构成了“辛普森悖论”的一个经典例子。
文章小结
本文简单讨论了高维向量的局部余弦相似度与全局余弦相似度之间的关系,并进一步讨论了与之相关的“辛普森悖论”。