Jacobian矩阵和梯度矩阵

2023-05-16

记号标识

标量:常规小写字母;
向量:加粗的小写字母: x = [ x 1 , ⋯   , x m ] T ∈ R m \bm x=[x_1,\cdots,x_m]^T \in \mathbb{R}^m x=[x1,,xm]TRm ;
实矩阵:加粗的大写字母: X = [ x 1 , ⋯   , x n ] T ∈ R m × n \bm X =[\bm x_1,\cdots,\bm x_n]^T \in \mathbb R^{m \times n} X=[x1,,xn]TRm×n
函数的表示亦是如此,打字费劲,不做演示,小写 f f f表示标量scalar函数,小写粗体 f \bm f f表示列向量函数,大写粗体 F \bm F F表示矩阵函数。

Jacobian矩阵

1 × m 1\times m 1×m行向量偏导算子记为:
D x = d e f ∂ ∂ x T = ( ∂ ∂ x 1 , ⋯   , ∂ ∂ x m ) D_x \overset{def}{=}\frac{\partial}{\partial\bm x^T}=\left(\frac{\partial}{\partial x_1},\cdots,\frac{\partial}{\partial x_m}\right) Dx=defxT=(x1,,xm)
由此可以看出,Jacobian矩阵的核心在于,当求偏导时:

  • 自变量 x \bm x x转置为行向量 x T \bm x^T xT或者自变量矩阵 X \bm X X转置为 X T \bm X^T XT;
  • 如果函数为列向量 f \bm f f时,函数按照原方向展开;

所以,Jacobian矩阵简单来讲,就是求偏导时,自变量按照水平方向展开,函数按竖直方向展开。

有关Jacobian矩阵的更多内容,请参照张贤达《矩阵分析与应用》第三章3.1节

梯度矩阵(这是重点)

采用列向量形式定义的偏导算子称为列向量偏导算子,习惯上称为梯度算子,而梯度在机器学习中是一个经常用到的概念。
梯度算子计作 ∇ x \nabla_x x,定义为:
∇ x = d e f ∂ ∂ x = ( ∂ ∂ x 1 , ⋯   , ∂ ∂ x m ) T \nabla_x\overset{def}{=}\frac{\partial}{\partial\bm x}=\left(\frac{\partial}{\partial x_1},\cdots,\frac{\partial}{\partial x_m}\right)^T x=defx=(x1,,xm)T
因此,实值标量函数 f ( x ) f(\bm x) f(x)的梯度向量 ∇ x f ( x ) \nabla_\bm xf(\bm x) xf(x) m × 1 m\times1 m×1的列向量,定义为:
∇ x f ( x ) = d e f ∂ f ( x ) ∂ x = ( ∂ f ( x ) ∂ x 1 , ⋯   , ∂ f ( x ) ∂ x m ) T \nabla_xf(\bm x)\overset{def}{=}\frac{\partial f(\bm x)}{\partial\bm x}=\left(\frac{\partial f(\bm x)}{\partial x_1},\cdots,\frac{\partial f(\bm x)}{\partial x_m}\right)^T xf(x)=defxf(x)=(x1f(x),,xmf(x))T
由此可知:梯度矩阵的核心是:

  • 自变量列向量 x \bm x x按照原本列的形式进行铺陈;
  • 列向量函数 f \bm f f或矩阵函数 F \bm F F按照形式进行铺排;
梯度方向的负方向 − ∇ x f ( x ) -\nabla_\bm xf(\bm x) xf(x)称为函数 f f f在点 x \bm x x梯度流(gradient flow),从梯度向量的定义可以看出(没有基础当然看不出来):
(1) 在梯度流方向,函数 f ( x ) f(\bm x) f(x)以最大速率下降;
(2) 在梯度正方向,函数 f ( x ) f(\bm x) f(x)以最大速率上升。
方向导数和梯度向量关系密切,方向导数的最大值为梯度向量的模长 ∥ ∇ x f ( x ) ∥ 2 \|\nabla_\bm xf(\bm x)\|_2 xf(x)2,日后有机会可以一说。

更加广义的表达方式对比实值矩阵函数 F ( X ) \bm F(\bm X) F(X)的梯度矩阵和Jacobian矩阵:
∇ X F ( X ) = ∂ v e c T F ( X ) ∂ v e c X = ( ∂ v e c F ( X ) ∂ v e c T X ) T = ( D X F ( X ) ) T \nabla_\bm X \bm F(\bm X)=\frac{\partial vec^T\bm F(\bm X)}{\partial vec \bm X}=\left(\frac{\partial vec\bm F(\bm X)}{\partial vec^T\bm X}\right)^T=\left(D_\bm X\bm F(\bm X)\right)^T XF(X)=vecXvecTF(X)=(vecTXvecF(X))T=(DXF(X))T
其中: ∂ v e c X \partial vec \bm X vecX表示将自变量矩阵 X \bm X X转化为列向量,转化的方式是按列顺次拼接,最终以的形式铺陈; ∂ v e c T F ( X ) \partial vec^T \bm F(\bm X) vecTF(X)表示将实值矩阵函数 F ( X ) \bm F(\bm X) F(X)转化为行向量,转化的方式依旧按列顺次拼接,最终以的形式铺陈。其他同理。

