《Deep Learning》(2)-线性代数

2.1 标量,向量,矩阵和张量

  • 标量:只是一个数字。
  • 向量:一串数字,相当于一维数组。一般默认向量都是列向量。
  • 矩阵:一个2维的数组,需要用2个索引才可以确定其中一个元素。例如第 i 行,j列。
  • 张量:维数大于2的数组,例如一个3维的张量A,需要坐标 (i,j,k) 才能确定其中一个元素。

矩阵的转置:

(AT)i,j=Aj,k

向量只有一行/一列,向量转置可以看做只有一列的矩阵的转置。标量转置还是它自己。

矩阵加法, A,B 都是矩阵

C=A+B

表示:
Ci,j=Ai,j+Bi,j

标量加或者乘以矩阵, B 是矩阵,a,c是标量:

D=aB+c

表示:
Di,j=aBi,j+c

向量和矩阵相加,虽然看上去不那么合适,但是在深度学习中经常看到, A 是矩阵,b是向量,那么:

C=A+b

表示:
Ci,j=Ai,j+bj

A 的每一行都加上b

2.2 矩阵、向量的乘

A m×n的矩阵, B n×p的矩阵,那么

C=AB

C m×p的矩阵。其中
Ci,j=kAi,kBk,j

上面的这种矩阵乘法叫做element-wise product或Hadamard product,表示为 AB
还有一种矩阵乘法,叫做doc product,即点乘,这时两个矩阵维数相同,例如
C=AB

表示
Ci,j=Ai,jBi,j

矩阵乘法满足一些乘法额定律:
分配律:

A(B+C)=AB+AC

结合律
A(BC)=(AB)C

不满足交换律,但是向量相乘满足交换律

xTy=yTx

矩阵乘积的转置有如下形式

(AB)T=BTAT

除了上面的性质外,还应该知道一些特性:
线性等式:
Ax=b

其中 ARm×n 是矩阵, bRm 是向量, A,b 都是已知的, xRn 是未知的。上面的矩阵乘法的等式相当于提供了表达等式的一种方式。

2.3 矩阵求逆和单位矩阵

假设 In 是一个单位矩阵, InRm×n ,那么

xRn,Inx=x

单位矩阵,对角线上的数字都是1,其他部分数字全是0。

菊展 A 的逆表示为A1,有

A1A=In

那么2.2节中的等式

Ax=b

可以求解得到
x=A1b

当然, A1 的存在是有条件的,不是每个矩阵都存在逆矩阵的。

当逆矩阵 A1 存在时,有不同的算法来闭式计算它。但是在计算机中,表示小数的精确度有限,因此有时并不能十分精确的得到 A1 ,只能得到一个近似的估计值。

2.4 线性依赖和跨度

等式

Ax=b

如果 A1 ,那么上面的等式对于不同的 b 必须只有一个解。但是也可能存在没有解或者有无数个解。对于特定具体的b,如果 x y都是解,那么下面也是一个解
z=αx+(1α)y

也是一个解。其中 α 是实数,那么这样就存在无数个解。

为了分析上面等式有多少个解,把 A 的每一列看做不同的方向,有多少条路可以到达b。这样, x 的每个元素表示在对应的方向上走多远,xi表示在第 i 列上移动多远:

Ax=ixiA:,i

上式这个操作叫做线性组合。

一个向量集合的生成空间是:这个向量集线性组合的所有点组成的空间。

Ax=B 是否有解,在于 b 是否在A列向量集合的线性空间中。这个特殊的范围叫做列空间。

为了使 Ax=b 有解, bRm ,矩阵 A 的列空间应该包含Rm。矩阵有 n 列,即nm

nm 也只是必要条件,不是充分条件。因为有些列可能是冗余的;例如2列完全形同。这样的冗余叫做线性依赖。如果一个向量集线性独立,那么这个集合中的任何一个向量,都不能由其他向量的线性组合得到。这样,如果矩阵 A 的列空间包含Rm,那么它至少要有 m 个线性独立的列向量。这才是Ax=b有解的充分必要条件。

为了使矩阵 A 的逆存在,对于每一个b,等式 Ax=b 都应该至多有一个解。这样 A 最多有m列,否则可能会有多个解。

总和上面,矩阵 A 必须是个方阵,即m=n,且 A 的列线性独立。这样的矩阵叫做奇异矩阵

