![细说机器学习:从理论到实践](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=1739593046-Vydf55vnlCo2zJds5JXqxAvZEWW4gKyB-0-064c0001031295d6af48fc2f7998553e)
使用符号aij(或Aij、Ai,j等)来表示第i行和第j列中的A的元素:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P42_56877.jpg?sign=1739593046-1jLMSMCcl8iwBW2U6Tr3EpAWOihmzHBT-0-7d4cdeb32ba7f65b8136e11bbce6fb5a)
用aj或者A:,j表示矩阵A的第j列:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P43_56967.jpg?sign=1739593046-1kbmHedc7MPSC1SPJhMsO9WteTxA70pt-0-182ad9a6e95778d4db4c6b4ed689f975)
用或者
,表示矩阵A的第i行:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P43_56968.jpg?sign=1739593046-LCzrAJWEgrspHWnDn1VzvpOWcYsjGXLz-0-b52ef8afe8d4fa8407a457097b8d8e7f)
在许多情况下,将矩阵视为列向量或行向量的集合非常重要且方便。通常,在向量而不是标量上操作在数学上(和概念上)更清晰。只要明确定义了符号,用于矩阵的列或行的表示方式并没有通用约定。
2.3.2 矩阵乘法
两个矩阵相乘,其中且
,则:
。其中,
。
注意 为了使矩阵乘积存在,A中的列数必须等于B中的行数。
有很多方法可以查看矩阵乘法,下面将从一些特殊情况开始介绍。
1.向量-向量乘法
给定两个向量,xTy通常称为向量内积或者点积,结果是一个实数。
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P43_57471.jpg?sign=1739593046-Kq0hn574E5hgD1mxHBXRwjYDm7RjL7HZ-0-bdcd7c02e1f35209d2764c4dc410ee48)
注意 xTy=yTx始终成立。
给定向量,
(它的维度是否相同都没关系),
叫作向量外积,当(xyT)ij=xiyj的时候,它是一个矩阵。
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P44_57497.jpg?sign=1739593046-LEzNrbwbT5y8Bm0W4AHM2b95d7tXjmOL-0-6961d3de7c4fdd0a2f32a393a827fc52)
举一个外积如何使用的例子:让1∈Rn表示一个n维向量,其元素都等于1,此外,考虑矩阵A∈Rm×n,其列全部等于某个向量x∈Rm。使用外积可以紧凑地表示矩阵A:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P44_57498.jpg?sign=1739593046-nAZ0aOZt4n63GLUvS18friET3YUHvMLc-0-35b329ad0978f1e0e5b71f2bf9bc11f8)
2.矩阵-向量乘法
给定矩阵,向量
,它们的积是一个向量y=Ax∈Rm。矩阵向量乘法有如下几种情况:
如果按行写A,那么可以表示Ax为:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P44_57507.jpg?sign=1739593046-4OzhpVQhplHAkITGJJGgGFfoPVIowcDl-0-c326ffc799e15eb9a96bb3de832c3974)
也就是说,第i个y是A的第i行和x的内积,即:。
同样,可以把A写成列的方式,即:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P44_57511.jpg?sign=1739593046-ZOydNKzOD3CGaCYJNwoRZIhKXyxXr3Pi-0-8dcdc2bc8c6c8749e578eaa1e2ddd821)
也就是说,y是A的列的线性组合,其中线性组合的系数由x的元素给出。
到目前为止,一直是在右侧乘以列向量,但也可以在左侧乘以行向量。即yT=xTA表示,
,
。和以前一样,可以用两种可行的方式表达yT,这取决于是否根据行或列表达A。
第一种情况,把A用列表示:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P45_57522.jpg?sign=1739593046-EZTx4awoAicZ0mNbOpy9BK8NHldhZ2hu-0-38f5f27f0f8192ff0670f6ed6049065d)
这表明yT的第i个元素等于x和A的第i列的内积。
最后,根据行表示A,得到了向量-矩阵乘积的最终表示:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P45_57523.jpg?sign=1739593046-LiKLPSh70ygMhFcMcyuxIYb3VR3XT8yp-0-6a355f4ea68a39e253f7d51d8ae83263)
所以看到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=1739593046-U5jC8kG2rf1Wf1mDtax0WmbIRz7f1FFC-0-56a205262785b2701ba3e6bc980a4191)
这里的,
,
,
,这里的
,
,
,
,所以它们可以计算内积。通常用行表示A,而用列表示B。
(2)用列表示A,用行表示B,这时AB是求外积的和。公式如下:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P45_57544.jpg?sign=1739593046-KTVawYnKrDvEwlk4pHy1HQYx0qoMAtCR-0-08a43418d53206ca92c5d28699feef25)
也就是说,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=1739593046-dEWwDQ3w8gCu5bCySNMaHtn1rFYdzeR3-0-fa3757eea5239533ab753e2fa74d23e6)
这里C的第i列由矩阵向量乘积给出,右边的向量为ci=Abi。
(4)用行表示A,C的行作为A和C行之间的矩阵向量积。公式如下:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P46_57553.jpg?sign=1739593046-wKFY5YTFSiPHhA5yMhFduzw3mp7As8Pf-0-78bac285745c47ce39cc485c206c7b3a)
这里第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=1739593046-nDM8YQ9S5NAzZ8euB2FwipYyYFxMVVDP-0-8db6db7c2e6adc92f8f5128b06972a22)
2.3.3 矩阵运算和性质
这里将介绍矩阵和向量的几种运算和属性。
1.单位矩阵和对角矩阵
对于单位矩阵,,它是一个方阵,对角线的元素是1,其余元素都是0:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P47_57590.jpg?sign=1739593046-o2tXWA8YtfiZAHd2F0bvNmLxiyurGPIJ-0-281c6f25598f7950eea399fbceb6a78f)
对于所有,有:
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=1739593046-UNbP9hy1l62Q19zwgjXQNGVJaePr3fXo-0-bafee5cb8cec69d1cbbc34b4c5c6528f)
显然,单位矩阵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=1739593046-GhsUwyOox5aH4C7XnbxyBK13MEEdPKYh-0-3a744bac362ac56e0d01549c18c8710f)
上面的公式右边的第一个矩阵是对称矩阵,而第二个矩阵是反对称矩阵。事实证明,对称矩阵在实践中用得很多,它们有很多很好的属性。
通常将大小为n的所有对称矩阵的集合表示为,因此
意味着A是对称的n×n矩阵。
4.矩阵的迹
方矩阵的迹表示为tr(A)(或者只是tr A),是矩阵中对角元素的总和,表示为:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P48_57617.jpg?sign=1739593046-ulS4Zu7vepwF3VkjR7fK1rEsvS2VbbbD-0-4a4ea19b6fdb3783a9e652cd461ca4b7)
迹具有以下属性:
(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=1739593046-hMbosyR6td8iOLGvPHNtalXlIfPNDZop-0-2f81be801d291117568233089c244838)
这里,、
和tr BA使用迹运算符和矩阵乘法的定义,重点在第4个等式,使用标量乘法的可交换性来反转每个乘积中的项的顺序,以及标量加法的可交换性和相关性,以便重新排列求和的顺序。
5.范数
向量的范数||x||是非正式度量的向量的“长度”。例如,有常用的欧几里得或范数:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P49_57655.jpg?sign=1739593046-j3cXCyYusoTXw2n3ZH55IVQcKUnCPqx1-0-46db6b1d0f7e5e179528ccbb814a47a1)
注意 。
更正式地,范数是满足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=1739593046-UDRZA7r0KAnv97ZDq75m6Nyj79N3zWpT-0-f82f7f2abe846b0b10f2b1e863ab9917)
和范数:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P49_57678.jpg?sign=1739593046-0Zx3haPUBMp1JcLjmTChwW4nYntDyswZ-0-f4648a0431085a09710eb63c0bcc069a)
事实上,到目前为止所提出的3个范数都是范数族的例子,它们由实数p≥1参数化,并定义为:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P49_57684.jpg?sign=1739593046-RsF8mwkGDvgFuhstZX0xRTLVCIMv3NDW-0-88d9ebf84150e0564969bf3a586187bc)
也可以为矩阵定义范数,例如弗罗贝尼乌斯(Frobenius)范数:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P49_57685.jpg?sign=1739593046-zF0iN8cysPn41lkzwwmyxXJN6i43Pf1h-0-b973f64c97117ab974475806f32603f4)
另外,还有许多其他范数,这里不再给出。
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=1739593046-4qIstqbF1IPP2PXLaNjtQ7vP1rTzeaWQ-0-de1faa93cad533f1b23657e6a105967b)
A的行列式等于其特征值的乘积:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P50_57712.jpg?sign=1739593046-dQRDJhpageTidkMaqVGQiY3tsyFpm7Tc-0-4dff0e84af090d2e8fe93a2b74dd2e24)
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=1739593046-Lx5kCbzBcUg8wI8oWZOkDvjZ9aIVYg3S-0-54d4bfc9e4fbed6b59cac745294c2cd9)
设∧=diag(λ1,…,λn)是包含λ1,…,λn作为对角线上的元素的对角矩阵。可以验证:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P51_57721.jpg?sign=1739593046-UbYdYDjgb4xCHkMjUJfD8aH3DdS6WFsi-0-31bd8fe9c4214034b0eab35f027f3303)
考虑到正交矩阵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=1739593046-BqQ5MIpR9fGfesYjuxMCHuhkW0Qmh13C-0-a49503e652f4e99d94e5a3a0fd4924cd)
即,对于m×n矩阵:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P52_57737.jpg?sign=1739593046-gA98WfKGy8naQhXqynUVg1vMAmjJLdZY-0-483a98c45adc5aa226f3ed0824357141)
请注意,▽Af(A)的维度始终与A的维度相同。特殊情况下,如果A只是向量,则
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P52_57741.jpg?sign=1739593046-Z1ctc9eHPXKdQ7FrAq4SMgruhdXeYlkb-0-9553103a69fb4ead35ff444e42f000b0)
重要的是,只有当函数是实值时,即函数返回标量值,才定义函数的梯度。例如,相对于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=1739593046-lIxAK2BNFknL6uKvL7ESh9mXconEKz5h-0-41a9b89826849462c4cf643a3b1fe61c)
在第二种解释中,将数量f(Ax)视为输入变量x的函数。更正式地说,设g(x)=f(Ax)。在这个解释中:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P53_57764.jpg?sign=1739593046-WtSFgV5C8gVz5QvxSvwiyxx4CHHP8LBj-0-64ea963bd020a722233c0ad212776c79)
在这里,可以看到这两种解释确实不同。一种解释产生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=1739593046-RfU0jlxlAFE4xy0Do143DXwRIrHIY2ax-0-f60eb75f9e9ebc1cb77ae4f6067ddcb5)
换句话说,,其:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P53_57774.jpg?sign=1739593046-nIxgZ96kOKT9Up5O1gpvqOteCOZhXhAV-0-f41f65ea19c011640d3b36aadee2e351)
注意:黑塞矩阵通常是对称矩阵:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P53_57775.jpg?sign=1739593046-ZyzvMTtj1sg62MegK007TIuqeEaIinwG-0-be5a11b0e7d7921b0945864ff61383e1)
与梯度相似,只有当f(x)为实值时才定义黑塞矩阵。
很自然地认为梯度与向量函数的一阶导数相似,而黑塞矩阵与向量函数的二阶导数相似(使用的符号也暗示了这种关系)。这种直觉通常是正确的,但需要记住以下几个注意事项。
首先,对于一个变量的实值函数,它的基本定义:二阶导数是一阶导数的导数,即:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P53_57780.jpg?sign=1739593046-iEILcE3A6P4FUAV3uUjesu0XOWM3sjAF-0-b2c7c6ea4a179fdeaf1a442730c01f86)
然而,对于向量的函数,函数的梯度是一个向量,不能取向量的梯度,即:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P54_57783.jpg?sign=1739593046-X3UndzuL1gI3iLESuDkCHZ1OJ37vVH6o-0-d11b59ea73b13881cf432f2d99047179)
上述表达式没有实际意义。因此,黑塞矩阵不是梯度的梯度。然而,下面这种情况却几乎是正确的:如果看一下梯度(▽xf(x))i=∂f(x)/∂xi的第i个元素,并取关于x的梯度得到:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P54_57784.jpg?sign=1739593046-QCnTxy3N1rfGl8O2p3AVABiVByqeEWBI-0-238c3fcfa74829c52b7f8c0430c219cf)
这是黑塞矩阵第i行(列),所以:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P54_57787.jpg?sign=1739593046-p1Fw1FmFTzkumkf9kznCzFB7wR9bASaz-0-cc5346e908a41ad36a00c78fb8e0b33d)
可以说,由于,因此这实际上是取▽xf(x)的每个元素的梯度,而不是整个向量的梯度。
注意,虽然可以对矩阵取梯度,但本书只考虑对向量
取黑塞矩阵。这会方便很多(事实上,所做的任何计算都不要求找到关于矩阵的黑森方程),因为关于矩阵的黑塞方程必须对矩阵所有元素求偏导数
,将其表示为矩阵相当麻烦。
3.二次函数和线性函数的梯度和黑塞矩阵
现在尝试确定几个简单函数的梯度和黑塞矩阵。
对于,设f(x)=bTx的某些已知向量
,则:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P54_57810.jpg?sign=1739593046-p7rPtGVZOcBKIimnilTdQ8zfekttL3rZ-0-6e9d4977cac6a14a2ac89a0350dba95d)
所以:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P55_57813.jpg?sign=1739593046-qxh3aIiIm9gq2O7zrWLWKpeAc5p3vxoX-0-d2005297d2517984a1816e99bf9201f1)
由此可以很容易地看出▽xbTx=b。这应该与单变量微积分中的类似情况进行比较,其中∂/(∂x)ax=a。
现在考虑的二次函数f(x)=xTAx。记住这一点:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P55_57814.jpg?sign=1739593046-fze3MTm7QA3Vrl609xVlNN6xCfgAsJcv-0-1c94867273e365a25fe0bbc84701cc98)
为了取偏导数,将分别考虑包括xk和因子的项:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P55_57815.jpg?sign=1739593046-TYLBGeHXfn8nk41gjCJMzWLWa73oscym-0-17eee55b08d2d220440756e8a43899e0)
最后一个等式,是因为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=1739593046-xvRA19kJxZeyaey8zAN1cfBSLDxDClhu-0-dd36cb14f64df79dc5a5380db42f5907)
因此,应该很清楚,这应该是完全可以理解的(同样类似于∂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=1739593046-t1xCPigxvBwlNB3cYTNLCWMSeBuOjegd-0-687d30800d7c7330eef393d6968e2d40)
根据x的梯度及梯度的性质:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P56_57856.jpg?sign=1739593046-U4DOjgVbteMvqleETjA9u0TCzkXTVvrA-0-d46f19f09f8a0a80d9bb63a022588dc5)
将最后一个表达式设置为零,然后解出x,得到正规方程:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P56_57858.jpg?sign=1739593046-mKUsWAZLPNzNMpbNaJd4vVzmNHaQgyCv-0-2624ebf5bb9793354ea78c2b264ae0c7)
5.行列式的梯度
现在考虑一种情况,找到一个函数相对于矩阵的梯度,也就是说,对于,要找到▽A|A|。对行列式:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P56_57862.jpg?sign=1739593046-dYj5EdpLx7Ui90M1RHTYPjhM0XPR1vHs-0-503368b40f47944cf40243ec4d90461e)
其中,矩阵是A删除i行和j列的矩阵。
所以:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P56_57866.jpg?sign=1739593046-1bnDqYNxxx97DqqXgBt6YugxGjakFoEA-0-5e0e2b0495bef3c42f9efa1429999bc5)
由此可知,该式可以直接从伴随矩阵的性质得出:
▽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=1739593046-dqi3Nqbdcje1OAhxumetLbxqpXx4wqQD-0-646b0df4941a1b03178925e65abaa62a)
由此可以明显看出:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P57_57873.jpg?sign=1739593046-JKG17GdIAjwEMSOgXD74hF849ScnPNID-0-e5e9bd3dfb8e41f9de7aa399dc4e2df3)
可以在最后一个表达式中删除转置,因为A是对称的。注意与单值情况的相似性,其中∂/(∂x)log x=1/x。
6.特征值优化
最后,使用矩阵特征值/特征向量分析方式可以求解优化问题。考虑以下等式约束优化问题:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P57_57875.jpg?sign=1739593046-gCSAY8sBfiO49xnAvWI3Ww5qkGgxKM3t-0-9c2e88369fff25e13c03b0476eddbe46)
对于对称矩阵,求解等式约束优化问题的标准方法是采用拉格朗日形式,一种包含等式约束的目标函数,在这种情况下,拉格朗日函数可由以下公式给出:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P57_57876.jpg?sign=1739593046-ldcFtIjuHFaNkbd4cYIY7slRqktni65J-0-fc1428f6f03f3367a06e9724e448a680)
其中,λ被称为与等式约束关联的拉格朗日乘子。可以确定,要使x*成为问题的最佳点,拉格朗日的梯度必须在x*处为零(这不是唯一的条件,但它是必需的)。也就是说:
![](https://epubservercos.yuewen.com/96A2F1/31398077707438706/epubprivate/OEBPS/Images/Figure-P57_57881.jpg?sign=1739593046-RzSn3vdOKwEQYUw6CEKW7lMBkXOcHAwF-0-87d89cc754a77dc1d77a8ec333d63dc6)
请注意,这只是线性方程Ax=λx。这表明假设xTx=1,可能最大化(或最小化)xTAx的唯一点是A的特征向量。