梯度计算中常用的矩阵微积分公式
标量对向量求导的常用数学公式
设标量函数 y = f ( x ) y = f(\boldsymbol{x}) y=f(x),其中 x = ( x 1 , x 2 , ⋯ , x n ) T \boldsymbol{x} = (x_1, x_2, \cdots, x_n)^{\rm T} x=(x1,x2,⋯,xn)T是一个 n n n维列向量。标量 y y y对向量 x \boldsymbol{x} x的导数为一个 n n n维列向量:
∂ y ∂ x = [ ∂ y ∂ x 1 ∂ y ∂ x 2 ⋮ ∂ y ∂ x n ] \frac{\partial y}{\partial \boldsymbol{x}} = \begin{bmatrix} \dfrac{\partial y}{\partial x_1} \\ \dfrac{\partial y}{\partial x_2} \\ \vdots \\ \dfrac{\partial y}{\partial x_n} \end{bmatrix} ∂x∂y= ∂x1∂y∂x2∂y⋮∂xn∂y
- 线性函数:若 y = a T x y = \boldsymbol{a}^{\rm T} \boldsymbol{x} y=aTx,其中 a \boldsymbol{a} a是一个 n n n维列向量,则
∂ y ∂ x = a \frac{\partial y}{\partial \boldsymbol{x}} = \boldsymbol{a} ∂x∂y=a
- 二次型函数:若 y = x T A x y = \boldsymbol{x}^{\rm T} {\bm A} \boldsymbol{x} y=xTAx,其中 A {\bm A} A是一个 n × n n \times n n×n的矩阵,则
∂ y ∂ x = ( A + A T ) x \frac{\partial y}{\partial \boldsymbol{x}} = ({\bm A} + {\bm A}^{\rm T}) \boldsymbol{x} ∂x∂y=(A+AT)x
当 A {\bm A} A为对称矩阵时, A T = A {\bm A}^{\rm T} = {\bm A} AT=A,则
∂ y ∂ x = 2 A x \frac{\partial y}{\partial \boldsymbol{x}} = 2{\bm A} \boldsymbol{x} ∂x∂y=2Ax
当 A {\bm A} A为单位矩阵时, y = x T x y = \boldsymbol{x}^{\rm T} \boldsymbol{x} y=xTx,则
∂ y ∂ x = ∂ ∥ x ∥ 2 ∂ x = ∂ x T x ∂ x = 2 x \frac{\partial y}{\partial \boldsymbol{x}} = \frac{\partial \|{\bm x}\|^2}{\partial {\bm x}} = \frac{\partial {\bm x}^{\rm T} {\bm x}}{\partial {\bm x}} =2{\bm x} ∂x∂y=∂x∂∥x∥2=∂x∂xTx=2x
∥ x ∥ 2 \|{\bm x}\|^2 ∥x∥2表示向量 x {\bm x} x的范数(长度)的平方。
向量对向量求导的常用数学公式
若 y = A x {\bm y}= {\bm A} \boldsymbol{x} y=Ax,其中 A {\bm A} A是一个 n × n n \times n n×n的矩阵,则
∂ y ∂ x = ∂ A x ∂ x = A T \frac{\partial {\bm y}}{\partial \boldsymbol{x}} = \frac{\partial {\bm A}{\bm x}}{\partial {\bm x}} = {\bm A}^{\rm T} ∂x∂y=∂x∂Ax=AT
A {\bm A} A是一个矩阵, x {\bm x} x是一个向量。
对 x {\bm x} x求导的结果是矩阵 A {\bm A} A的转置 A T {\bm A}^{\rm T} AT。
复合函数的导数
给定函数 g ( u ( x ) ) g(u(x)) g(u(x)),其中 u = u ( x ) = b − A x {\bm u}=u({\bm x}) = {\bm b} - {\bm A}{\bm x} u=u(x)=b−Ax,且 g ( u ) = ∥ u ∥ 2 g({\bm u}) = \|{\bm u}\|^2 g(u)=∥u∥2。
链式法则
根据链式法则(Chain Rule),有:
∂ g ( u ( x ) ) ∂ x = ∂ g ∂ u ⋅ ∂ u ∂ x \frac{\partial g(u({\bm x}))}{\partial {\bm x}} = \frac{\partial g}{\partial {\bm u}} \cdot \frac{\partial {\bm u}}{\partial {\bm x}} ∂x∂g(u(x))=∂u∂g⋅∂x∂u
具体步骤
-
计算 ∂ u ∂ x \dfrac{\partial {\bm u}}{\partial {\bm x}} ∂x∂u:
u ( x ) = b − A x {\bm u}({\bm x}) = {\bm b} - {\bm A}{\bm x} u(x)=b−Ax
对 x {\bm x} x求导得到:
∂ u ∂ x = − A \frac{\partial {\bm u}}{\partial {\bm x}} = -{\bm A} ∂x∂u=−A -
计算 ∂ g ( u ) ∂ u \dfrac{\partial g({\bm u})}{\partial {\bm u}} ∂u∂g(u):
g ( u ) = ∥ u ∥ 2 = u T u g({\bm u}) = \|{\bm u}\|^2 = {\bm u}^{\rm T} {\bm u} g(u)=∥u∥2=uTu
对 u {\bm u} u求导得到:
∂ g ( u ) ∂ u = 2 u \frac{\partial g({\bm u})}{\partial {\bm u}} = 2{\bm u} ∂u∂g(u)=2u -
应用链式法则:
∂ g ( u ( x ) ) ∂ x = ∂ g ( u ) ∂ u ⋅ ∂ u ∂ x \frac{\partial g(u({\bm x}))}{\partial {\bm x}} = \frac{\partial g({\bm u})}{\partial {\bm u}} \cdot \frac{\partial {\bm u}}{\partial {\bm x}} ∂x∂g(u(x))=∂u∂g(u)⋅∂x∂u
将上面的结果代入:
∂ g ( u ( x ) ) ∂ x = 2 u ⋅ ( − A ) \frac{\partial g({\bm u}({\bm x}))}{\partial {\bm x}} = 2{\bm u} \cdot (-{\bm A}) ∂x∂g(u(x))=2u⋅(−A)
由于 u = b − A x {\bm u} = {\bm b} - {\bm A}{\bm x} u=b−Ax,代入得到:
∂ g ( u ( x ) ) ∂ x = − 2 A T ( b − A x ) \frac{\partial g({u}({\bm x}))}{\partial {\bm x}} = -2{\bm A}^{\rm T} ({\bm b} - {\bm A}{\bm x}) ∂x∂g(u(x))=−2AT(b−Ax)
最终结果是:
∂ ∥ b − A x ∥ 2 ∂ x = − 2 A T ( b − A x ) \frac{\partial \|{\bm b} - {\bm A}{\bm x}\|^2}{\partial {\bm x}} = -2{\bm A}^{\rm T} ({\bm b} - {\bm A}{\bm x}) ∂x∂∥b−Ax∥2=−2AT(b−Ax)
相关文章:
梯度计算中常用的矩阵微积分公式
标量对向量求导的常用数学公式 设标量函数 y f ( x ) y f(\boldsymbol{x}) yf(x),其中 x ( x 1 , x 2 , ⋯ , x n ) T \boldsymbol{x} (x_1, x_2, \cdots, x_n)^{\rm T} x(x1,x2,⋯,xn)T是一个 n n n维列向量。标量 y y y对向量 x \boldsymbol{x} x的导数…...
vim 编写/etc/docker/daemon.json文件时,E212: 无法打开并写入文件
目录 问题描述 解决方法 1、创建/etc/docker目录 2、打开/etc/docker目录 3、创建daemon.json文件 4、vim 编辑daemon.json文件 问题描述 当我们输入代码:vim /etc/docker/daemon.json时,报E212: 无法打开并写入文件错误,如下图 vim /e…...
http 模块的概念及作用详细介绍
目录 1. http 模块概述 2. http 模块的作用 3. http 服务器代码示例 运行代码 4. http 客户端代码示例 运行代码 5. 总结 1. http 模块概述 http 模块是 Node.js 内置的核心模块之一,它用于创建 HTTP 服务器和客户端,支持处理 HTTP 请求和响应。…...
重生之我在学Vue--第5天 Vue 3 路由管理(Vue Router)
重生之我在学Vue–第5天 Vue 3 路由管理(Vue Router) 文章目录 重生之我在学Vue--第5天 Vue 3 路由管理(Vue Router)前言一、路由配置与导航1.1 什么是 Vue Router?1.2 安装 Vue Router1.3 基本路由配置步骤代码示例 1…...
常见排序算法深度评测:从原理到10万级数据实战
常见排序算法深度评测:从原理到10万级数据实战 摘要 本文系统解析冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序和基数排序8种经典算法,通过C语言实现10万随机数排序并统计耗时。测试显示:快速排序综合性能最优&…...
搭建BOA服务器
BOA服务器是嵌入式常用的服务器类型,嵌入式程序作为后端时候如果想配合网页进行显示,利用BOA服务器搭建网络界面是不错的选择 首先下载boa官方安装包 Boa Webserver 下载后传输到Ubuntu随便文件夹,解压 tar -xvf boa-0.94.13.tar.gz 进入…...
JSON.parse(JSON.stringify())深拷贝不会复制函数
深拷贝 是指创建一个新对象,并递归地复制原对象中所有层级的属性和值,从而确保新对象与原对象完全独立 深拷贝的实现方法 : 1. 使用 JSON.parse(JSON.stringify()) 函数会被忽略复制,比如,下面的对象的forma…...
debug_unpack_ios failed: Exception: Failed to codesign 解决方案(亲测有效)
debug_unpack_ios failed: Exception: Failed to codesign 解决方案(亲测有效) 背景原因解决方案tipsresult 背景 执行flutter doctor全通过后run项目依然报错 原因 1、检查flutter Mac的flutter项目在哪个文件夹内 2、检查flutter Sdk在哪个文件夹内 …...
Docker篇
1.docker环境搭建: 1.1软件仓库的配置rhel9: #cd/etc/yum.repos.d #vim docker.repo [docker] namedocker-ce baseurlhttps://mirrors.aliyun.com/docker-ce/linux/rhel/9/x86_64/stable gpgcheck0 1.2安装docker并且启动服务 yum install -y dock…...
【Linux】基本命令
目录 🔥一、基础命令 1.sudo su(superuser do) 2.pwd(print working directory) 3.ls(list) 4.cd(change directory) 5.mkdir(make directoryÿ…...
win10电脑鼠标速度突然变的很慢?
电脑鼠标突然变很慢,杀毒检测后没问题,鼠标设置也没变,最后发现可能是误触鼠标的“DPI”调节键。 DPI调节键在鼠标滚轮下方,再次点击即可恢复正常鼠标速度。 如果有和-的按键,速度变快,-速度变慢。 图源&…...
前端(vue)学习笔记(CLASS 3):生命周期工程化开发入门
1、生命周期 Vue生命周期:一个Vue实例从创建到销毁的整个过程 生命周期四个阶段:创建、挂载、更新、销毁 1、创建阶段:响应式数据 2、挂载阶段:渲染模板 3、更新阶段:数据修改、更新视图(执行多次&…...
Python写一个查星座的小程序,适合初学者练手——字典和if语句练习
一、界面预览 二、完整代码 # 导入必要的库 import tkinter as tk from tkinter import ttk # 导入ttk模块用于更现代的控件 from PIL import Image, ImageTk # 用于处理图片 import os # 用于文件路径操作class ZodiacApp:def __init__(self, root):self.root rootself.r…...
云上特权凭证攻防启示录:从根账号AK泄露到安全体系升级的深度实践
事件全景:一场持续17分钟的云上攻防战 2025年3月9日15:39,阿里云ActionTrail日志突现异常波纹——根账号acs:ram::123456789:root(已脱敏)从立陶宛IP(164.92.91.227)发起高危操作。攻击者利用泄露的AccessKey(AK)在17分钟内完成侦察→提权→持久化攻击链,完整操作序列…...
blazemeter工具使用--用于自动生成jmeter脚本并进行性能测试
1、安装blazemeter(网上有很多详情的教程) 2、开始录制:设置号你的文件名称后开始录制 3、录制完成后保存为jmeter(jmx)文件 4、在jmeter中打开文件 5、添加一个后置处理器:查看结果树,后运行看看能否成功…...
TypeScript系列07-类型声明文件
在现代前端开发中,TypeScript已成为提升代码质量和开发体验的利器。对于React和React Native项目,合理利用类型声明文件不仅能提供更好的智能提示和类型检查,还能显著减少运行时错误。本文将深入探讨类型声明文件的编写与使用。 1. 声明文件…...
【社交+陪玩服务】全场景陪玩系统源码 小程序+H5双端 社群互动+即时点单+搭建教程
内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 找搭子系统源码,圈子源码、社交源码、陪玩源码,亲测 100% 可用,跟市场上卖 1w的那款一模一样,功能非常齐全,企业级别运营的…...
【Java并发】【synchronized】适合初学者体质入门的synchronized
👋hi,我不是一名外包公司的员工,也不会偷吃茶水间的零食,我的梦想是能写高端CRUD 🔥 2025本人正在沉淀中… 博客更新速度 👍 欢迎点赞、收藏、关注,跟上我的更新节奏 📚欢迎订阅专栏…...
经销商管理系统选型解析:8款产品详评
本文主要介绍了以下8款经销商管理系统:1.纷享销客; 2.用友T6经销商管理系统; 3.金蝶经销商管理系统; 4.鼎捷经销商管理系统; 5.浪潮经销商管理系统; 6.销售易; 7.SAP Business One Distributor …...
基于STM32的逻辑分析仪
目录 制约性能因素协议命令下位机回复CMD_ID的回复CMD_METADATA命令的回复上报的采样数 设置使用开源软件PulseView设置操作1.设置采样数2.设置采样频率3.使能或禁止通道4.设置通道的触发条件 实现准备汇编指令精确测量时间 程序C语言初实现采集数据上报…...
mapbox高阶,结合threejs(threebox)添加管道
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️threebox Tube静态对象二、🍀使用thr…...
使用PySpark进行大数据处理与机器学习实战指南
1. 技术介绍 1.1 PySpark概述 PySpark是Apache Spark的Python API,它结合了Python的易用性和Spark的分布式计算能力,能够高效处理PB级数据集。Spark基于内存计算的特性使其比传统Hadoop MapReduce快10-100倍,支持流处理、SQL查询、机器学习…...
注意力机制-学习
1. 自注意力机制 句子:"The animal didnt cross the street because it was too tired." 在这个句子中,“it”指的是“animal”. 在自注意力机制中,当我们处理到“it”这个词时,模型会计算“it”与句子中其他所有词的…...
华纳云:香港服务器出现带宽堵塞一般是什么原因?
香港服务器带宽堵塞的原因通常可以归结为以下几个方面: 1. 机房带宽资源有限 (1)香港本地国际带宽成本高 香港的国际出口带宽昂贵,机房通常提供的带宽较小(如默认1Mbps-5Mbps),如果多个用户争抢有限的带宽,就会出现网络拥堵、丢包…...
我们在开发时,什么时候用到虚函数和纯虚函数?
在曾经学习面向对象的概念上,对虚函数和纯虚函数的区别,我们都会止于这样的理解层面:虚函数是用于被子类可继承可重写的函数,而纯虚函数是子类继承后就必须重写的函数。但是在开发工作上,却有很多开发者是没法彻底参透…...
Python:lambda结合if判断,内置函数与拆包
lambda的应用: #a,b是形参,比较大小 complambda a,b:"a<b" if a<b else "a>b" print(comp(8,5)) 特点:lambda只能实现简单的逻辑,如果逻辑复杂且代码量较大,不建议使用lambda降低代码的…...
【Java学习】包装类
面向对象系列九 包装类变量 一、装箱 1.实例化包装对象 2.静态缓存池 3.写法 二、拆箱 包装类变量 每个基本数据类型都有对应的基本类型的包装类变量,将基本数据类型通过对应的包装类对象载入着进入到类与对象面向对象体系 一、装箱 Integer.valueOf(int) —…...
从新手到专家:嵌入式代码空间优化技巧
目录 一、基本概念 内存开销 优化目标 二、存储管理 数据类型选择 变量作用域 结构体对齐 三、代码结构 循环优化 函数调用 分支语句 查表法的动态扩展 查表法与算法结合 指针替代数组(续) 指针与动态内存结合 指针与函数指针结合 常量优化(续) 常量传播与…...
本地部署Navidrome个人云音乐平台随时随地畅听本地音乐文件
文章目录 前言1. 安装Docker2. 创建并启动Navidrome容器3. 公网远程访问本地Navidrome3.1 内网穿透工具安装3.2 创建远程连接公网地址3.3 使用固定公网地址远程访问 前言 今天我要给大家安利一个超酷的私有化音乐神器——Navidrome!它不仅让你随时随地畅享本地音乐…...
AI自动化编程初探
先说vscodeclinemodelscope方案,后面体验trae或者cursor再写写其它的。vscode和trae方案目前来说是免费的,cursor要用claud需要付费,而且不便宜,当然效果可能是最好的。 vscode方案,我的经验是最好在ubuntu上ÿ…...
KUKA机器人:智能制造的先锋力量
在科技日新月异的今天,自动化和智能化已成为推动制造业转型升级的重要引擎。作为全球领先的智能、资源节约型自动化解决方案供应商,KUKA机器人在这一浪潮中扮演着举足轻重的角色。本文将带您深入了解KUKA机器人的发展现状,探索其在智能制造领…...
2021 年 9 月青少年软编等考 C 语言六级真题解析
目录 T1. 合法出栈序列思路分析T2. 奇怪的括号思路分析T3. 区间合并思路分析T4. 双端队列思路分析T1. 合法出栈序列 题目链接:SOJ D1110 给定一个由不同小写字母构成的长度不超过 8 8 8 的字符串 x x x,现在要将该字符串的字符依次压入栈中,然后再全部弹出。要求左边的字…...
java快速输入
带解析 package Month3; import java.util.*; import java.io.*; public class Demo100843 {static class Reader{BufferedReader bf new BufferedReader(new InputStreamReader(System.in));StringTokenizer st new StringTokenizer("");String next() throws IO…...
C/C++蓝桥杯算法真题打卡(Day3)
一、P8598 [蓝桥杯 2013 省 AB] 错误票据 - 洛谷 算法代码: #include<bits/stdc.h> using namespace std;int main() {int N;cin >> N; // 读取数据行数unordered_map<int, int> idCount; // 用于统计每个ID出现的次数vector<int> ids; …...
AntV_G6实现UI树
UI 树的实现 背景 目前需要实现一个 UI 树,用于展示设备树,以及设备树中设备的属性。与树状列表不同,UI 树需要有特定的交互方式,支持边以及当前节点的点击事件。 实现效果【复制到.html文件夹就看见了】 总体效果 点击节点效果…...
【0016】Python数据类型-不可变集合详解
如果你觉得我的文章写的不错,请关注我哟,请点赞、评论,收藏此文章,谢谢! 本文内容体系结构如下: 在Python中,除了我们常见的可变集合(Set)外,还有一种不可…...
学习资料电子版 免费下载的网盘网站(非常全!)
我分享一个私人收藏的电子书免费下载的网盘网站(学习资料为主): link3.cc/sbook123 所有资料都保存在网盘了,直接转存即可,非常的便利! 包括了少儿,小学,初中,中职&am…...
ROS2学习笔记2
前言 本篇文章属于ROS2humble的学习笔记,来源于B站鱼香ROSup主。下面是这位up主的视频链接。本文为个人学习笔记,只能做参考,细节方面建议观看视频,肯定受益匪浅。 《ROS 2机器人开发从入门到实践》课程介绍_哔哩哔哩_bilibili …...
为什么大模型网站使用 SSE 而不是 WebSocket?
在大模型网站(如 ChatGPT、Claude、Gemini 等)中,前端通常使用 EventSource(Server-Sent Events, SSE) 来与后端对接,而不是 WebSocket。这是因为 SSE 更适合类似流式文本生成的场景。下面我们详细对比 SSE…...
利用阿里云Atlas地区选择器与Plotly.js实现数据可视化与交互
在数据科学与可视化领域,交互式图表和地图应用越来越成为数据分析和展示的重要手段。本文将介绍如何结合阿里云Atlas地区选择器与Plotly.js,创建动态交互式的数据可视化应用。 一、阿里云Atlas地区选择器简介 阿里云Atlas是阿里云的一款数据可视化产品…...
尚硅谷TS快速入门笔记(个人笔记用)
TypeScript 快速上手 🪩 禹神:三小时快速上手TypeScript,TS速通教程_哔哩哔哩_bilibili ⼀、TypeScript 简介 TypeScript 由微软开发,是基于 JavaScript 的⼀个扩展语⾔。 TypeScript 包含了 JavaScript 的所有内容,即: TypeScript 是 Jav…...
python: DDD+ORM using oracle 21c
sql script: create table GEOVINDU.School --創建表 ( SchoolId char(5) NOT NULL, -- SchoolName nvarchar2(500) NOT NULL, SchoolTelNo varchar(8) NULL, PRIMARY KEY (SchoolId) --#主鍵 );create table GEOVINDU.Teacher ( TeacherId char(5) NOT NULL , TeacherFirstNa…...
KidneyTalk-open系统,RAG在医疗场景的真实落地:用于解决肾脏疾病的医疗问答问题
如何在保护隐私的前提下,本地部署大型语言模型(LLMs),以支持肾脏疾病的医学决策支持。难点包括:云端LLMs的数据泄露风险、本地部署的复杂性、通用LLMs在医学知识整合方面的不足、检索增强系统在医学文档处理和临床可用性方面的挣扎。Med-PaLM 2和MedFound在医学问答和临床…...
flask-定时任务
文章目录 前言一、APScheduler是什么二、APScheduler 主要功能:三、主要组成部分:四、典型使用场景:五、具体使用1.安装 APScheduler2.假设我们有一个需要五分钟请求一次http接口的任务1.定义一个scheduler.py去专门处理定时2.启动文件处理3.…...
6-langchang多模态输入和自定义输出
6-langchang多模态输入和自定义输出 多模态数据输入urlbase64url list工具调用自定义输出: JSON, XML, YAML如何解析 JSON 输出json如何解析xmlYAML解析器多模态数据输入 这里我们演示如何将多模态输入直接传递给模型。我们目前期望所有输入都以与OpenAI 期望的格式相同的格式…...
接口自动化入门 —— Http的请求头,请求体,响应码解析!
在接口自动化测试中,HTTP请求头、请求体和响应码是核心组成部分。理解它们的作用、格式和解析方法对于进行有效的接口测试至关重要。以下是详细解析: 1. HTTP 请求头(Request Header) 1.1 作用 请求头是客户端向服务器发送的附加…...
AI-NAS:当存储遇上智能,开启数据管理新纪元
在数据爆炸的时代,NAS(网络附加存储)已成为个人和企业存储海量数据的利器。然而,面对日益庞大的数据量,传统的NAS系统在文件管理和搜索效率上逐渐力不从心。AI-NAS应运而生,它将NAS与人工智能(A…...
MWC 2025 | 移远通信推出AI智能无人零售解决方案,以“动态视觉+边缘计算”引领智能零售新潮流
在无人零售市场蓬勃发展的浪潮中,自动售货机正经历着从传统机械式操作向AI视觉技术的重大跨越。 移远通信作为全球领先的物联网整体解决方案供应商,精准把握行业趋势,在2025世界移动通信大会(MWC)上宣布推出全新AI智能…...
个人记录的一个插件,Unity-RuntimeMonitor
没有什么干货,仅仅是个人的记录 基于GUI做的一个工具:好处就是Monitor必须,Unity天然支持实时的Monitor;唯一不好处,就是默认字体太小了,layout居中,居右也是要自行设计的。 (下面文字是有一点点写错,但意思和功能就很牛逼了;并不是都按2 x shift,而是一个 shift 添…...
【C语言】考研复试上机代码题(基础篇)
文章目录 一、输入与输出1、温度转换2、排齐数据3、进制转换 二、选择分支结构1、分段函数求值2、成绩评定3、平闰年判定4、二次方程的根5、字符大小写 三、循环结构程序1、倒数求和4、判断数根5、打印菱形6、最大公约数7、最小公倍数8、复读机 四 、数组1、数组的批量增2、数组…...