• 矩阵的导数与迹


    https://www.cnblogs.com/crackpotisback/p/5545708.html

    矩阵的导数

    ​ 对于一个将m×n

    的矩阵映射为实数的函数f:m×n,我们定义f对矩阵A的导数为

    Af(A)=fA11fAm1fA1nfAmn⎤⎦⎥⎥⎥⎥⎥


    f(A)

    就是我们下面要介绍的迹。

    方阵的迹

    ​ 对于一个n

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

    trA=i=1nAii

    一些有用的性质

    1. trABC=trBCA=trCAB

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

    • trA=trAT

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

    • tr(A+B)=trA+trB

    • tr αA=α trA

    • AtrAB=BT

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


    A=[acbd]


    设方阵B

    B=[egfh]


    那么有

    AB=[ae+bgce+dgaf+bhcf+dh]


    所以有

    trAB=ae+bg+cf+dh


    然后有

    AtrAB=[efgh]=BT

    • ATf(A)=(Af(A))T

    • trABATC=CAB+CTABT

    • 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θθTXTy⃗ y⃗ TXθ+y⃗ Ty⃗ )


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

    θJ(θ)=12θtr(θTXTXθθTXTy⃗ y⃗ TXθ)


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

    θJ(θ)=12θ(tr θTXTXθ2tr y⃗ Xθ)


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

    XTAXX=(A+AT)X


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

    θJ(θ)=XTXθXTy⃗ 


    θJ(θ)=0可以求出

    θ=(XTX)1XTy⃗ 
  • 相关阅读:
    numpy简单使用
    机器学习简介
    sklearn 使用以及数据集拆分&特征工程(特征提取&特征预处理)
    Flink处理函数
    全功能测试框架 Carina
    浅谈测试技术落地
    appium 2.0 beta版体验
    eBPF学习
    ACPI学习
    设置VF聚合网口
  • 原文地址:https://www.cnblogs.com/fengff/p/9766002.html
Copyright © 2020-2023  润新知