局部余弦相似度大,全局余弦相似度一定也大吗?
By 苏剑林 | 2024-01-09 | 33463位读者 |在分析模型的参数时,有些情况下我们会将模型的所有参数当成一个整体的向量,有些情况下我们则会将不同的参数拆开来看。比如,一个7B大小的LLAMA模型所拥有的70亿参数量,有时候我们会将它当成“一个70亿维的向量”,有时候我们会按照模型的实现方式将它看成“数百个不同维度的向量”,最极端的情况下,我们也会将它看成是“七十亿个1维向量”。既然有不同的看待方式,那么当我们要算一些统计指标时,也就会有不同的计算方式,即局部计算和全局计算,这引出了局部计算的指标与全局计算的指标有何关联的问题。
本文我们关心两个向量的余弦相似度。如果两个大向量的维度被拆成了若干组,同一组对应的子向量余弦相似度都很大,那么两个大向量的余弦相似度是否一定就大呢?答案是否定的。特别地,这还跟著名的“辛普森悖论”有关。
问题背景 #
这个问题源于笔者对优化器的参数增量导致的损失函数变化量的分析。具体来说,假设优化器的更新规则是:
\begin{equation}\boldsymbol{\theta}_{t+1} = \boldsymbol{\theta}_t - \eta_t \boldsymbol{u}_t\end{equation}
其中$\boldsymbol{u}_t$是某个指定更新方向(的负方向)的向量。此时泰勒展开到一阶有
\begin{equation}\mathcal{L}(\boldsymbol{\theta}_{t+1}) = \mathcal{L}(\boldsymbol{\theta}_t - \eta_t \boldsymbol{u}_t)\approx \mathcal{L}(\boldsymbol{\theta}_t) - \eta_t \langle\boldsymbol{u}_t,\boldsymbol{g}_t\rangle\end{equation}
这里的$\boldsymbol{g}_t$就是梯度$\nabla_{\boldsymbol{\theta}_t}\mathcal{L}(\boldsymbol{\theta}_t)$,所以说,损失函数的变化量近似为
\begin{equation}- \eta_t \langle\boldsymbol{u}_t,\boldsymbol{g}_t\rangle = - \eta_t \Vert\boldsymbol{u}_t\Vert \Vert\boldsymbol{g}_t\Vert \cos(\boldsymbol{u}_t,\boldsymbol{g}_t)\end{equation}
所以笔者想到了观察一下$\boldsymbol{u}_t$与$\boldsymbol{g}_t$的余弦相似度,即更新向量与梯度的方向一致性。
但问题来了,正如本文开头所说,模型的参数有不同的拆分方式,我们是将模型所有参数当成一个大向量来算更新向量与梯度的余弦(全局),还是每一层、每个参数单独来算(局部)?笔者两者都做了,并且对局部余弦做了截断(保证每个参数对应的更新向量与梯度的余弦大于某个正阈值),然后发现全局居然小于该阈值。初见之下感觉比较意外,于是简单分析了一番。
简单分析 #
现在问题抽象为:
假如两个向量的局部余弦相似度都不小于$\lambda > 0$,那么这两个向量的全局余弦相似度一定不小于$\lambda$吗?
答案大家已经知道了,是否定的。否定只需要举一个反例,假设$\boldsymbol{x}=(1,1),\boldsymbol{y}=(1,2)$,很明显$\boldsymbol{x}\neq\boldsymbol{y}$,所以$\cos(\boldsymbol{x},\boldsymbol{y})\neq 1$,但是它们的子向量——也就是每个分量——都是正数,正数作为一维向量,它们的余弦相似度都是1,所以我们就得到了一个局部余弦相似度全是1、全局相似度小于1的反例。
更一般的分析,我们可以设$\boldsymbol{x}=[\boldsymbol{x}_1,\boldsymbol{x}_2],\boldsymbol{y}=[\boldsymbol{y}_1,\boldsymbol{y}_2]$,那么
\begin{equation}\begin{aligned}
\cos(\boldsymbol{x},\boldsymbol{y}) =&\, \frac{\langle \boldsymbol{x}, \boldsymbol{y}\rangle}{\Vert\boldsymbol{x}\Vert \Vert\boldsymbol{y}\Vert}
= \frac{\langle \boldsymbol{x}_1, \boldsymbol{y}_1\rangle + \langle \boldsymbol{x}_2, \boldsymbol{y}_2\rangle}{\sqrt{\Vert\boldsymbol{x}_1\Vert^2 + \Vert\boldsymbol{x}_2\Vert^2} \sqrt{\Vert\boldsymbol{y}_1\Vert^2 + \Vert\boldsymbol{y}_2\Vert^2}} \\[6pt]
=&\,\frac{\cos(\boldsymbol{x}_1, \boldsymbol{y}_1) \Vert\boldsymbol{x}_1\Vert \Vert\boldsymbol{y}_1\Vert+ \cos(\boldsymbol{x}_2, \boldsymbol{y}_2)\Vert\boldsymbol{x}_2\Vert \Vert\boldsymbol{y}_2\Vert}{\sqrt{\Vert\boldsymbol{x}_1\Vert^2 + \Vert\boldsymbol{x}_2\Vert^2} \sqrt{\Vert\boldsymbol{y}_1\Vert^2 + \Vert\boldsymbol{y}_2\Vert^2}}
\end{aligned}\label{eq:cos}\end{equation}
如果让$\Vert\boldsymbol{x}_1\Vert,\Vert\boldsymbol{y}_2\Vert\to 0$,$\Vert\boldsymbol{x}_2\Vert,\Vert\boldsymbol{y}_1\Vert$保持大于零不动(不失一般性,可以设$\Vert\boldsymbol{x}_2\Vert=\Vert\boldsymbol{y}_1\Vert=1$),那么可以得到$\cos(\boldsymbol{x},\boldsymbol{y})\to 0$,那就是说,不管$\cos(\boldsymbol{x}_1,\boldsymbol{y}_1)$和$\cos(\boldsymbol{x}_2,\boldsymbol{y}_2)$多大,总有一种情况可以让$\cos(\boldsymbol{x},\boldsymbol{y})$无限接近于0,即无法通过$\cos(\boldsymbol{x}_1,\boldsymbol{y}_1)$和$\cos(\boldsymbol{x}_2,\boldsymbol{y}_2)$来让$\cos(\boldsymbol{x},\boldsymbol{y})$有下界。
至于上界,则可以证明:
\begin{equation}\cos(\boldsymbol{x},\boldsymbol{y})\leq \max\big\{\cos(\boldsymbol{x}_1,\boldsymbol{y}_1),\cos(\boldsymbol{x}_2,\boldsymbol{y}_2)\big\}\label{eq:cos-ul}\end{equation}
证明其实也很简单,因为这个界很松。不失一般性假设$\cos(\boldsymbol{x}_1,\boldsymbol{y}_1)\leq\cos(\boldsymbol{x}_2,\boldsymbol{y}_2)$,那么根据式$\eqref{eq:cos}$有
\begin{equation}
\cos(\boldsymbol{x},\boldsymbol{y}) \leq\left[\frac{\Vert\boldsymbol{x}_1\Vert \Vert\boldsymbol{y}_1\Vert+ \Vert\boldsymbol{x}_2\Vert \Vert\boldsymbol{y}_2\Vert}{\sqrt{\Vert\boldsymbol{x}_1\Vert^2 + \Vert\boldsymbol{x}_2\Vert^2} \sqrt{\Vert\boldsymbol{y}_1\Vert^2 + \Vert\boldsymbol{y}_2\Vert^2}}\right]\cos(\boldsymbol{x}_2, \boldsymbol{y}_2)
\end{equation}
方括号部分,其实正好是二维向量$(\Vert\boldsymbol{x}_1\Vert,\Vert\boldsymbol{x}_2\Vert)$和$(\Vert\boldsymbol{y}_1\Vert,\Vert\boldsymbol{y}_2\Vert)$的余弦相似度,所以它必然不大于1,于是有$\cos(\boldsymbol{x},\boldsymbol{y})\leq\cos(\boldsymbol{x}_2,\boldsymbol{y}_2)$,这就证明了不等式$\eqref{eq:cos-ul}$。
(再次强调,以上证明都是在$\cos(\boldsymbol{x}_1,\boldsymbol{y}_1)\geq 0,\cos(\boldsymbol{x}_2,\boldsymbol{y}_2) \geq 0$的假设下完成的,如果存在小于0的情况,则结论可能需要稍加改动。)
相关悖论 #
以上结果有什么更现实的对应吗?有,将它放到相关性分析中,就引申出了著名的“辛普森悖论(Simpson's paradox)”。
我们知道,有个衡量线性相关性的系数叫做“皮尔逊系数(Pearson Coefficient)”,定义为
\begin{equation}r = \frac{\sum\limits_{i=1}^n (x_i-\bar{x})(y_i - \bar{y})}{\sqrt{\sum\limits_{i=1}^n (x_i-\bar{x})^2}\sqrt{\sum\limits_{i=1}^n(y_i - \bar{y})^2}}\end{equation}
再认真观察一下,如果我们记$\boldsymbol{x} = (x_1,x_2,\cdots,x_n),\boldsymbol{y} = (y_1,y_2,\cdots,y_n)$,那么上式不就是
\begin{equation}r = \cos(\boldsymbol{x}-\bar{x},\boldsymbol{y}-\bar{y})\end{equation}
所以,皮尔逊相关系数其实就是数据点减去均值之后的余弦相似度。既然有了余弦相似度,那么上一节的结果就能用过来了,直接结论就是即便两批数据都是明显的线性相关($\cos > 0$),合起来之后也可能是线性无关的($\cos \to 0$)。
而“辛普森悖论”说的更彻底一些,说的是每一批数据都是正相关,合起来不仅可能是线性无关,还可能是负相关,这是因为相关系数相比单纯的余弦相似度多了个$\bar{x},\bar{y}$参数,可调的自由度更大。几何图像也非常直观,比如下图:
上图中,蓝色数据完全在同一条直线上,而且斜率为正,所以相关系数为1,红色数据也是如此,它们在自己的批次内都是“完全正线性相关”。但是将数据合起来后,如果非要用一条直线拟合,那么只能是虚线,而且斜率为负,即变成了负相关。这就构成了“辛普森悖论”的一个经典例子。
文章小结 #
本文简单讨论了高维向量的局部余弦相似度与全局余弦相似度之间的关系,并进一步讨论了与之相关的“辛普森悖论”。
转载到请包括本文地址:https://www.spaces.ac.cn/archives/9931
更详细的转载事宜请参考:《科学空间FAQ》
如果您还有什么疑惑或建议,欢迎在下方评论区继续讨论。
如果您觉得本文还不错,欢迎分享/打赏本文。打赏并非要从中获得收益,而是希望知道科学空间获得了多少读者的真心关注。当然,如果你无视它,也不会影响你的阅读。再次表示欢迎和感谢!
如果您需要引用本文,请参考:
苏剑林. (Jan. 09, 2024). 《局部余弦相似度大,全局余弦相似度一定也大吗? 》[Blog post]. Retrieved from https://www.spaces.ac.cn/archives/9931
@online{kexuefm-9931,
title={局部余弦相似度大,全局余弦相似度一定也大吗?},
author={苏剑林},
year={2024},
month={Jan},
url={\url{https://www.spaces.ac.cn/archives/9931}},
}
January 10th, 2024
[...]Read More [...]
January 10th, 2024
关于最后把辛普森悖论和余弦相似度联系起来有点疑惑
如果现在是比较两个向量的余弦相似度,例如[x1,x2],[y1,y2],x1,x2各代表两个红球,y1,y2各代表两个蓝球,我理解局部和全局关系想说的是,[x1,y1]拟合曲线方向和[x2,y2]拟合曲线方向一致,但把他们合起来,[x1,x2,y1,y2]拟合的曲线是可能会不一样
但辛普森悖论更像说,同颜色球内部,[x1,x2]拟合方向和[y1,y2]拟合方向一致,但[x1,x2,y1,y2]拟合出不一致的方向,感觉和余弦相似度想表达的还是有区别?
不是。两者的数学本质都是余弦相似度,所以能导出相近的结论,但两者的几何意义差很远。
第一个点,从局部向量和全局向量的角度看,比如局部向量是二维向量,这个可以画出来,但全局向量是四维,这个就没法画出来了,四维空间的图我们画不了,更高维的更加没法画了。所以第一个点所描述的现象,对于我们这只是生活在三维空间中的人来说,可能就纯粹是一个理论结果。
当然,这个事情可以类别一下投影,三维空间中的两个向量,从某个方向投影到平面可能就重合了(余弦相似度为1),然后另一个方向的投影可能是锐角(余弦相似度大于0),但三维空间中它们可能只是个直角(余弦相似度为0)。局部向量本质上也就是全局向量的投影。
第二个点,从数据的相关性角度看,第一点中的向量维数,变成了二维平面上的数据点的数量,不管多少个点,都可以画出来,原来的局部向量,变成了数据点的子集,全局向量也就是全集,这样才是可画的,并且很直观。
相关系数怎么由余弦相似度的结论推导得到辛普森悖论?缺失过程显得逻辑很奇怪
理解了一下苏神的意思,是不是公式(8)维度的含义和前文分析余弦相似度是相反的?在公式8中每个点才是维度,而x,y是两个向量,所以子空间(某4个点)的相似度不代表全体维度(所有点)的相似度
是的。前面的向量维度,对应于后面的相关系数中的“样本点的数量”;而前面的$\boldsymbol{x},\boldsymbol{y}$两个向量的“两”,对应于后面相关系数中的样本点维度是“两”维。
我也理解了,把汤普森悖论里四个样本点的四看作余弦相似度里的维度,每个样本点的xy看做两个向量,确实能get到了