![细说机器学习:从理论到实践](https://wfqqreader-1252317822.image.myqcloud.com/cover/454/52842454/b_52842454.jpg)
2.3 线性代数基础
高等数学也是线性代数和概率论的基础,本节将讲解机器学习中线性代数的常用知识,下一节将讲解机器学习中常用的概率论知识。公式矩阵中出现的横线和竖线表示省略号。
2.3.1 基本概念和符号
线性代数提供了一种紧凑地表示和操作线性方程组的方法。例如,以下方程组:
4x1-5x2=-13 -2x1+3x2=9
这是两个方程和两个变量,正如从高中代数中所知的,可以找到x1和x2的唯一解(除非方程以某种方式退化,例如第二个方程只是第一个方程的倍数,但在上面的情况下,实际上只有一个唯一解)。在矩阵表示法中,可以更紧凑地表达:
Ax=b
其中,
使用以下符号:
,表示A为由实数组成具有m行和n列的矩阵。
,表示具有n个元素的向量。通常,向量x将表示列向量,即具有n行和1列的矩阵。如果想要明确地表示行向量,即具有1行和n列的矩阵,通常写为xT(这里xT是x的转置)。
xi表示向量x的第i个元素,则:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P42_56876.jpg?sign=1739597409-TX62cAsUsB2xav7bFzoFdXkpl9nOAeqf-0-e30630f94dd6dc5a67e76a21ccc494bd)
使用符号aij(或Aij、Ai,j等)来表示第i行和第j列中的A的元素:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P42_56877.jpg?sign=1739597409-h9pddpcK2FZNtPkyCOl9JgBq8AcJT3Ds-0-4ae01516d21accd207d0d41ad0a7d3eb)
用aj或者A:,j表示矩阵A的第j列:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P43_56967.jpg?sign=1739597409-oeQd2eTAePPLeATc7r1IbMAsxxkCebOf-0-83ffd4b4f622805cdcf9b4872c77a357)
用或者
,表示矩阵A的第i行:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P43_56968.jpg?sign=1739597409-RlAw5bK1zatG5bl9oZUsmIktit2DQe0a-0-a92a184c7147be8eb49e5f7dcd5cb840)
在许多情况下,将矩阵视为列向量或行向量的集合非常重要且方便。通常,在向量而不是标量上操作在数学上(和概念上)更清晰。只要明确定义了符号,用于矩阵的列或行的表示方式并没有通用约定。
2.3.2 矩阵乘法
两个矩阵相乘,其中且
,则:
。其中,
。
注意 为了使矩阵乘积存在,A中的列数必须等于B中的行数。
有很多方法可以查看矩阵乘法,下面将从一些特殊情况开始介绍。
1.向量-向量乘法
给定两个向量,xTy通常称为向量内积或者点积,结果是一个实数。
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P43_57471.jpg?sign=1739597409-t3zCRL2Xn66M4YDxp71p03RXLdhny9rg-0-77562e160bf9fe04c137ef847cc10411)
注意 xTy=yTx始终成立。
给定向量,
(它的维度是否相同都没关系),
叫作向量外积,当(xyT)ij=xiyj的时候,它是一个矩阵。
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P44_57497.jpg?sign=1739597409-bIMKp4c0SMjGsV9JG2jZT0EiPr8BmBxm-0-031cb50a675bf33e7e0ebb8a0b3d10ca)
举一个外积如何使用的例子:让1∈Rn表示一个n维向量,其元素都等于1,此外,考虑矩阵A∈Rm×n,其列全部等于某个向量x∈Rm。使用外积可以紧凑地表示矩阵A:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P44_57498.jpg?sign=1739597409-24jwzNKh7mnvMLt2QT4PbKvCydQIu6ms-0-64ef22a922b1022b9b1c8ca403aa8f3c)
2.矩阵-向量乘法
给定矩阵,向量
,它们的积是一个向量y=Ax∈Rm。矩阵向量乘法有如下几种情况:
如果按行写A,那么可以表示Ax为:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P44_57507.jpg?sign=1739597409-FAvtJDhVpKWAxFjabRQaZksMsnqCnzrN-0-af9a5f717af9c1fc39007bc1b8d22369)
也就是说,第i个y是A的第i行和x的内积,即:。
同样,可以把A写成列的方式,即:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P44_57511.jpg?sign=1739597409-WTXzQiqRJcVuSEbLjuU3lpoEavj3LNbL-0-71e5afbc29c1a3b5387a38eae2ca6bbd)
也就是说,y是A的列的线性组合,其中线性组合的系数由x的元素给出。
到目前为止,一直是在右侧乘以列向量,但也可以在左侧乘以行向量。即yT=xTA表示,
,
。和以前一样,可以用两种可行的方式表达yT,这取决于是否根据行或列表达A。
第一种情况,把A用列表示:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P45_57522.jpg?sign=1739597409-6iZwny1pGU6rKwPla4jIr7WrWCE5XPze-0-d3c71cf032380e68f40728e4111d8b75)
这表明yT的第i个元素等于x和A的第i列的内积。
最后,根据行表示A,得到了向量-矩阵乘积的最终表示:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P45_57523.jpg?sign=1739597409-e1boxCsCRNv5NFqIdHenDjS8WMZPMwri-0-5460c788223d9d2cd5da7a6ee8604372)
所以看到yT是A的行的线性组合,其中线性组合的系数由x的元素给出。
3.矩阵-矩阵乘法
有了这些知识,现在来看4种不同的(形式不同,但结果是相同的)矩阵-矩阵乘法:也就是本节开头所定义的C=AB的乘法。
(1)将矩阵-矩阵乘法视为一组向量-向量乘积。从定义中可以得出:最明显的观点是C的(i,j)元素等于A的第i行和B的第j列的内积。公式如下:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P45_57524.jpg?sign=1739597409-Mo2rBWyIr0H2H0yhhdYUavSqSoK6G83E-0-9d3fdfa3eb38e2d0d72c4f39d2813372)
这里的,
,
,
,这里的
,
,
,
,所以它们可以计算内积。通常用行表示A,而用列表示B。
(2)用列表示A,用行表示B,这时AB是求外积的和。公式如下:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P45_57544.jpg?sign=1739597409-zYLguDfVmmpTODQrL0QThEgqU6mPXHIz-0-0efd3fac934ae8bb9f3e746de173852c)
也就是说,AB等于所有A的第i列和B的第i行的外积的和。因此,在这种情况下,,
,外积
的维度是m×p,与C的维度一致。
(3)将矩阵-矩阵乘法视为一组矩阵向量积。如果把B用列表示,可以将C的列视为A和B的列的矩阵向量积。公式如下:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P46_57552.jpg?sign=1739597409-syRqtTtvEZ26f8u0uBwCWMQ9pCZmNPM7-0-89ce4c3316e2ad45b4e086a128c8356c)
这里C的第i列由矩阵向量乘积给出,右边的向量为ci=Abi。
(4)用行表示A,C的行作为A和C行之间的矩阵向量积。公式如下:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P46_57553.jpg?sign=1739597409-PSFkE35lQHM3aVvRU81OYDZwy9RUnV9O-0-42642346554948d92b68dee7c4709654)
这里第i行的C由左边的向量的矩阵向量乘积给出:。
这些方法的直接优势在于它们允许用户在向量的级别/单位而不是标量上进行操作。为了完全理解线性代数而不会迷失在复杂的索引操作中,关键是要用尽可能多的概念进行操作。
除此之外,了解一些更高级别的矩阵乘法的基本属性是很有必要的:
(1)矩阵乘法结合律:(AB)C=A(BC)。
(2)矩阵乘法分配律:A(B+C)=AB+AC。
矩阵乘法通常不是可交换的,也就是说,通常AB≠BA。例如,假设,
,如果m和q不相等,则矩阵乘积BA甚至不存在。
如果不熟悉这些属性,可查阅相关资料花点时间验证它们。例如,为了检验矩阵乘法的相关性,假设,
,
。注意
,所以
。类似地,
,所以
。因此,所得矩阵的维度一致。
为了表明矩阵乘法是相关的,足以检查(AB)C的第(i,j)个元素是否等于A(BC)的第(i,j)个元素,可以使用矩阵乘法的定义直接验证这一点:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P46_57585.jpg?sign=1739597409-2H9BPcz5d0wW2uYRn9Oe6T3Y7u9dAYln-0-8b1dc6ccb6226c2604aa96dd84e323fc)
2.3.3 矩阵运算和性质
这里将介绍矩阵和向量的几种运算和属性。
1.单位矩阵和对角矩阵
对于单位矩阵,,它是一个方阵,对角线的元素是1,其余元素都是0:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P47_57590.jpg?sign=1739597409-dpHwQyvDnq89kvBC7eH3vV70nQFL8IU2-0-4fce5f19adb37381ab6f049f09e756f7)
对于所有,有:
AI=A=IA
注意 在某种意义上,单位矩阵的表示法是不明确的,因为它没有指定I的维数。通常,I的维数是从上下文推断出来的,以便使矩阵乘法成为可能。例如,在上面的等式中,AI=A中的I是n×n矩阵,而A=IA中的I是m×m矩阵。
对角矩阵是一种这样的矩阵:对角线之外的元素全为0。对角阵通常表示为:D=diag(d1,d2,…,dn),其中:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P47_57598.jpg?sign=1739597409-DpslktjTWUXym7DqbgE9O3BUntjzrW6p-0-03563dd0e2452423da9469c002231933)
显然,单位矩阵I=diag(1,1,…,1)。
2.转置
矩阵的转置是指翻转矩阵的行和列。给定一个矩阵,它的转置为n×m的矩阵
,其中的元素为:
(AT)ij=Aji
事实上,在描述行向量时已经使用了转置,因为列向量的转置自然是行向量。转置的以下属性很容易验证:
(1)(AT)T=A。
(2)(AB)T=BTAT。
(3)(A+B)T=AT+BT。
3.对称矩阵
如果A=AT,则矩阵是对称矩阵。如果A=-AT,则它是反对称的。很容易证明,对于任何矩阵
,矩阵A+AT是对称的,矩阵A-AT是反对称的。由此得出,任何方矩阵
可以表示为对称矩阵和反对称矩阵的和,所以:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P48_57616.jpg?sign=1739597409-AvFtY2yiadu4ErregZFlkeItwxnYMzu1-0-3232411431b96a114bb420b9c160f1be)
上面的公式右边的第一个矩阵是对称矩阵,而第二个矩阵是反对称矩阵。事实证明,对称矩阵在实践中用得很多,它们有很多很好的属性。
通常将大小为n的所有对称矩阵的集合表示为,因此
意味着A是对称的n×n矩阵。
4.矩阵的迹
方矩阵的迹表示为tr(A)(或者只是tr A),是矩阵中对角元素的总和,表示为:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P48_57617.jpg?sign=1739597409-0VQ3R88sUGcIsHX637dJdELZun7HPdyJ-0-be7197bdca08fc1623091c1b8c0c8b4c)
迹具有以下属性:
(1)若矩阵,则:tr A=tr AT。
(2)若矩阵,则:tr(A+B)=tr A+tr B。
(3)若矩阵,
,则:tr(tA)=t tr A。
(4)若矩阵A、B、AB为方阵,则:tr AB=tr BA。
(5)若矩阵A、B、C、ABC为方阵,则:tr ABC=tr BCA=tr CAB。同理,更多矩阵的积也具有这个性质。
作为如何证明这些属性的示例,将考虑上面给出的第四个属性。假设,
(因此
是方阵)。观察到
也是一个方阵,因此对它们进行迹的运算是有意义的。要证明tr AB=tr BA,请注意:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P48_57651.jpg?sign=1739597409-BT18NukO0iG9StrVlEG7pLDgHUBa1xue-0-1cd708da184c1a119570b402f4173c72)
这里,、
和tr BA使用迹运算符和矩阵乘法的定义,重点在第4个等式,使用标量乘法的可交换性来反转每个乘积中的项的顺序,以及标量加法的可交换性和相关性,以便重新排列求和的顺序。
5.范数
向量的范数||x||是非正式度量的向量的“长度”。例如,有常用的欧几里得或范数:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P49_57655.jpg?sign=1739597409-c0iFhcm9sqQULzTUI9ZBGRlbNGXgjWYq-0-7d5d02fcc138a89141eeacb03c13f9ba)
注意 。
更正式地,范数是满足4个属性的函数:
(1)对于所有,f(x)≥0(非负)。
(2)当且仅当x=0时,f(x)=0(明确性)。
(3)对于所有,
,f(tx)=|t|f(x)(正齐次性)。
(4)对于所有,f(x+y)≤f(x)+f(y)(三角不等式)。
其他范数的例子是范数:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P49_57675.jpg?sign=1739597409-B2oxJpBD3UcEj2rS8X9GmnxEJHb7dyI8-0-2f02eb925e57b7045f129020139d3317)
和范数:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P49_57678.jpg?sign=1739597409-InqKDzhNPYWooEcbq9hVjWgzQB3qBJjR-0-35eeadf2ddbe47520aa0112937b7c1b4)
事实上,到目前为止所提出的3个范数都是范数族的例子,它们由实数p≥1参数化,并定义为:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P49_57684.jpg?sign=1739597409-rwXmylfF96Ezf6DR4MrilI4no7GhZVz3-0-7b71f48a74474231a214ff056ede1690)
也可以为矩阵定义范数,例如弗罗贝尼乌斯(Frobenius)范数:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P49_57685.jpg?sign=1739597409-rpkqMb907h7gFZU7L9ci08e3bp4zCkIJ-0-83e06256b97f1a8c77e8e918a5d8290b)
另外,还有许多其他范数,这里不再给出。
6.特征值和特征向量
给定一个方阵,认为在以下条件下,
是A的特征值,
是相应的特征向量:
Ax=λx,x≠0
直观地说,这个定义意味着将A乘以向量x会得到一个新的向量,该向量指向与x相同的方向,但按系数λ缩放。
值得注意的是,对于任何特征向量和标量
,A(cx)=cAx=cλx=λ(cx),cx也是一个特征向量。因此,当讨论与λ相关的特征向量时,通常假设特征向量被标准化为长度为1(这仍然会造成一些歧义,因为x和-x都是特征向量,但必须接受这一点)。
可以重写上面的等式来说明(λ,x)是A的特征值和特征向量的组合:
(λI-A)x=0,x≠0
但是(λI-A)x=0只有当(λI-A)有一个非空零空间,同时(λI-A)是奇异的,x才具有非零解,即:
|(λI-A)|=0
现在,可以使用行列式先前的定义将表达式|(λI-A)|扩展为λ中的(非常大的)多项式,其中,λ的度为n。它通常被称为矩阵A的特征多项式。
然后找到这个特征多项式的n个(可能是复数)根,并用λ1,…,λn表示。这些都是矩阵A的特征值,但注意它们可能不明显。
为了找到特征值λi对应的特征向量,只需解线性方程(λI-A)x=0,因为(λI-A)是奇异的,所以保证有一个非零解(但也可能有多个或无穷多个解)。
注意 这不是实际用于数值计算特征值和特征向量的方法(记住行列式的完全展开式有n!项),这是一个数学上的争议。
以下是特征值和特征向量的属性(所有假设在具有特征值λ1,…,λn的前提下):
A的迹等于其特征值之和:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P50_57711.jpg?sign=1739597409-DhXpbqSIDzRlqgJn8evXj2Kj7sZe8sqc-0-e7f1ec952fdd71a693ffc778d04b82bc)
A的行列式等于其特征值的乘积:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P50_57712.jpg?sign=1739597409-23Zs2srbWLlybMsg74cmJNFJKYi6vstp-0-b4800b1945610cb93d1f682a81625858)
A的秩等于A的非零特征值的个数。
假设A非奇异,其特征值为λ,特征向量为x。那么1/λ是具有相关特征向量x的A-1的特征值,即A-1x=(1/λ)x(要证明这一点,取特征向量方程Ax=λx,两边都左乘A-1)。
对角阵的特征值d=diag(d1,…,dn),实际上就是对角元素d1,…,dn。
7.对称矩阵的特征值和特征向量
通常情况下,一般的方阵的特征值和特征向量的结构可以很细微地表示出来。值得庆幸的是,在机器学习的大多数场景下,处理对称实矩阵就足够了,其处理的对称实矩阵的特征值和特征向量具有显著的特性。
此处,假设A是实对称矩阵,具有以下属性:
(1)A的所有特征值都是实数,用λ1,…,λn表示。
(2)存在一组特征向量u1,…,un,对于所有i,ui是具有特征值λi和b的特征向量。u1,…,un是单位向量并且彼此正交。
设U是包含ui作为列的正交矩阵:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P51_57720.jpg?sign=1739597409-buNKDVdHKbugXRWgKPnOEsPNjT8qaAjH-0-2f2c5cfb6676e7c469bbd8250f14bd39)
设∧=diag(λ1,…,λn)是包含λ1,…,λn作为对角线上的元素的对角矩阵。可以验证:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P51_57721.jpg?sign=1739597409-WFYFVlGTYWkSHN5O2P6fe1Tp9LeuGav5-0-668a0ec406fb30c7fc6beb1194248ed9)
考虑到正交矩阵U满足TUU=I,利用上面的方程,得到:
A=AUUT=U∧UT
这种A的新的表示形式为U∧UT,通常称为矩阵A的对角化。术语对角化是这样来的:通过这种表示,通常可以有效地将对称矩阵A视为对角矩阵,这更容易理解。
2.3.4 矩阵微积分
机器学习中将广泛用到矩阵微积分的知识,本节将介绍矩阵微积分的一些基本定义。
1.梯度
假设是将维度为m×n的矩阵
作为输入并返回实数值的函数,然后f的梯度(相对于
)是偏导数矩阵,定义如下:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P52_57736.jpg?sign=1739597409-CkFiv7Sy8OJ0Pt9pYc6VMfaBW8ZipLap-0-e5c5475607c6350d833c6ce9a7ddb186)
即,对于m×n矩阵:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P52_57737.jpg?sign=1739597409-FCGO0NfDWlWl8VgpTVIs0LopxeFuLpKC-0-5b0888b3e60a85705b019cc60243c60c)
请注意,▽Af(A)的维度始终与A的维度相同。特殊情况下,如果A只是向量,则
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P52_57741.jpg?sign=1739597409-sCbrN0R3LCUqXZdDhhk1DG7143VNbWZt-0-1a4a405ae8c5e06ae546cf208ab5a850)
重要的是,只有当函数是实值时,即函数返回标量值,才定义函数的梯度。例如,相对于x,不能取Ax的梯度,因为这个量是向量值。它直接从偏导数的等价性质得出:
▽x(f(x)+g(x))=▽xf(x)+▽xg(x)。
对于,▽x(tf(x))=t▽xf(x)。
原则上,梯度是偏导数对多变量函数的自然延伸。然而,在实践中,由于符号的原因,使用梯度有时是很困难的。例如,假设是一个固定系数矩阵,
是一个固定系数向量。设
为f(z)=zTz定义的函数,因此▽zf(z)=2z。但现在考虑表达式:
▽f(Ax)
该表达式的解释至少有两种可能:在第一种解释中,回想起▽zf(z)=2z。在这里,将▽f(Ax)解释为评估点Ax处的梯度,因此:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P52_57761.jpg?sign=1739597409-yMxxY1hgW4L3igocP59xArtkItYjNJq8-0-981a5fb1785f25bb22c1417298f4f392)
在第二种解释中,将数量f(Ax)视为输入变量x的函数。更正式地说,设g(x)=f(Ax)。在这个解释中:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P53_57764.jpg?sign=1739597409-OPQMP0e7QZO8rTSEX0LTyvGTuH0x5WYi-0-22e1e2a0c12176696831ab683fb32523)
在这里,可以看到这两种解释确实不同。一种解释产生m维向量作为结果,而另一种解释产生n维向量作为结果。
这里,关键是要明确需要区分的变量。在第一种解释下,将函数f与其参数z进行微分,然后替换参数Ax0。在第二种解释下,将复合函数g(x)=f(Ax)直接与x进行微分。
将第一种解释表示为▽zf(Ax),第二种解释表示为▽xf(Ax)。
2.黑塞矩阵
假设是一个函数,它接收
中的向量并返回实数。那么关于x的黑塞(Hessian Matrix)矩阵(又译作海森矩阵),写作:
,或者简单地说,H是n×n矩阵的偏导数:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P53_57773.jpg?sign=1739597409-5ixUD27U3daZCBwl6DdVTj54H0VeWPFn-0-525c3509d8b82f2eac0fdcf977ca69e1)
换句话说,,其:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P53_57774.jpg?sign=1739597409-By1i3TC2LyY8Bd6uvxbc1OxPnltJtUNJ-0-150122d59136c399d5cafd7f90401dc9)
注意:黑塞矩阵通常是对称矩阵:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P53_57775.jpg?sign=1739597409-eYMudysR7sWFtiThg3JGbRn9ES9zFReK-0-aad874a25b7e4c5130f9df99f1b7f0e0)
与梯度相似,只有当f(x)为实值时才定义黑塞矩阵。
很自然地认为梯度与向量函数的一阶导数相似,而黑塞矩阵与向量函数的二阶导数相似(使用的符号也暗示了这种关系)。这种直觉通常是正确的,但需要记住以下几个注意事项。
首先,对于一个变量的实值函数,它的基本定义:二阶导数是一阶导数的导数,即:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P53_57780.jpg?sign=1739597409-00U1lDKNG9n0dEoFQDYUbYY4sdgspScS-0-cb6e4928612e5a841b5b744d79904b07)
然而,对于向量的函数,函数的梯度是一个向量,不能取向量的梯度,即:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P54_57783.jpg?sign=1739597409-D2dvkSCo81rbqcCU4vIS0LPXqXIY1XRg-0-4ce32de98d98f789f3f9d190e675ac2e)
上述表达式没有实际意义。因此,黑塞矩阵不是梯度的梯度。然而,下面这种情况却几乎是正确的:如果看一下梯度(▽xf(x))i=∂f(x)/∂xi的第i个元素,并取关于x的梯度得到:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P54_57784.jpg?sign=1739597409-ywluISqhnDkMlZ5ZIinlkVHGWrWBMXn4-0-d9120c94348c8600a55231150c1cee34)
这是黑塞矩阵第i行(列),所以:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P54_57787.jpg?sign=1739597409-o3swZiJpnZA2v2k39aVtt1V3CkUvvdDX-0-115f13e6bcb60c7961be760eac1fe7c9)
可以说,由于,因此这实际上是取▽xf(x)的每个元素的梯度,而不是整个向量的梯度。
注意,虽然可以对矩阵取梯度,但本书只考虑对向量
取黑塞矩阵。这会方便很多(事实上,所做的任何计算都不要求找到关于矩阵的黑森方程),因为关于矩阵的黑塞方程必须对矩阵所有元素求偏导数
,将其表示为矩阵相当麻烦。
3.二次函数和线性函数的梯度和黑塞矩阵
现在尝试确定几个简单函数的梯度和黑塞矩阵。
对于,设f(x)=bTx的某些已知向量
,则:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P54_57810.jpg?sign=1739597409-vSCI5qE3l7HKH1fNdYZa1djclucM28G1-0-742fd657d56ec3f23db1fe58af04fed1)
所以:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P55_57813.jpg?sign=1739597409-aisABzHI2qKwMKaReghrWRE8tbCZ6yHH-0-61bb57d470175bf247f68d4520b6c237)
由此可以很容易地看出▽xbTx=b。这应该与单变量微积分中的类似情况进行比较,其中∂/(∂x)ax=a。
现在考虑的二次函数f(x)=xTAx。记住这一点:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P55_57814.jpg?sign=1739597409-92ZIaNg1Java2J7AQ21mi17PaXWeSCpI-0-1e77c6f5a436191b7f9b426ee10390ae)
为了取偏导数,将分别考虑包括xk和因子的项:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P55_57815.jpg?sign=1739597409-9so8a0LjM52gq1nkvsftHvw7bs8v4PI9-0-95ed6ba3bedb9e468fd859d60fe6e34c)
最后一个等式,是因为A是对称的(可以安全地假设,因为它以二次形式出现)。注意,▽xf(x)的第k个元素是A和x的第k行的内积。因此,▽xxTAx=2Ax。同样,应该提醒单变量微积分中的类似事实,即∂/(∂x)ax2=2ax。
最后,让我们来看二次函数f(x)=xTAx的黑塞矩阵(显然,线性函数bTx的黑塞矩阵为零)。在这种情况下:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P55_57825.jpg?sign=1739597409-pXxrpRdS1Eby6eVO6JTW9PNG8NcGS7By-0-37a573f1ff3eb77c3b2d65a4b6a042fa)
因此,应该很清楚,这应该是完全可以理解的(同样类似于∂2/(∂x2)ax2=2a的单变量事实)。
简要概括起来:
▽xbTx=b。
▽xxTAx=2Ax(如果A是对称矩阵)。
(如果A是对称矩阵)。
4.最小二乘法
下面由前面得到的方程来推导最小二乘方程。假设得到矩阵(为了简单起见,假设A是满秩的)和向量
,从而使
。
在这种情况下,将无法找到向量,由于Ax=b,因此想要找到一个向量x,使得Ax尽可能接近b,用欧几里得范数的平方
来衡量。
使用公式可以得到:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P56_57854.jpg?sign=1739597409-PGr2XcLcJu4ymBcQp8FVVqeRH1tG04Nv-0-de36640c9d4f29beea69fcc676ad953d)
根据x的梯度及梯度的性质:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P56_57856.jpg?sign=1739597409-eFPByMZAoFie5NlHGkByQEJ9afBircej-0-0ade87c5f6ca25eae11d6c937c12e6ef)
将最后一个表达式设置为零,然后解出x,得到正规方程:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P56_57858.jpg?sign=1739597409-mGPwzDfIQVpYJMjxG4g008AlBkiJkZDt-0-9e7ed160db02b4a162f27c138a608409)
5.行列式的梯度
现在考虑一种情况,找到一个函数相对于矩阵的梯度,也就是说,对于,要找到▽A|A|。对行列式:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P56_57862.jpg?sign=1739597409-rLZPwVqhbEbowUBWrOOBAUDyoFu8A1Om-0-dd36ea0e823c0f8f733d940e3fc34558)
其中,矩阵是A删除i行和j列的矩阵。
所以:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P56_57866.jpg?sign=1739597409-MGnmBsdE1x7PRL5GQBoos9Rt3BaixHxO-0-3a8920a44b47934ce8e2bad82d79616b)
由此可知,该式可以直接从伴随矩阵的性质得出:
▽A|A|=(adj(A))T=|A|A-T
现在来考虑函数,f(A)=log|A|。注意,必须将f的域限制为正定矩阵,因为这确保了|A|>0,因此|A|的对数是实数。在这种情况下,可以使用链式法则(即单变量演算中的普通链式法则)来验证:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P57_57872.jpg?sign=1739597409-ppvYWE2unpyQRfyWbMUTwKamv1YZVNZO-0-b0d018444af0ef1719348b178253a197)
由此可以明显看出:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P57_57873.jpg?sign=1739597409-wb3LmCGBJhby06hkHhKUYS8gwUzvjofh-0-6efcbc11a210f6a4793683560d20be5f)
可以在最后一个表达式中删除转置,因为A是对称的。注意与单值情况的相似性,其中∂/(∂x)log x=1/x。
6.特征值优化
最后,使用矩阵特征值/特征向量分析方式可以求解优化问题。考虑以下等式约束优化问题:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P57_57875.jpg?sign=1739597409-LDmEruhLNOQr9Gok79BUeflM7JjgEvSm-0-b57933163bcaf60645128d113e9fe874)
对于对称矩阵,求解等式约束优化问题的标准方法是采用拉格朗日形式,一种包含等式约束的目标函数,在这种情况下,拉格朗日函数可由以下公式给出:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P57_57876.jpg?sign=1739597409-ULeWIbaQrOWYHv5BAvPqKoZj1ha0RPyJ-0-7e53040bfa065daa528a15fc1f8efadd)
其中,λ被称为与等式约束关联的拉格朗日乘子。可以确定,要使x*成为问题的最佳点,拉格朗日的梯度必须在x*处为零(这不是唯一的条件,但它是必需的)。也就是说:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P57_57881.jpg?sign=1739597409-D1ZVo9iv6XKdmnBM7RIf0uRWijqi39su-0-9453931c0af0b31cd5e24c896ee11398)
请注意,这只是线性方程Ax=λx。这表明假设xTx=1,可能最大化(或最小化)xTAx的唯一点是A的特征向量。