定义

(1) 向量对标量求导 矩阵对标量求导





我们可以看到上述求导过程实际上就是不同函数对变量求导,然后按照向量或者矩阵的形式排列,注意这里结果的结构应该与函数的结构保持一致

(2)标量对向量求导 标量对矩阵求导





这里的理解使同一个函数对不同的变量求导,然后注意结果要和变量的形式保持一致,比如对向量求导,向量如果是$n \times 1$的列向量,结果也是$n \times 1$的列向量,如果是行向量结果也是行向量,如果是$m \times n$的矩阵,结果也是同样大小的矩阵

(3)向量对向量求导





我们可以将上述过程看作函数向量中的每个元素对变量向量求导,这样就是标量对向量求导,然后再把所有结果搭成一个矩阵

当x是行向量时,标量对向量求导得到一个$1 \times n$的行向量,因为有m个函数,所以有m个行向量,最后矩阵就是$m \times n$

当x是列向量时,标量对向量求导得到一个$n \times 1$的列向量,因为有m个函数,所以有m个列向量,最后矩阵就是$n \times m$

重要结论

应用上面的定义,我们可以得到一些十分有用的结论:





应用

下面推导一下在单应变换中使用拉格朗日乘子法得到的函数的驻点的推导:



这个式子:

$\frac{\partial \left [ \left | Ax \right | ^{2 }{2} + \lambda \left ( 1 - \left | x\right | ^{2 } \right ) \right ] }{\partial x} = 0$

我们把它展开可以得到:

$\frac{\partial\left ( Ax\right ) ^{T}Ax }{\partial x} - \lambda \frac{\partial x^{T}x }{\partial x} = 0 $

即$\frac{\partial x^{T} A^{T}Ax }{\partial x} - \lambda \frac{\partial x^{T}x }{\partial x} = 0 $

对于第一项我们应用重要结论中的第六条可以得到:

$\frac{\partial x^{T} A^{T}Ax }{\partial x} = 2 A^{T}A x$

第二项应用第二条得到:

$\lambda \frac{\partial x^{T}x }{\partial x} = 2\lambda x$

代回原式即得:

$A^{T}A x = \lambda x$

cv2 数学基础---矩阵微分的更多相关文章

  1. 矩阵微分(matrix derivatives)

    关于矩阵求导,得到的导数则是矩阵形式:关于矢量求导,得到的导数则是矢量形式:关于标量求导,得到的仍是标量形式.也即关于谁求导,得到的导数形式便和谁的维度信息一致. fx = f(x) grad = n ...

  2. 矩阵微分与向量函数Taylor展开

    参考博客:https://blog.csdn.net/a_big_pig/article/details/78994033

  3. 《神经网络的梯度推导与代码验证》之FNN(DNN)的前向传播和反向推导

    在<神经网络的梯度推导与代码验证>之数学基础篇:矩阵微分与求导中,我们总结了一些用于推导神经网络反向梯度求导的重要的数学技巧.此外,通过一个简单的demo,我们初步了解了使用矩阵求导来批量 ...

  4. 《神经网络的梯度推导与代码验证》之CNN的前向传播和反向梯度推导

    在FNN(DNN)的前向传播,反向梯度推导以及代码验证中,我们不仅总结了FNN(DNN)这种神经网络结构的前向传播和反向梯度求导公式,还通过tensorflow的自动求微分工具验证了其准确性.在本篇章 ...

  5. 《神经网络的梯度推导与代码验证》之vanilla RNN的前向传播和反向梯度推导

    在本篇章,我们将专门针对vanilla RNN,也就是所谓的原始RNN这种网络结构进行前向传播介绍和反向梯度推导.更多相关内容请见<神经网络的梯度推导与代码验证>系列介绍. 注意: 本系列 ...

  6. 《神经网络的梯度推导与代码验证》之LSTM的前向传播和反向梯度推导

    前言 在本篇章,我们将专门针对LSTM这种网络结构进行前向传播介绍和反向梯度推导. 关于LSTM的梯度推导,这一块确实挺不好掌握,原因有: 一些经典的deep learning 教程,例如花书缺乏相关 ...

  7. coursera机器学习笔记-多元线性回归,normal equation

    #对coursera上Andrew Ng老师开的机器学习课程的笔记和心得: #注:此笔记是我自己认为本节课里比较重要.难理解或容易忘记的内容并做了些补充,并非是课堂详细笔记和要点: #标记为<补 ...

  8. 机器学习 —— 基础整理(七)前馈神经网络的BP反向传播算法步骤整理

    这里把按 [1] 推导的BP算法(Backpropagation)步骤整理一下.突然想整理这个的原因是知乎上看到了一个帅呆了的求矩阵微分的方法(也就是 [2]),不得不感叹作者的功力.[1] 中直接使 ...

  9. 从线性模型(linear model)衍生出的机器学习分类器(classifier)

    1. 线性模型简介 0x1:线性模型的现实意义 在一个理想的连续世界中,任何非线性的东西都可以被线性的东西来拟合(参考Taylor Expansion公式),所以理论上线性模型可以模拟物理世界中的绝大 ...

  10. 吴恩达机器学习CS229课程笔记学习

    监督学习(supervised learning) 假设我们有一个数据集(dataset),给出居住面积和房价的关系如下: 我们以居住面积为横坐标,房价为纵坐标,组成数据点,如(2104, 400), ...

