矩阵加权和

1. 问题

有m个向量,形状均是1xn或[1,n]。

现在呢,算出来这m个向量各个的权重w了,形状是1xm或[1,m]。

现在想要求如下计算:这m个向量和对应权重相乘,然后这m个向量再相加得到新的向量,形状为1xn或[1,n],化成矩阵计算是什么样的?

其实就是矩阵相乘

先构造矩阵A ------就是m个向量组成一个矩阵,每一行就是一个向量,形状是mxn或[m,n]。

然后构造矩阵B其实就是权重向量w。

那么上述计算就是:

w*A

2 举例说明

假设我们有 m = 3 个向量,每个向量的维度是 n = 4。

三个原始向量 (v1, v2, v3):

v1 = 1, 2, 3, 4

v2 = 5, 6, 7, 8

v3 = 9, 10, 11, 12

对应的权重向量 w:

假设我们计算出的权重分别为:

向量 v1 的权重: 0.2

向量 v2 的权重: 0.5

向量 v3 的权重: 0.3

所以权重向量 w = 0.2, 0.5, 0.3 (形状是 1x3)。

构建矩阵并计算:

步骤一:构造矩阵 A将三个向量作为行堆叠起来,形成一个 3x4 的矩阵:

A = | 1 2 3 4 |

| 5 6 7 8 |

| 9 10 11 12 |

步骤二:进行矩阵乘法 w * A

权重向量 w (1x3) 乘以矩阵 A (3x4),结果是一个 1x4 的新向量。

计算过程如下(结果是新向量的每个元素):

第一个元素: (0.2 * 1) + (0.5 * 5) + (0.3 * 9) = 0.2 + 2.5 + 2.7 = 5.4。

第二个元素: (0.2 * 2) + (0.5 * 6) + (0.3 * 10) = 0.4 + 3.0 + 3.0 = 6.4。

第三个元素: (0.2 * 3) + (0.5 * 7) + (0.3 * 11) = 0.6 + 3.5 + 3.3 = 7.4。

第四个元素: (0.2 * 4) + (0.5 * 8) + (0.3 * 12) = 0.8 + 4.0 + 3.6 = 8.4。

第1-第4个元素刚好就是各个向量的元素乘以对应权重再相加,这就是加权和。

最终结果

加权求和后得到的新向量是:result = 5.4, 6.4, 7.4, 8.4 (形状是 1x4)。

3 应用

在深度学习里常见,在注意力机制里QKV计算时常见,这是基本工具。