zoukankan      html  css  js  c++  java
  • 【ML-0-3】矩阵求导-链式法则

    目录

    1. 向量对向量
    2. 标量对多个向量
    3. 标量对多个矩阵
    4. 矩阵向量求导小结

    求导的自变量和因变量直接有复杂的多层链式求导的关系,此时微分法使用起来也有些麻烦。需要一些简洁的方法。

    本文我们讨论矩阵向量求导链式法则,使用该法则很多时候可以帮我们快速求出导数结果。如果遇到其他资料求

    导结果不同,请先确认布局是否一样。

    若没有特殊说明,默认情况定义如下:求导的自变量用x表示标量,x表示n维向量,X表示m×n维度的矩阵,求导的因变量用y表示标量,y表示m维向量,Y表示p×q维度的矩阵。默认向量为列向量,若是行向量,本文全部使用对应字母的转置表示。

    总的求导准则:形式和平时高中所述的链式求导方式一样,这里矩阵和向量求导一定要注意维度统一

    一、向量对向量

    假设多个向量存在依赖关系,比如三个向量 x y z 存在依赖关系,则我们有下面的链式求导法则:

    维度探讨:假设x y z 的维度分别为mnp,∂z/x 是 p×m,∂z/y 是 p×n,∂y/x 是 n×m,符合矩阵乘法维度原则。

    二、标量对多个向量

    2.1 3个向量

    最后到1标量的依赖关系: x → y → z ,此时很容易发现维度不相容。不能再简单套用上面的式子,而做了对应的变形:

    维度探讨:假设x y z 的维度分别为m,n,1,∂z/∂x 是 m×1,(∂y/∂x)T 是 m×n,∂z/∂x 是 n×1,符合矩阵乘法维度原则。

    2.2 多个向量

    对于更加复杂的形式:如: y1 → y2 →…… yn → z ,则表达式为:

    2.3 实际应用

    ML-2最小二乘法中使用到的,最小二乘法优化的目标是最小化如下损失函数:

    对上述进行如下假设:

    很容易得到以下表达式:

    三、标量对多个矩阵

    假设: X → Y → z 存在依赖关系,则我们有下面的链式求导法则:

    上面的式子是矩阵迹性质来的,不是特别实用,也不便于推广。我们再看一个偏难得问题:

    同样还是如此,

    我们再来看看后半部分的导数:

    那么最终的标签链式求导公式转化为:

    排列成矩阵即为:

    对上面的式子做个总结:

    维度探讨:假设Y A X 的维度分别为p×n,p×m,m×n,∂z/∂X是m×n,(A)T 是 m×p,∂z/∂Y是 p×n,符合矩阵乘法维度原则。

    这结论在是一个向量x的时候也成立,即

    同理:如果要求导的自变量在左边,线性变换在右边,也有类似稍有不同的结论如下:

    使用好上述四个结论,对于机器学习尤其是深度学习里的求导问题可以非常快的解决

    四、矩阵向量求导小结

    矩阵向量求导的三种方法:定义法,微分法和链式求导法。在同等情况下,优先考虑链式求导法,尤其是第三节的四个结论。其次选择微分法、在没有好的求导方法的时候使用定义法是最后的保底方案。

    基本上大家看了系列里这四篇后对矩阵向量求导就已经很熟悉了,对于机器学习中出现的矩阵向量求导问题已足够。

    主要来自: https://www.cnblogs.com/pinard/p/10825264.html

    附件:手写推导

  • 相关阅读:
    一.django初识
    解决Centos7下中文显示乱码
    宿主机ping不通虚拟机,虚拟机能ping通宿主机问题
    Win7查看某个端口被占用的解决方法
    改变securecrt背景色
    一.1搭建跨平台的统一python开发环境
    第二部分用户交互程序开发,通过paramiko记录ssh会话记录
    【VUE+Django】天坑》》 模板语法与VUE语法的冲突
    【vue_django】成功登录后,保存用户
    【Vue+django】 配合rest_framework的惊天大坑
  • 原文地址:https://www.cnblogs.com/yifanrensheng/p/12639539.html
Copyright © 2011-2022 走看看