随机推荐

  1. JAVA获取字符串内的括号对;获取括号对的内容;按指定规则返回括号对位置;

    先看结果:处理字符串 "这个是一条测试用的字符串[ ( 5 ( 4( 3 [(1) (2)] ))(7))][(6)]" 结果 解决思路:参考正则表达式里面出入站部分 代码实现如下 ...

  2. ZEGO 即构音乐场景降噪技术解析

    随着线上泛娱乐的兴起,语聊房.在线 KTV 以及直播等场景在人们的日常生活中占据越来越重要的地位,用户对于音质的要求也越来越高,因此超越传统语音降噪算法的 AI 降噪算法应运而生,所以目前各大 RTC ...

  3. Prometheus-5:relabel标签重新打标

    Prometheus relabel重新打标 对target重新打标是在数据抓取之前动态重写target标签的强大工具,在每个数据抓取配置中,可以定义多个relabel步骤,它们将按照定义的顺序依次执 ...

  4. 在虚拟机VMware上安装OpenKylin开源操作系统

    在虚拟机(VMware)上安装OpenKylin开源操作系统 今天我们一下学习下开放麒麟系统的安装.也是我的开源项目在OpenKylin上运行的实践. 希望通过该项目了解和学习Avalonia开发的朋 ...

  5. Linux 安装:中文manpages

    Linux 中文man手册安装 bash 脚本 wget https://src.fedoraproject.org/repo/pkgs/man-pages-zh-CN/manpages-zh-1.5 ...

  6. 【go语言】2.2.1 数组和切片

    数组和切片是 Go 语言中常用的数据结构,它们都可以存储多个同类型的元素. 数组 数组是具有固定长度的数据类型,它的长度在定义时就已经确定,不能随意改变. 你可以使用以下方式定义一个数组: var a ...

  7. fastjson 1.2.80 漏洞浅析及利用payload

    0x01 说明 在fastjson的1.2.80版本中可以通过将依赖加入到java.lang.Exception 期望类的子类中,绕过checkAuto. 0x02 简析 { "@type& ...

  8. 文件上传的multipart/form-data属性,你理解了吗

    form表单经常用于前端发送请求,比如:用户填写信息.选择数据.上传文件,对于不同的场景,上传数据的格式也会有些区别. action action 表示该请求的 url 地址,定义在form上,请求的 ...

  9. 无linux基础也能熟练掌握git的基本操作

    git是一个用来管理项目的工具,它的远程仓库有github.gitee.gitlab代码托管中心,既可以用于个人共享代码,又可以用于团队进行项目的协作与发布,那么我们一起来了解一下git该如何使用~ ...

  10. ES集群&kibana安装

    一.elasticsearch介绍 Elasticsearch 是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful 风格接口,多数据源,自动搜索负 ...