总之,矩阵函数的梯度矩阵是其Jacobian矩阵的转置【Transposition】。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jacobian矩阵和梯度矩阵 的相关文章

  • 对象存储——CDN

    文章目录 前言常见问题 前言 使用第三方OSS服务的好处是集成了CDN服务 xff0c 下面来了解一下什么是CDN CDN 全称 Content Delivery Network或Content Distribute Network xff
  • HTTP通信

    通过网络访问接口实现HTTP通信 mainwindow h span class token macro property span class token directive hash span span class token dire
  • onmouseover和onmouseout事件小结

    前言 onmouseover和onmouseout事件是在pc端上使用非常广泛的鼠标划入划出事件 顾名思义 onmouseover是进入到dom元素中时触发的事件 而onmouseout是移出dom元素时触发的事件 它们即使在ie低版本也有
  • 获取网络接口信息

    获取网络接口信息 mainwindow h span class token macro property span class token directive hash span span class token directive ke
  • UDP通信

    udp发送端 UdpSenderDialog h span class token macro property span class token directive hash span span class token directive
  • TCP通信(01)

    服务器端向客户端发送数据 客户端 span class token macro property span class token directive hash span span class token directive keyword
  • TCP通信(02)

    客户端向服务端发送数据 客户端 span class token macro property span class token directive hash span span class token directive keyword
  • QT 5.15前版本QTcpSocket::error,QAbstractSocket::error信号无法关联槽

    QT5 15版本中 xff0c QAbstractSocket Class将原来的 span class token keyword void span span class token function error span span c
  • 进程通信(02)

    一 xff0c C 43 43 常用进程间通信 管道 Pipe xff1a 管道可用于具有亲缘关系进程间的通信 xff0c 允许一个进程和另一个与它有共同祖先的进程之间进行通信 命名管道 named pipe xff1a 命名管道克服了管道
  • 线程(01)

    使用QThread启动线程 span class token macro property span class token directive hash span span class token directive keyword if
  • 线程(02)——线程同步

    线程同步 互斥锁 QMutex读写锁QReadWriteLock信号量QSemaphore条件变量 QWaitCondition span class token macro property span class token direct
  • 网口调试助手

    一 前言 xff08 1 xff09 TCP通信 xff08 2 xff09 UDP通信 UDP xff08 User Datagram Protocol 用户数据报协议 xff09 是一个轻量级 不可靠 面向数据报的 无连接的协议 xff
  • 低延迟声音效果(01)

    span class token macro property span class token directive hash span span class token directive keyword ifndef span span
  • datax 同步mongodb数据库到hive(hdfs)和elasticserch(es)

    一 同步环境 1 mongodb版本 xff1a 3 6 3 xff08 有点老了 xff0c 后来发现flinkcdc都只能监控一张表 xff0c 多张表无法监控 xff09 2 datax版本 xff1a 自己编译的DataX data
  • Qt播放音视频文件报错DirectShowPlayerService::doRender: Unresolved error code 0x80040266或DirectShowPlayerServi

    Qt播放音视频文件报错DirectShowPlayerService doRender Unresolved error code 0x80040266或DirectShowPlayerService doSetUrlSource Unre
  • 基本图形的绘制与填充

    span class token macro property span class token directive hash span span class token directive keyword ifndef span span
  • 2D坐标变换

    span class token macro property span class token directive hash span span class token directive keyword ifndef span span
  • c++中常量的两种定义方式

    常量是定以后 xff0c 在程序运行中不能被改变的标识符 C 43 43 中定义常量可以用 define const 这两种方法 例如 define PRICE 10 定义单价常量10 const int PRICE 61 10 定义单价常
  • c++中的floor, ceil, round

    xfeff xfeff 2 1 2 6 2 1 2 6 floor 不大于自变量的最大整数 2 2 3 3 ceil 不小于自变量的最小整数 3 3 2 2 round 四舍五入到最邻近的整数 2 3 2
  • 用conat修饰的类成员——常成员函数、常成员数据、常引用

    xfeff xfeff include lt iostream gt include lt cstdlib gt using namespace std class R public R int r1 int r2 m iR1 r1 m i

