矩阵和向量相乘

本文介绍矩阵与向量相乘
转置(transpose)是矩阵的重要操作之一。矩阵的转置是以对角线为轴的镜像,这条从左上角到右下角的对角线被称为 主对角线(main diagonal)。下图 显示了这个操作。
矩阵和向量相乘

我们将矩阵 A 的转置表示为 A^T,定义如下
A^Ti,_j= A_{j,i}.
向量可以看作只有一列的矩阵。对应地,向量的转置可以看作是只有一行的矩阵。有时,我们通过将向量元素作为行矩阵写在文本行中,然后使用转置操作将其变为标准的列向量,来定义一个向量,比如 x = [x1, x2, x3]^⊤.

标量可以看作是只有一个元素的矩阵。因此,标量的转置等于它本身,a = a^⊤

只要矩阵的形状一样,我们可以把两个矩阵相加。两个矩阵相加是指对应位置的元素相加,比如 C = A + B,其中 C_{i,j} = A_{i,j} + B_{i,j}

标量和矩阵相乘,或是和矩阵相加时,我们只需将其与矩阵的每个元素相乘或相加,比如 D = a · B + c,其中 D_{i,j} = a · B_{i,j} + c。

在深度学习中,我们也使用一些不那么常规的符号。我们允许矩阵和向量相加,产生另一个矩阵:C = A + b,其中 C_{i,j} = A_{i,j} + b_j。换言之,向量 b 和矩阵 A 的每一行相加。这个简写方法使我们无需在加法操作前定义一个将向量 b 复制到每一行而生成的矩阵。这种隐式地复制向量 b 到很多位置的方式,被称为 广播(broadcasting)。

矩阵和向量相乘
矩阵乘法是矩阵运算中最重要的操作之一。两个矩阵 A 和 B 的 矩阵乘积
(matrix product)是第三个矩阵 C。为了使乘法定义良好,矩阵 A 的列数必须和矩阵 B 的行数相等。如果矩阵 A 的形状是 m × n,矩阵 B 的形状是 n × p,那么矩阵C 的形状是 m × p。我们可以通过将两个或多个矩阵并列放置以书写矩阵乘法,例如C = AB. 具体地,该乘法操作定义为
矩阵和向量相乘
需要注意的是,两个矩阵的标准乘积不是指两个矩阵中对应元素的乘积。不过,那样的矩阵操作确实是存在的,被称为 元素对应乘积(element-wise product)或 Hadamard 乘积(Hadamard product),记为 A ⊙ B。
两个相同维数的向量 x 和 y 的 点积(dot product)可看作是矩阵乘积 x^⊤y。我们可以把矩阵乘积 C = AB 中计算 C_i,_j 的步骤看作是 A 的第 i 行和 B 的第 j 列之
间的点积。

矩阵乘积运算有许多有用的性质,从而使矩阵的数学分析更加方便。比如,矩阵乘积服从分配律:A(B + C) = AB + AC.
矩阵乘积也服从结合律:A(BC) = (AB)C.

不同于标量乘积,矩阵乘积并不满足交换律(AB = BA 的情况并非总是满足)。
然而,两个向量的 点积(dot product)满足交换律:
x^⊤y = y^⊤x.
矩阵乘积的转置有着简单的形式:
(AB)^⊤ = B^⊤ A^⊤

利用两个向量点积的结果是标量,标量转置是自身的事实,我们可以证明式:
x^⊤y =(x⊤y)^⊤ = y^⊤ x.
由于本书的重点不是线性代数,我们并不试图展示矩阵乘积的所有重要性质,但读者应该知道矩阵乘积还有很多有用的性质。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程