2.1 标量,向量,矩阵和张量
- 标量:只是一个数字。
- 向量:一串数字,相当于一维数组。一般默认向量都是列向量。
- 矩阵:一个2维的数组,需要用2个索引才可以确定其中一个元素。例如第
i
行,
j 列。 - 张量:维数大于2的数组,例如一个3维的张量A,需要坐标 (i,j,k) 才能确定其中一个元素。
矩阵的转置:
向量只有一行/一列,向量转置可以看做只有一列的矩阵的转置。标量转置还是它自己。
矩阵加法,
A,B
都是矩阵
表示:
标量加或者乘以矩阵,
B
是矩阵,
表示:
向量和矩阵相加,虽然看上去不那么合适,但是在深度学习中经常看到,
A
是矩阵,
表示:
即 A 的每一行都加上
2.2 矩阵、向量的乘
A
是
C 是
上面的这种矩阵乘法叫做element-wise product或Hadamard product,表示为 A⊙B
还有一种矩阵乘法,叫做doc product,即点乘,这时两个矩阵维数相同,例如
表示
矩阵乘法满足一些乘法额定律:
分配律:
结合律
不满足交换律,但是向量相乘满足交换律
矩阵乘积的转置有如下形式
除了上面的性质外,还应该知道一些特性:
线性等式:
其中 A∈Rm×n 是矩阵, b∈Rm 是向量, A,b 都是已知的, x∈Rn 是未知的。上面的矩阵乘法的等式相当于提供了表达等式的一种方式。
2.3 矩阵求逆和单位矩阵
假设
In
是一个单位矩阵,
In∈Rm×n
,那么
单位矩阵,对角线上的数字都是1,其他部分数字全是0。
菊展
A
的逆表示为
那么2.2节中的等式
可以求解得到
当然, A−1 的存在是有条件的,不是每个矩阵都存在逆矩阵的。
当逆矩阵 A−1 存在时,有不同的算法来闭式计算它。但是在计算机中,表示小数的精确度有限,因此有时并不能十分精确的得到 A−1 ,只能得到一个近似的估计值。
2.4 线性依赖和跨度
等式
如果 A−1 ,那么上面的等式对于不同的 b 必须只有一个解。但是也可能存在没有解或者有无数个解。对于特定具体的
也是一个解。其中 α 是实数,那么这样就存在无数个解。
为了分析上面等式有多少个解,把
A
的每一列看做不同的方向,有多少条路可以到达
上式这个操作叫做线性组合。
一个向量集合的生成空间是:这个向量集线性组合的所有点组成的空间。
Ax=B
是否有解,在于
b
是否在
为了使
Ax=b
有解,
b∈Rm
,矩阵
A
的列空间应该包含
n≥m
也只是必要条件,不是充分条件。因为有些列可能是冗余的;例如2列完全形同。这样的冗余叫做线性依赖。如果一个向量集线性独立,那么这个集合中的任何一个向量,都不能由其他向量的线性组合得到。这样,如果矩阵
A
的列空间包含
为了使矩阵
A
的逆存在,对于每一个
总和上面,矩阵
A
必须是个方阵,即
只有
2.5 范数
范数可以衡量向量的大小,一个向量的
Lp
范数定义如下:
其中 p∈R,p≥1
范数可以看做是向量到一个标量的映射函数,只要符合以下性质,都可以看做范数:
f(x)=0⇒x=0
f(x+y)≤f(x)+f(y)
(三角不等式)
∀α∈R,f(αx)=|α|f(x)
L2 范数是著名的欧几里得范数,它是原点到向量的欧拉距离。它可以省去下标,简写为 ||x|| , L2 的平方形式等于 xTx 。
平方形式的L2
范数在机器学习中用的最广,它的导数只和对应的项有关。但是平方形式的
L2
范数在原点附近时,增长太慢。在一些机器学习的应用中,要十分严格区分0和非0的区别,这时可以使用
L1
范数
有时需要向量中非零元素的大小,有些人称作 L0 范数,实际上没有 L0 范数,可以使用 L1 范数取代它。
在机器学习中经常用到
L∞
范数,称作最大范数(max norm),它的简化形式就是向量中最大数的幅度
在深度学习中,经常需要衡量矩阵的大小,这时使用Frobenius范数
和向量的 L2 范数类似。
两个向量的点乘可以写作范数的形式
其中 θ 是 x 和
2.6特殊矩阵和向量
对角矩阵:只有对角元素非零,其他元素都为零。
D
是对角元素,那么
对角矩阵不一定是方形矩阵,但是只有方形对角矩阵才存在逆矩阵。非方形的对角矩阵相乘的代价也很小。
对称矩形是矩阵等于其转置
生成矩阵时,如果由2个变量的函数生成,且变量顺序无关,那么经常会生成对称矩阵,因为对称矩阵中 Ai,j=Aj,i 。
单位向量是指其范围为1
如果两个向量 x,y 正交,那么 xTy=0 ;如果这两个向量的范数不为零,那么它们之间的角度为90度。在 Rn 中,至多有n个互相正交的非零向量。如果正交向量的范数为1,那么叫做标准正交。
正交矩阵的行和列都是正交的
即
可以看出,计算正交矩阵的逆十分简单。
2.7 特征分解
数学上的物体,可以分解。例如12可以分解为2x2x3;这样可以得知它不能被5整除,但是可以被3整除。同理,矩阵也可以分解。
用的最广的矩阵分解是特征向量和特征值。矩阵
A
的非零特征向量
其中, λ 是对应的特征值。上式还有另一种形式 vTA=λvT 。
如果 v 是特征向量,那么它缩放后依然是特征向量,所以我们只关心单位特征向量。
假设
可以通过特征值和特征向量来重建 A 。把矩阵分解为特征值和特征向量有助于我们分析理解矩阵。
不是每个矩阵都能分解为特征值和特征向量,有时分解还会产生复数。幸运的是,本书讲解的矩阵大部分都是可以简单分解的。注意一点,每个实数对称矩阵都可以分解,其特征值和特征向量都为实数:
其中 Q 是由
一个实对称矩阵
A
肯定有特征值分解,且特征值分解可能不唯一。如果两个或两个以上的特征向量有相等的特征值,由正交向量组成的集合和这个特征值也是矩阵的特征值分解。为了方便,我们常常将
矩阵的特征值分解给我们带来许多便利。例如,只有矩阵所有特征值为0时,它才是奇异矩阵。实数对称矩阵相乘可以用特征值分解优化,
f(x)=xTAx
,且
||x||2=1
;如果
x
是
一个矩阵的所有特征值都大于0,那么就是正定的;如果都大于等于0,那么就是半正定的;如果都小于零,那么就是负定的;如果都小于等于零,那么就是半负定的。
2.8奇异值分解
上一节讲到了特征值分解,这一节来学奇异值分解(singular value decomposition, SVD)。像特征值分解一样,奇异值分解也可以帮助发现矩阵的一些特性;且奇异值分解更具一般性,每个矩阵都有奇异值分解。
特征分解形式为:
奇异值分解形式类似:
这里,假设 A 是
还可以通过简单的推导,得出奇异值分解和特征分解的关系。
因为 U 和
这样,可以把 U 当做
奇异值分解的最有用的特性在于可以泛化,使非方阵可以部分求逆。
2.9 广义伪逆矩阵
非方阵的逆矩阵没有定义。假设要对下面等式求解:
B 是
A
到
实际中使用的不是上面的形式,而是奇异值分解定义的形式:
D+ 是把对角矩阵 D 伪逆矩阵,它是把用到了非零元素,之后由结果矩阵转置得到???(is obtained by taking the reciprocal of its non-zero element then taking the transpose of the resulting matrix)。
当
当
A
中,
2.10 迹算子
迹算子可以得到矩阵对角线元素的和:
迹算子很重要,一些操作可以转换为求和操作,而求和操作需要用到矩阵相乘和迹算子。
例如Frobenius范数定义
以迹算子形式定义一些操作,可以得到很多迹算子的性质。例如
如果是方阵,那么还有循环移动不变的性质
更一般的写法:
循环移动可能得到的矩阵大小都不同,例如
A∈Rm×n
,
B∈Rn×m
:
AB∈Rm×m , BA∈Rn×n 。
对于标量: a=Tr(a) 。
2.11行列式
一个方矩阵的行列式由 det( A )表示,它是一个把矩阵映射到实数的函数。一个矩阵的行列式等于其矩阵所有特征值的乘积。行列式的绝对值可以看做矩阵的在某个空间的体积。如果行列式等于零,那么这个空间至少全部收缩到了一维空间,是它体积为零。如果行列式等于1,那么变化过程中体积不变。
2.12 例子:主成成分分析
一个简单的机器学习算法叫做主成成分分析(principal components analysis, PAC),可以使用基本的线性代数来推导。
假设现在有
一种方法是把这些点编码到更低的维度空间去。可以找到一种编码方法,对于每个点
x(i)∈Rn
,找到一个向量
c(i)∈Rl
,如果
l<n
,那么编码后的数据占用空间会减少。找到编码函数
f(x)=c
,解码函数可以重建
x
,使得
PCA就是要用到的解码函数,为了使解码简单,解码函数就是矩阵的相乘,映射回到 Rn 。 g(c)=Dc ,其中 D∈Rn×l ,它是定义解码的矩阵。
计算最优的解码矩阵是个难题,为了使问题简单,PCA限制
D
的列互相正交。(注意
这时解还不唯一,为了使解唯一,再加上限制: D 的列有单位范数。
为了把想法转换为可以实现的算法,首先计算怎么为每个点
转换为使用 L2 的平方形式,因为它非负,且对于非负参数单调递增
即最小化
由 L2 定义展开
因为 xTg(c),g(c)Tx 都是标量
因为只依赖变量 c ,可以忽略第一项
把g(c)的定义代入上式
即
因为 D 的列正交且有单位范数
可以通过矢量微积分来求得上式的解:
即
得到:
这样算法非常高效,对
x
编码,只需要矩阵乘法
再前面加上矩阵乘法,可以定义PCA重建矩阵操作
下一步要选择编码矩阵
D
。编码矩阵
先假设
l=1
,因为
γ(x)=DTDx
,上式变为:
上式是最直接的写法,但是在文体上更习惯把四叔放到左边,可以这样写
或者把矩阵转置写到一起
把上面的向量写出矩阵形式,
X∈Rm,n
忽略掉上面的约束项,简化Forbenius范式
展开后为
和
d
无关的项不影响上面公式的结果
对迹算子内擦矩阵进行循环移位
有约束项
dTd=1
得到
可以由特征值分解解决上面的最优化问题,即
d
是矩阵
在一般情况下,即
l>1
,矩阵
D
是