在实际应用中,工程师会通过交叉验证确定最优的 k 值(平衡效率与精度),或结合其他技术(如量化、稀疏化)减少副作用——比如大模型中的“低秩注意力”模块,就是用SVD分解Attention矩阵,同时通过残差连接保留关键信息,既提升速度又尽量不丢精度。
需要我帮你梳理一份“低秩矩阵在Transformer中的具体应用步骤”吗?可以结合Attention计算的例子,讲清楚如何用SVD做低秩近似、如何选择 k 值,以及如何缓解精度损失~
在我看来,如果一个任意的矩阵能够进行这个奇异矩阵的化简降维的话,那就说明它实际上是包含了冗余的信息,或者意思就说它根本不需要这么高的维度。结合到这个 Transformer 里面这些矩阵的话,我我我在想说这个矩阵我们应该特指就是 W k W Q W V 这些,就是 K Q V 这个,这些变换的,这些矩阵。他们的应该都是满秩的,如果不满秩的话,就说明说这个叫什么,这个超参数,这个模型的超参数设置过大。就是等于是富裕了,太多了。这个不需要这么高的维度来描述这个向量,这个 embedding,或者说是这个语法的这个语义的这个维度,是超过了实际的需求。当然你说要将来扩展也许是合理的,但是从优化计算的角度讲,假如这这些矩阵的是符合可以被优化降低秩的话,在我看来它肯定是超参数设的过大了,能不能这么理解?
这个我完全理解,我也同意这个是工程上的解决办法。那么我还想这个 comment 一点,就是说实际上在训练过程中,调整参数它是两个角度同时在做。一个是说反馈到这个模型的这些参数,就是这个向量,就是那个,这个叫什么?前向层的这个模型的参数需要调整。另一个调整的维度是是在这个 WK WK Q W V 这个矩阵的参数也去调整。但实际上这个调整是一种艺术,然而我不知道具体的细节,我相信,就是说你调整的结果最终是让你的这个训练的效果,验证的效果达到满意,达到期望值。那么从哪一方面去调整?都可以达到。意思就是说,你单纯去调整这个模型的这些参数,就是这个 FFN 的这些参数是可以达到的。或者说你就是纯粹去调整这个 WQ WK WV 也可以做到,或者两方面同时调整也都可以做到。就说,哪怕是局部的 FFN 这些模型的这参数,它也有很多层嘛,你可能调整某一层也可以做到。就只是说调整的次数,就是那个梯度灰度,哪个调整更有效率。但这里面其实也有一个暴露了一个什么问题呢?就说假如说我们已经知道了。这个 d model 实际上是超参数是比较大了,像 1024。但实际上大部分这个我们现在训练的这个数据是是可,实际上只有 64 维。意思就是那个降维之后,就是那个满秩它只有 64 维。就 W Q W K W UV 实际上是有很多的冗余的,我们可以说把它变成说是 64 维,也可以去把它调整成它超过 64 维,比如说是一,768 维,或者说 128 维。就意思就是我们可以把这个参数调整至这样,以至于说模型的 F F N 的参数不调整,就单单去调整这个这个 Q K V 三个矩阵,让它们维度变大一点,就是它的秩高一点,也可以达到同样效果,是不是这个道理?还是说有另一种反过来也成立,意思就是说,我们这个 Q K V 三个矩阵,它的秩不增加,都是 64 维,我们通过单单去调整 FFN 的参数,模型参数,就能使得这个模型的这个残差,这个最后效果能达到预期。到底哪一个是真实的情况呢?
就是说,我完全理解这个,你这讲的 top n, top 3,这个谷歌里面,我印象中是有这个论文的。但是它这个确实像你说的,它的思路是一个广度搜索吧,就说 breadth first search 吧。就这个肯定是到最后,他只能每次取前面三个选项,最后没办法,因为树的写,这个概念越往下,这个指数级增加,他肯定没办法把这个全部的结果都囊括,结果就是一种工程上的一种叫做妥协吧。但是他这个是也是挺挺实在的,在我看来很有可能他的成功率更高一点。什么意思?就是说基本上,也就说你比如说两个概率很高,不是高兴就是愉悦,这个两个基本上就只能往这两个发展。然后再往下又是各自又有两三个选择,比如高兴有两个选择,这个愉快有三个选择,你最后总共也就取那概率最高那两三个选择就三个吧,你要高兴取两个,愉悦取一个。那最后就大体上就是说大差不差。那如果说他的这个思路跟我们这个思路,因为他的思路更好是在于说,他不仅仅是校验。因为我们校验完了以后,那你最后结果怎么样呢?你说错了那怎么办?要重新跑一遍吗?那重新跑一遍那肯定是非常昂贵的,时间上来不及啊。所以他那个就是兼顾了这个,我无非就是说最后不好我就选另外一个嘛,对吧?那我可以它也可以校验的,它的校验机制实际上就是跟我们这个结合起来,它的校验机制就完美了。什么意思呢?我们也是每次选择 top top 3,然后呢按照谷歌那个算法一直这样走下去,它很可能是有两个两到三个最后答案。那我们这个虚拟答案呢,最后也是一个这个树状的一个向量吧,然后就跟他的那个三个答案进行这个点击,就相当于那个 embedding 那个去计算一下,看哪个贴合的更紧密,那就知道了,就哪一个这个答案跟这个就三三个答案里面选选一个,这个我们这标准答案是是个虚拟的向量,字典中是不存在的字,但是它是一个向量。然后你那个三个答案跟我们这个答案进行这个向量空间去比对一下,更贴合,距离更近,欧几里得距离更近。近的话,你就选那个就是了。所以这个,就说,他的机制是说可以保底,我有两个结果,或三个结果,最后我可以选择,我就挑一,挑两个。我们虽然是可以校验的,但是校验完了出错怎么办?你要从头来吗?回滚这个这个损失太大了,就意思就是说,我们这个方法跟他的方法结合起来,我相信他很有可能是把这个方法,就是简单的结合进来,对他来说是轻而易举的,所以我们可以在他的这个论文基础上去发展这个思路。就是计算这个消耗也不大,因为这个,他的这个 top 3,我们只不过增加了一个而已,是吧?就相当于 top N 加一嘛,就只在只在他的这个算法复杂度上再加一个一而已。原来他这边选了 top 3,那我选择相当于是 top four, top 四,对吧?原来是选三个,现在选四个,只不过线性增加一个,完全可以接受。我都想说就把这个写成论文,但是我估计很多人都已经写过了,你觉得呢?
[1] Radford A, Narasimhan K, Salimans T, et al. Improving language understanding by generative pre-training[J]. 2018.[2] Zhang S, Roller S, Goyal N, et al. Optimal substructure in beam search[J]. Advances in Neural Information Processing Systems, 2020, 33: 14031-14042.[3] Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need[J]. Advances in Neural Information Processing Systems, 2017, 30.[4] Kuhn H W. The Hungarian method for the assignment problem[J]. Naval research logistics quarterly, 1955, 2(1-2): 83-97.[5] Wu Y, Schuster M, Chen Z, et al. Google's neural machine translation system: Bridging the gap between human and machine translation[J]. arXiv preprint arXiv:1609.08144, 2016.[6] Zoph B, Vaswani A, May J, et al. Learning transferable architectures for scalable image recognition[J]. Proceedings of the IEEE conference on computer vision and pattern recognition, 2018, 8697-8710.[7] Lin Z, Su J, Xu Y, et al. TruthfulQA: Measuring how models mimic human falsehoods[J]. arXiv preprint arXiv:2109.07958, 2021.[8] Salazar J, Montana G, Patwary M, et al. Continuous beam search for neural machine translation[J]. arXiv preprint arXiv:1805.10389, 2018.