随机推荐

  • 对象的生存期——变量的生存期与可见性

    include lt iostream gt using namespace std int i 61 1 i为全局变量 xff0c 具有静态生存期 void other a b是静态局部变量 xff0c 具有静态生存期 xff0c 局部可
  • 类的友元

    include lt iostream gt include lt cstdlib gt using namespace std class Point public Point int x int y friend float dist
  • 树莓派全系列对比

    树莓派全系列参数介绍如下 xff1a 再附上 知乎 64 少数派 的一张图 xff1a Raspberry官网对过去使用的博通Soc的描述 BCM2837B0 This is the Broadcom chip used in the Ra
  • Runtime类

    xfeff xfeff 在每一个java应用程序中 xff0c 都有唯一一个RunTime对象 xff0c 该唯一的RunTime对象可通过getRunTime 方法获得 应用程序不能创建自己的RunTime队象 xff0c package
  • 动态二维数组

    include lt iostream gt include lt cstdlib gt using namespace std class Point public Point cout lt lt 34 执行无参构造函数 34 lt l
  • 获得服务器硬件信息(CPUID、硬盘号、主板序列号、IP地址等)

    获得服务器硬件信息 xff08 CPUID 硬盘号 主板序列号 IP地址等 xff09 linux命令 获取IP地址 ifconfig a 获取CPU信息 dmidecode t processor grep ID lscpu cat pr
  • MySQL备份和还原操作

    MySQL备份和还原操作 目标 备份的概念 Mysqldump备份操作 MySQL还原操作 MySQL双机热备份 概述 在数据库表丢失或损坏的情况下 xff0c 备份数据库是很重要的 如果发生系统崩溃 xff0c 能够将表尽可能丢失最少的数
  • MySQL性能优化

    MySQL性能优化 目标 调优思路系统优化mysql服务优化应用优化方式SQL语句调优启用mysql慢查询 调优思路 数据库设计与规划 以后再修该很麻烦 xff0c 估计数据量 xff0c 使用什么存储引擎数据的应用 怎样取数据 xff0c
  • Hadoop伪分布模式安装

    Hadoop伪分布模式安装 Hadoop的运行模式分为3种 xff1a 本地运行模式 xff0c 伪分布运行模式 xff0c 完全分布运行模式 xff08 1 xff09 本地模式 xff08 local mode xff09 这种运行模式
  • 云的几种部署模式

    云的几种部署模式 定义 xff1a 特点云的部署模式 定义 xff1a 云 是一种计算模式 xff0c 利用互联网技术把大量可扩展和弹性的IT相关能力作为 一种服务提供给多个客户 特点 服务化 弹性 多租户 云的部署模式 公有云 混合云 内
  • 通过git 上传本地代码至码云

    实验步骤 1 配置ssh xff08 1 xff09 在本地生成sshkey xff0c 打开git命令终端 git bash 窗口 ssh keygen t rsa C 34 xxxxx 64 xxxxx com 34 你的邮箱 xff0
  • git常见命令

    常见命令 1 初始化本地仓库 git init 2 需要与码云保持一致 git config global user name 34 用户姓名 34 git config global user email 34 用户邮箱 34 3 设置远
  • 【python】详解threading模块:lock、Rlock的使用(二)

    在之前的 python 详解threading模块 xff1a 基本概念 join阻塞和setDaemon守护主线程 xff08 一 xff09 一文中 xff0c 是有对多线程进行一个详细的梳理的 其中就提到了线程锁这一功能 主要基于Rl
  • 定位导航——旋转矩阵,IMU,左右乘

    我们先明确一下这里所说的一些概念 IMU IMU全称Inertial Measurement Unit xff0c 惯性测量单元 xff0c 主要用来检测和测量加速度与旋转运动的传感器 起初只是用来测量角度的 xff0c 后来随着其他传感器
  • scp命令详解

    相关知识 scp是secure copy的简写 xff0c 用于在Linux下进行远程拷贝文件的命令 xff0c 和它类似的命令有cp xff0c 不过cp只是在本机进行拷贝不能跨服务器 xff0c 而且scp传输是加密的 可能会稍微影响一
  • H3C命令详解(笔记)

    1 常用命令 lt gt xff1a 用户视图模式 xff0c 仅仅能配置基本参数 xff0c 调试命令 xff0c 权限较小 xff1a 系统视图模式 xff0c 可以做高级配置 system view 进入系统视图 quit 退出当前模
  • 解决Ubuntu18.04 安装ROS中 sudo rosdep init 和 rosdep update 失败问题

    解决Ubuntu18 04 安装ROS中 sudo rosdep init 和 rosdep update 失败问题 目录 解决Ubuntu18 04 安装ROS中 sudo rosdep init 和 rosdep update 失败问题
  • GD32F303 移植freertos 中断管理设定。。。。

    之前做项目时 xff0c 使用GD32F303并移植了freertos 移植过程网上有很多教程 xff0c 根据这些教程移植就可以 移植完后注意FreeRTOSConfig h中关于RTOS中断管理的设置 我移植时在官网下的是当时最新的RT
  • ros自建功能包操作

    功能包改名 假定功能包原名Apkg xff0c 要改成Bpkg 把Apkg功能包文件夹名改为Bpkg 把CMakeLists txt中project Apkg 改为project Bpkg 把Package xml文件中 lt name g
  • Jacobian矩阵和梯度矩阵

    记号标识 标量 xff1a 常规小写字母 xff1b 向量 xff1a 加粗的小写字母 x 61 x 1