只有A是奇异矩阵时才可以使用矩阵求逆的方法求解。

2.5 范数

范数可以衡量向量的大小,一个向量的 Lp 范数定义如下:

||x||p=(i|xi|p)1p

其中 pR,p1

范数可以看做是向量到一个标量的映射函数,只要符合以下性质,都可以看做范数:
f(x)=0x=0
f(x+y)f(x)+f(y) (三角不等式)
αR,f(αx)=|α|f(x)

L2 范数是著名的欧几里得范数,它是原点到向量的欧拉距离。它可以省去下标,简写为 ||x|| L2 的平方形式等于 xTx

L2 范数在机器学习中用的最广,它的导数只和对应的项有关。但是平方形式的 L2 范数在原点附近时,增长太慢。在一些机器学习的应用中,要十分严格区分0和非0的区别,这时可以使用 L1 范数

||x||1=i|xi|

有时需要向量中非零元素的大小,有些人称作 L0 范数,实际上没有 L0 范数,可以使用 L1 范数取代它。

在机器学习中经常用到 L 范数,称作最大范数(max norm),它的简化形式就是向量中最大数的幅度

||x||=maxi|xi|

在深度学习中,经常需要衡量矩阵的大小,这时使用Frobenius范数

||A||F=i,jA2i,j

和向量的 L2 范数类似。

两个向量的点乘可以写作范数的形式

xTy=||x||2||y||2cosθ

其中 θ x y的夹角。

2.6特殊矩阵和向量

对角矩阵:只有对角元素非零,其他元素都为零。 D 是对角元素,那么Di,j=0,ij。单位矩阵 I 就是对角矩阵。diag(v)表示对角方形矩阵的对角元素组成的向量。计算和对角方阵的的乘积十分高效,例如计算diag( v )x= vx 。对角元素不为零的对角方阵才存在逆矩阵, diag(v)1=diag([1/v1,...,1/vn]T)

对角矩阵不一定是方形矩阵,但是只有方形对角矩阵才存在逆矩阵。非方形的对角矩阵相乘的代价也很小。

对称矩形是矩阵等于其转置

A=AT

生成矩阵时,如果由2个变量的函数生成,且变量顺序无关,那么经常会生成对称矩阵,因为对称矩阵中 Ai,j=Aj,i

单位向量是指其范围为1

||v||2=1

如果两个向量 x,y 正交,那么 xTy=0 ;如果这两个向量的范数不为零,那么它们之间的角度为90度。在 Rn 中,至多有n个互相正交的非零向量。如果正交向量的范数为1,那么叫做标准正交。

正交矩阵的行和列都是正交的

ATA=AAT=I


A1=AT

可以看出,计算正交矩阵的逆十分简单。

2.7 特征分解

数学上的物体,可以分解。例如12可以分解为2x2x3;这样可以得知它不能被5整除,但是可以被3整除。同理,矩阵也可以分解。

用的最广的矩阵分解是特征向量和特征值。矩阵 A 的非零特征向量v A 乘以它可以得到缩放/放大的v

Av=λv

其中, λ 是对应的特征值。上式还有另一种形式 vTA=λvT

如果 v 是特征向量,那么它缩放后依然是特征向量,所以我们只关心单位特征向量。

假设A n 个线性无关的特征向量{v(1),...,v(n)},对应的特征值为 {λ1,...,λn} ,可以把特征向量当做一列来组成一个矩阵 V=[v(1),...,v(n)] ,把特征值来组合成一个向量 λ=[λ1,...,λn] A 的特征分解为

A=Vdiag(λ)V1

可以通过特征值和特征向量来重建 A 。把矩阵分解为特征值和特征向量有助于我们分析理解矩阵。

不是每个矩阵都能分解为特征值和特征向量,有时分解还会产生复数。幸运的是,本书讲解的矩阵大部分都是可以简单分解的。注意一点,每个实数对称矩阵都可以分解,其特征值和特征向量都为实数:

A=QΛQT

其中 Q 是由A的特征向量组成的正交矩阵, Λ 是对角矩阵。特征值 Λi,i 对应着矩阵 Q 的第i Q:,i

