线性代数主要面向连续数学,而非离散数学,所以很多计算机科学家很少接触它。然而掌握好线性代数对理解和从事机器学习算法相关工作时很有必要的。
我们可以把向量看成空间的点,每个元素时不同坐标轴上的坐标。
矩阵乘法:两个矩阵A和B的矩阵乘积(matrix product)是第三个矩阵C。要求矩阵A的列数必须和矩阵的行数相等。如果矩阵A的形状是,矩阵B的形状是
,那么矩阵C的形状
。表示为:
如:
计算规则是,第一个矩阵第一行的每个数字(2和1),各自乘以第二个矩阵第一列对应位置的数字(1和1),然后将乘积相加( 2 x 1 + 1 x 1),得到结果矩阵左上角的那个值3。
也就是说:结果矩阵第m行与第n列交叉位置的那个值,等于第一个矩阵第m行与第二个矩阵第n列,对应位置的每个值的乘积之和。(可以不看结果,自己算一遍。)
点积(也称数量积。dot product;scalar product):接收在实数R上的两个向量并返回一个实数值标量的二元计算。两个向量和
的点积定义为:
。两个相同维数的向量x和y的点积可看作是矩阵乘积。
矩阵乘法的性质:
分配律: A(B + C) = AB + AC:
结合律: A(BC) = (AB)C
矩阵乘积不满足交换率。点积满足交换律。(由点积的结果是标量,标量转置是它本身):
矩阵乘积的转置:
从上面的理论知识,我们可以思考矩阵乘积的本质到底是什么?矩阵向量乘积的本质就是线性方程式。如下面的等式表示线性方程组:
其中是一个已知矩阵,
是一个已知向量,
是一个我们要求解的未知向量。向量 x的每一个元素
都是未知的。矩阵A 的每一行和b 中对应的元素构成一个约束。我们可以上式重写为:
...
或者,更明确地,写作:
......
矩阵向量乘积符号为这种形式的方程提供了更紧凑的表示。
为了描述逆矩阵(matrix inversion),首先要知道单位矩阵(identity matrix)的概念。任意向量和单位矩阵都不会变。我们将保持n维向量不变的单位矩阵记作。形式上
,
单位矩阵:对于一个n阶方阵(行数等于列数的矩阵叫做方阵),若其主对角线上的元素都是1,其他地方的元素都为0,则称该矩阵为n阶单位矩阵,用或
表示.如图是一个三阶单位矩阵
:
逆矩阵:设有一个方阵A,若存在一个方阵B,使得AB=I或BA=I,则称B是A的逆矩阵,用A-1表示(事实上若AB=I,则必有BA=I)。(注:并不是所有矩阵都有逆矩阵)
了解了单位矩阵和逆矩阵的这些性质我们可以利用它们来推导方程组的解,如下:
得出。所以能找到A的逆矩阵,就可以得到方程组的解。
求解逆矩阵的方法:1、待定系数法 2、伴随矩阵 3、初等变换(在此不展开详解,需要的可参考资料查阅详情)
为了分析方程有多少个解,我们可以将A的列向量看作从原点(origion)出发的不同方向。确定有多少种方法可以到达向量b。在这种假设下,向量x的每个元素表示我们应该沿这些方向走多远,即表示我们需要沿着第i个向量走多远:
一般而言,这种操作被称为线性组合(linear comvination)。形式上,一组向量的线性组合,是指每个向量乘以对应标量系数之后的和,即:
一组向量的生成子空间(span)是原始向量线性组合后所能抵达的点的集合。
确定 是否有解,相当于确定向量b 是否在 A 列向量的生成子空间中。这个特殊的生成子空间被称为 A 的列空间 (column space)或者 A的值域(range)。
为了使方程对于任意向量
都存在解。我们要求A的列空间构成整个
,即意味着,A至少有m列,即n>=m。不等式仅是方程对每一个点都有解的必要条件。但不是充分条件,因为有些列向量可能是冗余的。
正式地说,这种冗余被称为线性相关(linear dependence).如果一组向量中的任一一个向量都不能表示成其他向量的线性组合,那么这组向量被称为线性无关(linearly independent)。如果某个向量是一组向量中某些向量的线性组合,那么我们将这个向量加入这组向量后不会增加这组向量的生成子空间。这意味着,如果一个矩阵的列空间涵盖整个,那么该矩阵必须包含一组m个线性无关的向量。
要想矩阵可逆,我们还需要确保方程对于每一个b值至多有一个解。为此我们需要确保该矩阵至多有m个列向量。否则,该方程不止有一个解。
综上所诉:
矩阵可逆的条件为:该矩阵必须是一个方阵(square),即m = n,并且所有列向量都是线性无关。一个列向量线性相关的方阵被称为奇异的(singular)。
如果矩阵A不是一个方阵,或者奇异的方阵,该方程仍然可能有解,但是我们不能使用逆矩阵去求解。
有时我们需要衡量一个向量的大小。在机器学习中,我们经常使用被称为范数(norm)的函数衡量向量的大小。形式上,定义如下:
范数(包括 范数)是将向量映射到非负值的函数。直观上来说,向量x 的范数衡量从原点到点x 的距离。
当p=2时,范数被称为欧几里得范数(Euclidean norm)。它表示从原点出发到向量x确定的点的欧几里得距离。如向量(1,1)和(0,3)根据范数的定义,范数是每个元素平方求和然后再开方映射得到的值。分别为实数和 3 。
机器学习中经常遇到的范数:
0范数:向量中非零元素的个数。
1范数:为绝对值之和。
2范数:每个元素平方求和然后开方。
无穷范数,取向量的最大值。
有时我们可能也希望衡量矩阵的大小。在深度学习中,最常见的做法是使用Frobenius范数(Frobenius norm),
范数的应用在机器学习领域,用的比较多的是迭代过程中收敛性质的判断。
对角矩阵(diagonal matrix):只在主对角线上含有非零元素,其他位置都是零。形式上,矩阵D是对角矩阵,当且仅当所有的,
。
对角矩阵的计算很高效,计算乘法,我们只需要将x中的每个元素放大
倍,元素对应乘积,即:
。
如果对角矩阵存在逆矩阵,计算对角方阵的逆矩阵也很高效:。
对称(symmetric)矩阵:是转置矩阵和自己相等的矩阵。即:
单位向量(unit vector):是具有单位范数(unit norm)的向量:
如果,那么向量x 和向量y 互相正交(orthogonal)。如果两个向量都有非零范数,那么这两个向量之间的夹角是90 度。在
中,至多有n 个范数非零向量互相正交。如果这些向量不仅互相正交,并且范数都为1,那么我们称它们是标准正交(orthonormal)。
正交矩阵(orthogonal matrix):是指行向量和列向量是分别标准正交的方阵。即:,即:
我们可以据此导出一些通用的机器学习算法:
通过将一些矩阵限制为特殊矩阵,我们可以得到计算代价较低的(并且简明扼要的)算法。
特征分解(eigendecomposition)是使用最广的矩阵分解之一,即我们将矩阵分解成一组特征向量和特征值。方阵A的特征向量(eigenvector):是指与A相乘后相当于对该向量进行缩放的非零向量v:
标量被称为这个特征向量对应的特征值(eigenvalue)。