在 LLM 的推理过程中经常设计到矩阵乘法操作,这里我将给出一个矩阵乘法计算的新视角。矩阵是由向量构成的,行向量,列向量,而两个矩阵相乘就是两个矩阵的向量两两做内积,所有的内积结果存放在一个表里作为结果。
内积其实可以看成两个向量的相似度计算(就是考虑模的余弦相似度,只有分子),而神经网络做的本质就是计算相似度,相似度高就激活神经元,传递相似度的变体信号给下一个神经元,形成反应流。所以掌握相似度就是掌握了DL。
现在 A 序列有 10 个单词,B 有 20 个,要比较 A 与 B 两两单词间的相似度,序列内的单词不比较,可知道结果有 200 个,前面知道相似度就是内积结果,这 200 个果存储在 10×20 的表格中,表格的第一维度 10 按顺序对应 A 序列的元素,第二维度按顺序对应 B 序列的元素,这样我们就实现序列单词元素两两相似度的存储。

单词间的相似度计算过程就是向量内积,每个单词都是语义空间中的一个向量,内积的计算是很容易的事情。那么矩阵的乘法就是两两向量间的内积计算和存储结果。要保证两个矩阵能计算就需要矩阵的向量能做内积,也就是需要向量的维度是一样的,两个向量的在同一个语义空间中,这样的比较才有意义,在同一语义空间中自然空间的维度是一样
词向量在 A 矩阵中是行向量,在 B 矩阵中是列向量这样可以很容易的判断是否满足可乘条件,A 的行(向量)长度等于 B 的列(向量)长度。为了方便记忆可以这么理解,既然存储结果是:第一维度是 A 的元素序列,第二维度是 B 的元素序列,那么在计算前就先按照这个将矩阵内的向量按这个排好,A 矩阵的元素排序在第一维度--行,组织成多个行向量; B 矩阵的元素排序在第二维度--列,组织成列向量。计算结果直接存储。

综上:矩阵乘法的本质是计算向量间的相似度,并存储成一个新的矩阵。
8979

被折叠的 条评论
为什么被折叠?



