学渣笔记之矩阵的导数与迹

矩阵的导数与迹

矩阵的导数

​ 对于一个将m×n的矩阵映射为实数的函数f:Rm×nR,我们定义f对矩阵A的导数为

Af(A)=[fA11fA1nfAm1fAmn]

f(A)就是我们下面要介绍的迹。

方阵的迹

​ 对于一个n阶方阵A的迹被定义为方阵A的主对角线的元素之和,通常对方阵的求迹操作写成trA,于是我们有

trA=i=1nAii

一些有用的性质

  1. trABC=trBCA=trCAB

    这是对三个方阵的积求迹,循环移位后的结果还是一样的,不仅2个方阵或者3个方阵的积求迹满足此性质,对其他更多个数的方阵的积求迹也满足此性质。

  2. trA=trAT

    这个就比较明显了,方阵转置后主对角线上的元素不会变

  3. tr(A+B)=trA+trB

  4. tr αA=α trA

  5. AtrAB=BT

    这个看起来有点麻烦,下面验证一下,设方阵A

    A=[abcd]

    设方阵B

    B=[efgh]

    那么有

    AB=[ae+bgaf+bhce+dgcf+dh]

    所以有

    trAB=ae+bg+cf+dh

    然后有

    AtrAB=[egfh]=BT

  6. ATf(A)=(Af(A))T

  7. trABATC=CAB+CTABT

  8. A|A|=|A|(A1)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(θ)=12i=1m(hθ(x(i))y(i))2=12(Xθy)T(Xθy)

这个公式的推导过程还是比较简单的,下面的推导比较蛋疼,有些隐含的信息貌似Andrew ng没有明显指出来,对我这种渣渣就比较尴尬了。

θJ(θ)=θ12(Xθy)T(Xθy)

强行展开

θJ(θ)=12θ(θTXTXθθTXTyyTXθ+yTy)

很明显,后面的yTy是一个与θ无关的常量,所以对θ求偏导数为0,可以省略掉。假设α是一个实数,那么我们有tr α=αθn×1的,Xm×n的,所以θTXTXθ的维数变换是(1×n)×(n×m)×(m×n)×(n×1),所以结果是一个1×1的方阵;同理其他的加数也是1×1的方阵,所以有

θJ(θ)=12θtr(θTXTXθθTXTyyTXθ)

由于trA=trATtr(A+B)=trA+trB,所以θTXTy=yXθ,然后就有

θJ(θ)=12θ(tr θTXTXθ2tr yXθ)

tr yXθ,有tr yXθ=tr θyX,又有θtr AB=BT,所以有θtr θyX=(yX)T=XTy;又因为

XTAXX=(A+AT)X

所以有θtr θTXTXθ=(XTX+(XTX)T)θ=2XTXθ,这样子就好办了

θJ(θ)=XTXθXTy

θJ(θ)=0可以求出

θ=(XTX)1XTy

参考资料

  1. Andrew NG的ML第二课以及其相关笔记
  2. 机器学习中常用的矩阵求导公式
posted @   狂徒归来  阅读(24544)  评论(4编辑  收藏  举报
编辑推荐:
· 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 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示