CTR 预测理论(二十五):矩阵和向量乘法总结

本文详细介绍了矩阵和向量的各种乘法操作,包括矩阵乘积、Hadamard乘积、Kronecker乘积、点积、外积和叉积的概念及计算方式,为理解和应用推荐系统中的数学原理提供了基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

推荐系统中常涉及矩阵、向量乘法,此处结合现有文献做一个小结,仅用于学习交流使用。

1. 矩阵乘法

矩阵乘积(matrix product,也叫matmul product):Am×n⋅Bn×p=Cm×pA_{m\times n} \cdot B_{n \times p} = C_{m \times p}Am×nBn×p=Cm×pAAA 的列数必须和 BBB 的行数相等,Ci,j=∑k=1nAi,kBk,jC_{i, j}=\sum_{k=1}^{n} A_{i, k} B_{k, j}Ci,j=k=1nAi,kBk,j

Hadamard product(又称element-wise product):用 ⊙\odot 或者 ∘\circ 表示,A⊙BA \odot BAB 对应元素相乘,二者维数必须相同,举例:
[a11a12a21a22]⊙[b11b12b21b22]=[a11b11a12b12a21b21a22b22] \left[\begin{array}{ll}a_{11} & a_{12} \\a_{21} & a_{22}\end{array}\right] \odot\left[\begin{array}{ll}b_{11} & b_{12} \\b_{21} & b_{22}\end{array}\right]=\left[\begin{array}{ll}a_{11} b_{11} & a_{12} b_{12} \\a_{21} b_{21} & a_{22} b_{22}\end{array}\right] [a11a21a12a22][b11b21b12b22]=[a11b11a21b21a12b12a22b22]
Kronecker product(克罗内克积):用 ⊗\otimes 表示,两个任意大小矩阵间的运算, Am×n⋅Bp×q=Cmp×nqA_{m \times n} \cdot B_{p \times q}=C_{m p \times n q}Am×nBp×q=Cmp×nqAAA 的每个元素逐个与矩阵 BBB 相乘。
[a11a12a21a22]⊗[b11b12b21b22]=[a11b11a11b12a12b11a12b12a11b21a11b22a12b21a12b22a21b11a21b12a22b11a22b12a21b21a21b22a22b21a22b22] \left[\begin{array}{cc}a_{11} & a_{12} \\a_{21} & a_{22}\end{array}\right] \otimes\left[\begin{array}{cc}b_{11} & b_{12} \\b_{21} & b_{22}\end{array}\right]=\left[\begin{array}{cccc}a_{11} b_{11} & a_{11} b_{12} & a_{12} b_{11} & a_{12} b_{12} \\a_{11} b_{21} & a_{11} b_{22} & a_{12} b_{21} & a_{12} b_{22} \\a_{21} b_{11} & a_{21} b_{12} & a_{22} b_{11} & a_{22} b_{12} \\a_{21} b_{21} & a_{21} b_{22} & a_{22} b_{21} & a_{22} b_{22}\end{array}\right] [a11a21a12a22][b11b21b12b22]=a11b11a11b21a21b11a21b21a11b12a11b22a21b12a21b22a12b11a12b21a22b11a22b21a12b12a12b22a22b12a22b22
矩阵乘积的常用性质:

结合律: A(B+C)=AB+ACA(B+C) = AB + ACA(B+C)=AB+AC

分配律: A(BC)=(AB)CA(BC)=(AB)CA(BC)=(AB)C

交换律:绝大多数情况不满足交换律,即大多数情况下 AB≠BAAB \ne BAAB=BA

2. 向量乘法

向量点积/内积(Inner Product, dot product):用 ⋅\cdot 表示,两个向量的行列数必须相同,点乘的结果是对应位元素相乘后求和,是一个标量,举例:
a=(a1,a2,⋯ ,an)b=(b1,b2,⋯ ,bn)a⋅b=a1b1+a2b2+⋯+anbn \begin{array}{c}a=\left(a_{1}, a_{2}, \cdots, a_{n}\right) \\b=\left(b_{1}, b_{2}, \cdots, b_{n}\right) \\a \cdot b=a_{1} b_{1}+a_{2} b_{2}+\cdots+a_{n} b_{n}\end{array} a=(a1,a2,,an)b=(b1,b2,,bn)ab=a1b1+a2b2++anbn
点乘的几何意义:点乘可以用来计算两个向量的夹角 cosθ=a⋅b∣a∣∣b∣cos \theta = \frac{a \cdot b}{|a||b|}cosθ=abab