一个实对称矩阵 A 肯定有特征值分解,且特征值分解可能不唯一。如果两个或两个以上的特征向量有相等的特征值,由正交向量组成的集合和这个特征值也是矩阵的特征值分解。为了方便,我们常常将Λ降序排序;这样的话只有在特征值唯一时,特征分解才唯一。

矩阵的特征值分解给我们带来许多便利。例如,只有矩阵所有特征值为0时,它才是奇异矩阵。实数对称矩阵相乘可以用特征值分解优化, f(x)=xTAx ,且 ||x||2=1 ;如果 x A的一个特征值,那么函数结果就是对应的特征向量;函数的最大值和最小值是对应特征值得最大值和最小值。

一个矩阵的所有特征值都大于0,那么就是正定的;如果都大于等于0,那么就是半正定的;如果都小于零,那么就是负定的;如果都小于等于零,那么就是半负定的。

2.8奇异值分解

上一节讲到了特征值分解,这一节来学奇异值分解(singular value decomposition, SVD)。像特征值分解一样,奇异值分解也可以帮助发现矩阵的一些特性;且奇异值分解更具一般性,每个矩阵都有奇异值分解。

特征分解形式为:

A=Vdiag(λ)V1

奇异值分解形式类似:
A=UDVT

这里,假设 A m×n的矩阵,那么 U m×m的矩阵, D m×n的矩阵, V n×n的矩阵。且这三个矩阵有特殊的结构: U V都是正交矩阵, D 是对角矩阵,它不一定是方阵。

D叫做 A 的奇异值,U的列是 A 的左奇异向量(left-singular vector),V的列是 A 的右奇异向量(right-singular vector)。

还可以通过简单的推导,得出奇异值分解和特征分解的关系。

AAT=(UDVT)(UDVT)T=UDVTVDTUT=UD(VTV)DTUT=U(DDT)U1

因为 U V是正交矩阵:
UUT=I,VVT=I

这样,可以把 U 当做AAT的特征向量。同理, V ATA的特征向量。

奇异值分解的最有用的特性在于可以泛化,使非方阵可以部分求逆。

2.9 广义伪逆矩阵

非方阵的逆矩阵没有定义。假设要对下面等式求解:

Ax=y

B A左逆矩阵,等式左边乘以 B 可以得到
x=By

A B的映射可能不唯一。 A m×n,如果 m>n ,可能没有解;如果 m<n 可能有多个解。广义伪逆矩阵让我们可以无限接近, A 的广义伪逆矩阵定义:

A+=limα0(ATA+αI)1AT

实际中使用的不是上面的形式,而是奇异值分解定义的形式:

A+=VD+DT

D+ 是把对角矩阵 D 伪逆矩阵,它是把用到了非零元素,之后由结果矩阵转置得到???(is obtained by taking the reciprocal of its non-zero element then taking the transpose of the resulting matrix)。

A中, m<n 时,可以使用伪逆矩阵中的一个。尤其是经常用到的一个解为: x=A+y ,其中 ||x||2 是所有解中最小的。

A 中,m>n是可能没有解。这时使用伪逆转置,可以得到离 x 欧拉距离最近的解,即$$||Ax-y||_2$尽可能小。

2.10 迹算子

迹算子可以得到矩阵对角线元素的和:

Tr(A)=iAi,j

迹算子很重要,一些操作可以转换为求和操作,而求和操作需要用到矩阵相乘和迹算子。

例如Frobenius范数定义

||A||F=Tr(AAT)

以迹算子形式定义一些操作,可以得到很多迹算子的性质。例如

Tr(A)=Tr(AT)

如果是方阵,那么还有循环移动不变的性质

Tr(ABC)=TR(CBA)=Tr(BCA)

更一般的写法:
Tr(i=1nF(i))=Tr(F(n)i=1n1F(i))

循环移动可能得到的矩阵大小都不同,例如 ARm×n BRn×m

Tr(AB)=Tr(BA)

ABRm×m BARn×n

对于标量: a=Tr(a)

2.11行列式

一个方矩阵的行列式由 det( A )表示,它是一个把矩阵映射到实数的函数。一个矩阵的行列式等于其矩阵所有特征值的乘积。行列式的绝对值可以看做矩阵的在某个空间的体积。如果行列式等于零,那么这个空间至少全部收缩到了一维空间,是它体积为零。如果行列式等于1,那么变化过程中体积不变。

