线性代数基础知识(三)【转载】
https://www.cnblogs.com/hhddcpp/p/5742717.html
出处:http://blog.csdn.net/han_xiaoyang/article/details/51629242
http://blog.csdn.net/longxinchen_ml/article/details/51629328
1基本概念和符号
线性代数可以对一组线性方程进行简洁地表示和运算。例如,对于这个方程组:
这里有两个方程和两个变量,如果你学过高中代数的话,你肯定知道,可以为x1 和x2找到一组唯一的解 (除非方程可以进一步简化,例如,如果第二个方程只是第一个方程的倍数形式。但是显然上面的例子不可简化,是有唯一解的)。在矩阵表达中,我们可以简洁的写作:
其中:
很快我们将会看到,咱们把方程表示成这种形式,在分析线性方程方面有很多优势(包括明显地节省空间)。
1.1基本符号
以下是我们要使用符号:
- 符号A ∈ Rm×n表示一个m行n列的矩阵,并且矩阵A中的所有元素都是实数。
- 符号x ∈ Rn表示一个含有n个元素的向量。通常,我们把n维向量看成是一个n行1列矩阵,即列向量。如果我们想表示一个行向量(1行n列矩阵),我们通常写作xT (xT表示x的转置,后面会解释它的定义)。
- 一个向量x的第i个元素表示为xi:
- 我们用aij (或Aij,Ai,j,等) 表示第i行第j列的元素:
- 我们用aj 或A:,j表示A矩阵的第j列元素:
-
我们用aT i或 Ai,:表示矩阵的第i行元素:
- 请注意,这些定义都是不严格的(例如,a1和a1T在前面的定义中是两个不同向量)。通常使用中,符号的含义应该是可以明显看出来的。
3 矩阵乘法
矩阵 A ∈ Rm×n 和B ∈ Rn×p 的乘积为矩阵 :
其中:.
请注意,矩阵A的列数应该与矩阵B的行数相等,这样才存在矩阵的乘积。有很多种方式可以帮助我们理解矩阵乘法,这里我们将通过一些例子开始学习。
3.1向量的乘积(是个实数)
给定两个向量x,y ∈ Rn,那么xT y的值,我们称之为向量的内积或点积。它是一个由下式得到的实数:
.
可以发现,内积实际上是矩阵乘法的一个特例。通常情况下xT y = yT x。
对于向量x ∈ Rm, y ∈ Rn(大小不必相同),xyT ∈ Rm×n称为向量的外积。外积是一个矩阵,其中的每个元素,都可以由得到,也就是说,
.
我们举个例子说明外积有什么用。令1 ∈ Rn 表示所有元素都是1的n维向量,然后将矩阵 A ∈ Rm×n 的每一列都用列向量x ∈ Rm表示。使用外积,我们可以将A简洁的表示为:
.
3.2矩阵-向量的乘积
对于一个矩阵A ∈ Rm×n 和向量x ∈ Rn,他们的乘积为向量 y = Ax ∈ Rm。理解矩阵向量乘法的方式有很多种,我们一起来逐一看看。
以行的形式书写A,我们可以将其表示为Ax的形式:
.
也就是说,y第i行的元素等于A的第i行与x的内积 .
咱们换个角度,以列的形式表示A,我们可以看到:
.
换言之,y是A列的线性组合,线性组合的系数就是x的元素。
上面我们看到的是右乘一个列向量,那左乘一个行向量嘞?对于A ∈ Rm×n,x ∈ Rm, y ∈ Rn,这个式子可以写成yT = xT A 。向之前那样,我们有两种方式表达yT,这取决于表达A的方式是行还是列。第一种情况是把A以列的形式表示:
这个式子说明yT 第i列的元素等于向量x与A的第i列的内积。
我们也一样可以把A表示成行的形式,来说明向量-矩阵乘积。
我们可以看到yT 是A的行的线性组合,线性组合的系数是x的元素。
3.3矩阵-矩阵乘积
基于以上知识,我们可以看到如之前所定义的矩阵-矩阵乘法C=AB有四种不同(但是等价)的理解方法。
首先,我们可以将矩阵-矩阵相乘看作一组向量-向量乘积。根据其概念,我们最好理解的方式是矩阵C的(i,j)元素是A的i行与B的 j列的内积。符号表达如下:
.
注意由于A ∈ Rm×n , B ∈ Rn×p, ai ∈ Rn bj ∈ Rn, 所以内积永远有意义。对矩阵乘法而言,以A的行和B的列表示是最"自然"的表示方法。当然,我们也可以以A的列和B的行的形式进行表示。表达方法是AB外积累加的形式,稍微复杂一点点。符号表达为:
.
换一种方式表达,AB的值等于对于所有的i,A的i列与B的i行的外积的和。因此,对于ai ∈ Rm 和 bi ∈ Rp,外积aibiT的维度是m×p,它与C的维度是相同的。等式可能有点难理解,花点时间想想,我猜你肯定能明白。
第二种理解方式是,我们也可将向量-向量乘法看做一系列的矩阵-向量乘积。具体来说,如果我们将B以列的形式表示,我们可以将C的每一列看做A和B列的矩阵-向量乘积。符号表达为:
.
可以将C的i列以矩阵-向量乘积(向量在右)的方式表示为ci = Abi. 这些矩阵-向量乘积可以用前面的两种观点解释。最后类比一下,我们以A的行形式表示,将C的行视为A的行与C的矩阵-向量乘积,符号表达为
.
在此,我们以矩阵-向量乘积(向量左乘)的形式表示了C的i列,
只是一个矩阵乘法而已,这么细的分析看上去好像没有必要,尤其是当我们知道矩阵乘法定义后其实很容易可以计算得到结果。然而,几乎所有的线性代数内容都在处理某种类型的矩阵乘法,因此花一些时间去形成对这些结论的直观认识还是很有帮助的。
此外,知道一些更高层次的矩阵乘法的基本性质也是有好处的:
- 结合律即(AB)C = A(BC)
- 分配率即A(B + C) = AB + AC
- 注意哦,矩阵乘法没有交换律,即AB ≠BA.(例如,如果A ∈ Rm×n 和B ∈ Rn×q,矩阵的乘积BA在m和q不等时,BA可能根本就不存在)
如果你对这些性质不熟悉,最好花些时间自己证明一下。例如,为了验证矩阵乘法的结合律,对于A ∈ Rm×n, B ∈ Rn×p,C ∈ Rp×q,注意AB ∈ Rm×p,而 (AB)C ∈ Rm×q。类似的有BC ∈ Rn×q,所以A(BC) ∈ Rm×q。因此可以得到维度相同的矩阵。为了说明矩阵乘法符合结合律,证明(AB)C 第(i,j)个元素是否与A(BC)的(i,j)个元素相等就够了。我们可以直接运用矩阵乘法的定义进行证明。
上面的推导过程中,第一个和最后两个等式使用矩阵乘法的定义,第三和第五的等式使用标量乘法的分配率,第四个等式使用了标量加法的交换律和结合律。这种将运算简化成标量的特性以证明矩阵性质的方法会经常出现,你可以熟悉熟悉它们。
3.4行列式
方阵A∈Rn×n的行列式是一个映射det: Rn×n→R,记作|A|或det A (同迹运算一样,我们通常省略括号)。在代数上,可以显式地写出A的行列式的公式,但是很遗憾,它的意义不够直观。咱们先给出行列式的几何解释,然后再探讨一下它的一些特殊的代数性质。
对于矩阵:
考虑由A中所有行向量a1,a2,..,an的所有可能线性组合组成的点集S⊂Rn,其中线性组合的参数都介于0和1之间;换句话说,由于这些线性组合的参数a1,a2,...,an∈Rn满足0≦ai≦1,i=1,...,n,集合S是张成子空间({a1, . . , an})的约束。公式表达如下:
A的行列式的绝对值,是集合S的"体积"的一个量度。
例如,考虑2×2矩阵,
此处,矩阵的行:
对应于这些行的集合S如图1所示。对于二维矩阵,S一般是平行四边形。在我们的示例中A的行列式的值为|A| = -7.(可以使用本节后文将给出的公式来计算)。所以平行四边形的面积为7(自行证明!)
在三维中,集合S对应一个平行六面体(一个三维的斜面的盒子,例如每一面都是平行四边形)。这个3×3矩阵的行列式的绝对值,就是这个平行六面体的三维体积。在更高的维数中,集合S是一个n维超平形体。
图 1 :公式(1)给出2×2矩阵A的行列式图示。此处,a1和a2是对应于A中的行的向量,集合S对应于阴影区域(亦即平行四边形)。行列式的绝对值,|det A|=7,是平行四边形的面积。
代数上,行列式满足下列三个性质(其它性质亦遵循它,包括行列式的一般公式)
1、单位矩阵的行列式为1 ,|I| = 1。(从几何上来看,单位超立方体的体积为1)。
2、对于一个矩阵A∈Rn×n,如果将A中某行乘以一个标量t∈R,新矩阵的行列式值为t|A|。
(几何上,集合S的一条边乘以因数t,会导致体积扩大t倍)
3、我们交换行列式A任意两行aTi和aTj,新矩阵的行列式的值为-|A|,例如:
满足上述三个条件的函数是否存在,并不是那么容易看出来的。然而事实上,此函数存在且唯一。(此处不证明)
这三个性质的推论包括:
- 对于 A ∈ Rn×n, |A| = |AT |。
- 对于 A,B ∈ Rn×n, |AB| = |A||B|。
- 对于 A ∈ Rn×n,当且仅当A奇异(即不可逆)时,|A| = 0。(如果A奇异,它必不满秩,它的列线性相关。此时,集合S对应于n维空间中的一个平板,因此体积为零。)
- 对于A ∈ Rn×n,且A非奇异, |A-1| = 1/|A|.
在给出行列式的一般定义之前,我们定义代数余子式:对于A∈ Rn×n,矩阵A\i,\j ∈R(n-1)×(n-1)是A删除i行和j列的结果。
行列式的一般(递推)定义:
其中首项A∈ R1×1的行列式,|A| = a11。如果我们把公式推广到A∈ Rn×n,会有n!(n的阶乘)个不同的项。因此,我们很难显式地写出3阶以上的矩阵的行列式的计算等式。
然而,3阶以内的矩阵的行列式十分常用,大家最好把它们记住。
矩阵A∈ Rn×n的古典伴随矩阵(通常简称为伴随矩阵),记作adj(A),定义为:
(注意A的系数的正负变化。)可以证明,对于任意非奇异矩阵A∈ Rn×n,有
这个式子是求矩阵的逆的一个很好的显示公式。大家要记住,这是一个计算矩阵的逆的一个更加高效的方法。
3.5 二次型和半正定矩阵
对于一个方阵A∈ Rn×n和一个向量x∈ Rn,标量xTAx被称作一个二次型。显式地写出来,我们可以看到:
注意:
第一个等式是由标量的转置等于它自身得到,第二个等式是由两个相等的量的平均值相等得到。由此,我们可以推断,只有对称分量对二次型有影响。我们通常约定俗成地假设二次型中出现的矩阵是对称矩阵。
我们给出如下定义:
• 对于任一非零向量x∈Rn,如果xTAx>0,那么这个对称矩阵A∈Sn是正定(PD)的.通常记作A≻0,(或简单地A>0),所有的正定矩阵集合记作Sn++。
• 对于任一非零向量x∈Rn,如果xTAx≧0,那么这个对称矩阵A∈Sn是半正定(PSD)的。记作A≽0,(或简单地A≧0),所有的半正定矩阵集合记作Sn+ 。
• 同样的,对于任一非零向量x∈Rn,如果xTAx<0,那么这个对称矩阵A∈Sn是负定(ND)的。记作A≺0,(或简单地A<0)。
•对于任一非零向量x∈Rn,如果xTAx≤0,那么这个对称矩阵A∈Sn是半负定(NSD)的.记作A≼0,(或简单地A≤0)。
•最后,如果它既不是半正定也不是半负定-亦即,存在x1,x2∈Rn使得x1TAx1>0且x2TAx2<0,那么对称矩阵A∈Sn是不定矩阵。
显然,如果A是正定的,那么-A是负定的,反之亦然。同样的,如果A是半正定的,那么-A是半负定的,反之亦然。如果A是不定的,-A也是不定矩阵。
正定矩阵和负定矩阵的一个重要性质是,它们一定是满秩的。因此,也是可逆的。为了证明这个性质,假设存在矩阵A∈ Rn×n是不满秩的。进而,假设A的第j列可以其它n-1列线性表示。
对于x1,...,xj−1, xj+1,...,xn ∈R,设xj=-1,我们有
但是这意味着对于某些非零向量x,xTAx=0,所以A既不能正定,也不能负定。因此,如果A是正定或者负定,它一定是满秩的。
最后,一种常见的正定矩阵需要注意:给定一个矩阵A ∈Rm×n (不一定是对称,甚至不一定是方阵),矩阵G=ATA(有时也称为格拉姆矩阵)必然是半正定的。进一步,如果m≥n,(为了方便,我们假设A满秩)此时,G=ATA是正定的。
3.6特征值和特征向量
对于一个方阵A ∈Rn×n,如果:
我们说λ∈C是A的特征值,x∈Cn是对应的特征向量(可能有多个).
直观上看,其实上面的式子说的就是A乘一个向量x,得到的新的向量指向和x相同的方向,但是须乘一个标量λ。注意对任一个特征向量x∈Cn和标量t∈C,A(cx) = cAx = cλx = λ(cx),,所以cx也是一个特征向量。因此,我们要说λ所对应的特征向量。我们通常假设特征向量被标准化为长度1。(此时依然有歧义,因为x和-x都可以是特征向量,但是我们也没什么办法)。
如果
我们可以把上文的等式换一种写法,表明(λ,x)是A的一个特征值-特征向量对。
但是当且仅当有非空零空间时,也就是当(λI − A)非奇异时,亦即
时,(λI − A)x = 0有x的非零解。
我们现在可以用前文的行列式的定义,来把这个表达式展开为一个(非常大的) λ的多项式,其中λ的最高阶为n。我们可以解出多项式的n个根(这可能十分复杂),来得到n个特征值λ1, ...,λn。 为了解出特征值对应的特征向量,我们可以简单地求线性等式(λiI − A)x = 0的解。需要注意,实际操作时,计算特征值和特征向量不用这个方法。(行列式的完全展开式有n!项)。这只是一个数学论证。
下面是特征值和特征向量的性质(假设A∈ Rn×n,且特征值λ1,...,λn对应的特征向量为x1,...,xn):
- 矩阵A的迹等于特征值的和
-
A的行列式等于特征值的积
-
A的秩等于A的非零特征值的个数。
-
如果A是非奇异矩阵,则1/λi是矩阵A-1对应于特征向量xi的特征值。亦即,A−1xi = (1/λi)xi。(证明方法是,对于特征向量等式,Axi = λixi,在两边同时左乘A-1)
-
对角矩阵D=diag(d1, . . . ,dn)的特征值是所有的对角元素。
我们可以把所有的特征向量等式联立为
X ∈Rn×n 的列是A的特征向量,∧是对角元素为A的特征值的对角矩阵。亦即:
如果A的特征向量线性无关,则矩阵X可逆,所以A=X∧X-1。可以写成这个形式的矩阵A被称作可对角化。
3.7 对称矩阵的特征值和特征向量
当我们考察对称矩阵A∈Sn的特征值和特征向量时,有两个特别的性质需要注意。首先,可以证明,A的所有特征值都是实数。其次,A的所有特征向量时正交的。也就是说,上面所定义的矩阵X是正交矩阵。(我们把此时的特征向量矩阵记作U)。
接下来,我们可以将A表示为A=U∧UT,由上文知,一个正交矩阵的逆等于它的转置。
由此,我们可以得到所有完全使用特征值来定义的矩阵。假设A∈Sn= U∧UT。有:
其中,y=UTx(由于U满秩,任意y∈Rn可以表示为此形式。)由于yi2永远为正,这个表达式完全依赖于λi。如果所有的λi>0,那么矩阵正定;如果所有的λi≥0,矩阵半正定。同样的,如果所有的λi<0或λi≤0,矩阵A分别负定和半负定。最后,如果A既有正的特征值又有负的特征值,它是不定矩阵。
特征值和特征向量的一个常见的应用是找出矩阵的某个函数的最大值。例如,对于矩阵A∈Sn,考虑这个求最大值问题:
也就是说,我们希望找到使二次型最大的单位向量。假设特征值大小为λ1 ≥ λ2 ≥ . . . ≥ λn,这个最优化问题的最优解x为x1,对应的特征值为λ1.此时,二次型的最大值是λ1。相似的,最小值问题的最优解
是xn,对应的特征值是λn,那么最小值是λn。可以通过将A表示为特征向量-特征值的形式,然后使用正定矩阵的性质证明。然而,在下一节我们可以使用矩阵微积分直接证明它。
4矩阵微积分
之前章节的内容,在一般线性代数的课程中都会讲到。而有些常用的内容是没有的,这就是把微积分推广到向量。事实上,我们应用的微积分都会比较繁琐,各种符号总是让问题变得更复杂。在本节中,将给出一些矩阵微积分的基本定义,并举例说明。
4.1梯度
设ƒ:Rm×n→R是大小为m×n的矩阵A的函数,且返回值为实数。ƒ的梯度(关于A∈Rm×n)是一个偏导矩阵,定义如下:
即,一个m×n矩阵,其中
注意∇Af(A)和A有相同的大小。所以,特别的,当A是一个向量x∈Rn时,
需要特别记住的是,函数的梯度只在函数值为实数的时候有定义。也就是说,函数一定要返回一个标量。例如,我们就不能对Ax,A∈Rn×n中的x求梯度,因为它是一个向量。
它遵循和偏导相同的性质:
原则上,梯度是多变量函数偏导的延伸。然而,实际应用梯度时,会因为数学符号而变得棘手。例如,假设A∈Rm×n是一个具有固定系数的矩阵,b∈Rm是一个固定系数的向量。令ƒ :Rm→R为由ƒ(z)=zTz,因此∇zf(z) =2z。现在,考虑表达式;
∇f(Ax)
上式该如何理解?至少有两种解释:
-
解释一,因∇f(Ax). = 2z,所以可将∇f(Ax).理解为点Ax处的梯度,那么:
∇f(Ax) = 2(Ax) = 2Ax ∈ Rm
∇f(Ax) = ∇xg(x) ∈ Rn
大家可以发现,这两种解释确实不同。解释一得出的结果是m维向量,而解释二得出n维向量!怎么办?
这里的关键是确定对那个变量求微分。在第一种情况下,是让函数f对参数z求微分,然后代入参数Ax。第二种情况,是让复合函数g(x)= F(AX)与直接对x求微分。第一种情况记为∇zf(AX),第二种情况记为∇xf(AX)。你会在作业中发现,理清数学符号是非常重要的。
4.2Hessian矩阵
假设 ƒ :Rn→R 是n维向量A的的函数,并返回一个实数。那么x的Hessian矩阵是偏导数的n×n矩阵,写作∇2xf(x),简记为H。
换句话说,∇2xf(x) ∈ Rn×n ,其中:
需要注意的是Hessian矩阵始终是对称的,即:
和梯度类似,Hessian矩阵只在f(x)为实数时有定义。
可以很自然联想到,偏导类似于函数的一阶导数,而Hessian类似函数的的二阶导数(我们使用的符号,也表明了这种联系)。通常这种直觉是正确的,但有些注意事项需要牢记。
首先,只有一个变量的实值函数,f : R→R,它的基本定义是二阶导数是一阶导数的导数,即:
然而,对于关于向量的函数,该函数的梯度是一个向量,我们不能取向量的梯度,即;
并且这个表达式没有定义。因此,不能说Hessian矩阵是梯度的梯度。然而,在下面的意义上比较靠谱:如果我们取第i项(∇xf(X))i =∂F(X)/∂xi,并取对x的梯度,我们得到:
这是Hessian矩阵的第i列(或行)。 因此:
如果此处稍粗略一点,可以得出,只要将其真实的含义理解为对 (∇xf(x))的每一项求梯度,而不是对向量求梯度即可。
最后注意,虽然可求出对矩阵A∈Rn的梯度,但在本课程中,将只考虑向量x∈Rn的Hessian矩阵。这仅仅是为了方便起见(而事实上,没有计算需要求矩阵的Hessian矩阵),因为矩阵的Hessian矩阵必须表示为所有的偏导数∂2f(A)/(∂Aij∂Akℓ),而要表示为矩阵却相当麻烦。
4.3 二次函数或线性函数的梯度和Hessian矩阵
现在,让我们确定一些简单函数的梯度和Hessian矩阵。应当指出的是,这里给出的所有的梯度都是在CS229讲义给出的特殊情况。
当x∈Rn,对于已知向量b∈Rn,令f(X)= bT x。 得:
因此
由此不难看出,∇xbT x= b。这是与单变量微积分类似的情况,其中,∂/(∂x)aX =a。
现在考虑二次函数f(x)= xTAx ,A∈Sn。注意到:
求其偏导数,分别考虑包含Xk和xk2因子的项:
其中最后一个等式是因为A是对称的(完全可以假设,因为它是二次型)。注意,∇xf(x)的第k项只是A的第k行和x的内积。因此,∇xxTAx=2AX。同样,与单变量微积分类似,即∂/(∂x) ax2= 2aX。
最后,再看二次函数f(X)= xTAx的Hessian矩阵(显然,线性函数bT x的Hessian矩阵为零)。 在这种情况下,
因此,应当清楚的是∇x2xTAx=2A,这完全是可证明的(并再次类似于单变量的情况∂2/(∂x2) ax2 = 2a)。
总之:
∇xbT x = b
∇xxTAx = 2Ax ( A 为对称矩阵)
∇x2xTAx = 2A ( A 为对称矩阵)
4.4最小二乘法
这里将用最后一节得到的公式推导最小二乘方程。假设对矩阵A∈Rm×n(为简单起见,假定A是满秩)和向量b∈Rm ,使得b错误!未找到引用源。R(A)。在这种情况下,无法找到一个向量x∈Rn,使得Ax = b。退一步,我们找一个向量x∈Rn,使得Ax是尽可能接近b,即欧氏范数||Ax - b||22。
且知||x||22=xTx,有:
取对已有x的梯度,并使用上一节推出的性质
让最后一个表达式等于零,并求解X满足的标准方程
这正和我们课上推导的一样。
4.5行列式的梯度
现在考虑一种情况,求函数对矩阵的梯度,即对A∈Rn×n,求∇A| A |。回顾之前关于行列式的讨论:
因此:
根据伴随矩阵的性质,可立即得出:
现在,考虑函数f : Sn ++ → R, f(A) = log |A|,需要注意的是,一定要限制f的域是正定矩阵,因为这将确保| A | >0,这样log| A |是一个实数。在这种情况下,我们可以使用链式法则(很简单,只是单变量微积分的普通链式法则)得出:
那么,很显然:
此处,在最后一个表达式中去掉了转置符,因为A是对称的。注意当∂/(∂x) log x = 1/x时,和单值情况相似。
4.6最优化特征值
最后,通过直接分析特征值/特征向量,用矩阵微积分来解决一个优化问题。接下来,考虑等式约束优化问题:
对于一个对称矩阵A ∈ Sn,解决等式约束优化问题的标准方法是构造拉格朗日(一个包括等式约束的目标函数)。这种情况下的拉格朗日可由下式给出:
其中λ被称为与等式约束对应的拉格朗日乘子。对这问题可以找到一个x*的最佳点,让拉格朗日的梯度在x*上为零(这不是唯一的条件,但它是必需的)。 即:
注意,这其实是线性方程组Ax =λx。这表明,假设xT x = 1,使xT Ax最大化或(或最小化)的唯一的点正是A的特征向量。