dot product 和 inner product 其实还是有区别的,目前暂时将二者视为同一个概念,后续再来细究!!!

向量外积(Outer product):外积的结果是一个矩阵,用 ⊗\otimes 表示,举例;
u=(u1,u2,⋯ ,um)v=(v1,v2,⋯ ,vn)u⊗v=[u1v1u1v2⋯u1vnu2v1u2v2⋯u2vn⋮⋮⋱⋮umv1umv2⋯umvn] \begin{array}{c}u=\left(u_{1}, u_{2}, \cdots, u_{m}\right) \\v=\left(v_{1}, v_{2}, \cdots, v_{n}\right) \\u \otimes v=\left[\begin{array}{ccccc}u_{1} v_{1} & u_{1} v_{2} & \cdots & u_{1} v_{n} \\u_{2} v_{1} & u_{2} v_{2} & \cdots & u_{2} v_{n} \\\vdots & \vdots & \ddots & \vdots \\u_{m} v_{1} & u_{m} v_{2} & \cdots & u_{m} v_{n}\end{array}\right]\end{array} u=(u1,u2,,um)v=(v1,v2,,vn)uv=u1v1u2v1umv1u1v2u2v2umv2u1vnu2vnumvn
向量叉积(Cross product):叉乘的结果是一个向量,使用符号 ×\times×,举例:
a=(x1,y1,z1)b=(x2,y2,z2)a×b=∣ijkx1y1z1x2y2z2∣=(y1z2−y2z1)i+(z1x2−z2x1)j+(x1y2−x2y1)ki=[1,0,0],j=[0,1,0],k=[0,0,1] \begin{aligned}&a=\left(x_{1}, y_{1}, z_{1}\right)\\&b=\left(x_{2}, y_{2}, z_{2}\right)\\&a \times b=\left|\begin{array}{ccc}i & j & k \\x_{1} & y_{1} & z_{1} \\x_{2} & y_{2} & z_{2}\end{array}\right|=\left(y_{1} z_{2}-y_{2} z_{1}\right) i+\left(z_{1} x_{2}-z_{2} x_{1}\right) j+\left(x_{1} y_{2}-x_{2} y_{1}\right) k\\&i=[1,0,0], j=[0,1,0], k=[0,0,1]\end{aligned} a=(x1,y1,z1)b=(x2,y2,z2)a×b=ix1x2jy1y2kz1z2=(y1z2y2z1)i+(z1x2z2x1)j+(x1y2x2y1)ki=[1,0,0],j=[0,1,0],k=[0,0,1]
叉乘的几何意义:向量叉乘的结果是两个向量的法向量,举个例子:aaaxxx 轴的单位向量,bbbyyy 轴的单位向量,二者叉乘的结果就是 zzz 轴的单位向量。
a=(1,0,0)b=(0,1,0)i=(1,0,0)j=(0,1,0)k=(0,0,1)a×b=∣ijk100010∣=(0×0−0×1)i+(0×0−0×1)j+(1×1−0×0)k=k \begin{array}{c}a=(1,0,0) \\b=(0,1,0) \\i=(1,0,0) \\j=(0,1,0) \\k=(0,0,1) \\a \times b=\left|\begin{array}{ccc}i & j & k \\1 & 0 & 0 \\0 & 1 & 0\end{array}\right|=(0 \times 0-0 \times 1) i+(0 \times 0-0 \times 1) j+(1 \times 1-0 \times 0) k=k\end{array} a=(1,0,0)b=(0,1,0)i=(1,0,0)j=(0,1,0)k=(0,0,1)a×b=i10j01k00=(0×00×1)i+(0×00×1)j+(1×10×0)k=k

3. 总结

矩阵乘法符号说明
matmul product⋅\cdot一般的矩阵乘积
Hadamard product⊙\odot 或者 ∘\circ 表示element-wise,逐元素对应乘积
Kronecker product (克罗尔克积)⊗\otimes任意形状矩阵相乘

向量乘法符号说明
Inner product, dot product⋅\cdot结果是标量
Outer product⊗\otimes结果是矩阵
Cross product×\times×结果是向量

参考文献:

[1] https://zhuanlan.zhihu.com/p/79760117

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值