矩阵的导数与迹
矩阵的导数
对于一个将m×n的矩阵映射为实数的函数f:Rm×n↦R,我们定义f对矩阵A的导数为
▽Af(A)=⎡⎢
⎢
⎢
⎢
⎢
⎢
⎢⎣∂f∂A11…∂f∂A1n⋮⋱⋮∂f∂Am1…∂f∂Amn⎤⎥
⎥
⎥
⎥
⎥
⎥
⎥⎦
而f(A)就是我们下面要介绍的迹。
方阵的迹
对于一个n阶方阵A的迹被定义为方阵A的主对角线的元素之和,通常对方阵的求迹操作写成trA,于是我们有
trA=n∑i=1Aii
一些有用的性质
-
trABC=trBCA=trCAB
这是对三个方阵的积求迹,循环移位后的结果还是一样的,不仅2个方阵或者3个方阵的积求迹满足此性质,对其他更多个数的方阵的积求迹也满足此性质。
-
trA=trAT
这个就比较明显了,方阵转置后主对角线上的元素不会变
-
tr(A+B)=trA+trB
-
tr αA=α trA
-
▽AtrAB=BT
这个看起来有点麻烦,下面验证一下,设方阵A为
A=[abcd]
设方阵B为
B=[efgh]
那么有
AB=[ae+bgaf+bhce+dgcf+dh]
所以有
trAB=ae+bg+cf+dh
然后有
▽AtrAB=[egfh]=BT
-
▽ATf(A)=(▽Af(A))T
-
▽trABATC=CAB+CTABT
-
▽A|A|=|A|(A−1)T
一个在后面用到的等式
▽ATtrABATC=BTATCT+BATC
推导过程如下:
由▽ATf(A)=(▽Af(A))T自然有
▽ATtrABATC=(▽AtrABATC)T=(CAB+CTABT)T
所以有
(CAB+CTABT)T=BT(CA)T+(ABT)TC=BTATCT+BATC
对▽θJ(θ)的一点理解
Andrew ng在cs229-notes1中给出了一些公式,貌似还是有些东西并没有很明显的提出来,像我这种渣渣就有点晕。首先是给出的J(θ)的矩阵表示如下
J(θ)=12m∑i=1(hθ(x(i))−y(i))2=12(Xθ−→y)T(Xθ−→y)
这个公式的推导过程还是比较简单的,下面的推导比较蛋疼,有些隐含的信息貌似Andrew ng没有明显指出来,对我这种渣渣就比较尴尬了。
▽θJ(θ)=▽θ12(Xθ−→y)T(Xθ−→y)
强行展开
▽θJ(θ)=12▽θ(θTXTXθ−θTXT→y−→yTXθ+→yT→y)
很明显,后面的→yT→y是一个与θ无关的常量,所以对θ求偏导数为0,可以省略掉。假设α是一个实数,那么我们有tr α=α。θ是n×1的,X是m×n的,所以θTXTXθ的维数变换是(1×n)×(n×m)×(m×n)×(n×1),所以结果是一个1×1的方阵;同理其他的加数也是1×1的方阵,所以有
▽θJ(θ)=12▽θtr(θTXTXθ−θTXT→y−→yTXθ)
由于trA=trAT和tr(A+B)=trA+trB,所以θTXT→y=→yXθ,然后就有
▽θJ(θ)=12▽θ(tr θTXTXθ−2tr →yXθ)
对tr →yXθ,有tr →yXθ=tr θ→yX,又有▽θtr AB=BT,所以有▽θtr θ→yX=(→yX)T=XT→y;又因为
∂XTAX∂X=(A+AT)X
所以有▽θtr θTXTXθ=(XTX+(XTX)T)θ=2XTXθ,这样子就好办了
∴▽θJ(θ)=XTXθ−XT→y
令▽θJ(θ)=0可以求出
θ=(XTX)−1XT→y
参考资料
- Andrew NG的ML第二课以及其相关笔记
- 机器学习中常用的矩阵求导公式
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架