2.12 例子:主成成分分析

一个简单的机器学习算法叫做主成成分分析(principal components analysis, PAC),可以使用基本的线性代数来推导。

假设现在有m个点的集合 {x(1),...,x(m)} ,所有点都在空间 Rn 上。我们打算对这些点实施有损压缩操作,有损压缩意味着占用空间会减少,但是会损失精度。我们想尽可能少的损失精度。

一种方法是把这些点编码到更低的维度空间去。可以找到一种编码方法,对于每个点 x(i)Rn ,找到一个向量 c(i)Rl ,如果 l<n ,那么编码后的数据占用空间会减少。找到编码函数 f(x)=c ,解码函数可以重建 x ,使得xg(f(x))

PCA就是要用到的解码函数,为了使解码简单,解码函数就是矩阵的相乘,映射回到 Rn g(c)=Dc ,其中 DRn×l ,它是定义解码的矩阵。

计算最优的解码矩阵是个难题,为了使问题简单,PCA限制 D 的列互相正交。(注意D不是正交矩阵,除非 l=n )。

这时解还不唯一,为了使解唯一,再加上限制: D 的列有单位范数。

为了把想法转换为可以实现的算法,首先计算怎么为每个点x生成最优的 c 。一种方法是尽量减小 x 和它重建后点的距离,在主成分析中,使用L2范数:

c=argcmin||xg(c)||2

转换为使用 L2 的平方形式,因为它非负,且对于非负参数单调递增
c=argcmin||xg(c)||22

即最小化
(xg(c))T(xg(c))

L2 定义展开
xTxxTg(c)g(c)Tx+g(c)Tg(c)

因为 xTg(c),g(c)Tx 都是标量
xTx2xTg(c)+g(c)Tg(c)

因为只依赖变量 c ,可以忽略第一项
c=argcmin2xTg(c)+g(c)Tg(c)

把g(c)的定义代入上式
c=argcmin2xTDc+cTDTDc


=argcmin2xTDc+cTIlc

因为 D 的列正交且有单位范数
=argcmin2xTDc+cTc

可以通过矢量微积分来求得上式的解:

Δc(2xTDc+cTc)=0


2DTx+2c=0

得到:
c=DTx

这样算法非常高效,对 x 编码,只需要矩阵乘法

f(x)=DTx

再前面加上矩阵乘法,可以定义PCA重建矩阵操作

γ(x)=g(f(x))=DDTx

下一步要选择编码矩阵 D 。编码矩阵D是的输入矩阵和重建后的矩阵之间的 L2 最小。编解码使用同一个矩阵,使得计算所有维度的误差矩阵的Frobenius范数最小:

D=argDmini,j(x(i)jr(x(i))j)2subjecttoDTD=Il

先假设 l=1 ,因为 γ(x)=DTDx ,上式变为:

d=argdmindi||x(i)ddTx(i)||22subjectto||d||2=1

上式是最直接的写法,但是在文体上更习惯把四叔放到左边,可以这样写

d=argdmindi||x(i)dTx(i)d||22subjectto||d||2=1

或者把矩阵转置写到一起

d=argdmindi||x(i)x(i)ddT||22subjectto||d||2=1

把上面的向量写出矩阵形式, XRm,n

d=argdmin|XXddT||2FsubjecttodTd=1

忽略掉上面的约束项,简化Forbenius范式

argdminTr((XXddt)T(XXddT))

展开后为

argdminTr(XTXddT)Tr(ddTXTX)+Tr(ddTXTXddT)

d 无关的项不影响上面公式的结果

argdmin2Tr(XTXddT)+Tr(ddTXTXddT)

对迹算子内擦矩阵进行循环移位

argdmin2Tr(XTXddT)+Tr(XTXddTddT)

有约束项 dTd=1 得到

argdmin2Tr(XTXddT)+Tr(XTXddT)subjecttodTd=1

argdminTr(XTXddT)subjecttodTd=1

argdmaxTr(XTXddT)subjecttodTd=1

argdmaxTr(dTXTXd)subjecttodTd=1

可以由特征值分解解决上面的最优化问题,即 d 是矩阵XTX对应的最大的特征值。

在一般情况下,即 l>1 ,矩阵 D l个最大特征值对应的特征向量。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值