当前位置: 首页 > news >正文

凸优化专题1

多变量函数的求导与求梯度/矩阵求导

1. 导数

定义: 设f:Rn→Rm,且x∈intdomf,则f在点x的导数(或称Jacobian)记为矩阵Df(x)∈Rm×nf:\R^n \rightarrow \R^m, 且x\in \mathbf{int}\ \mathbf{dom} f, 则f 在点x的导\\数(或称Jacobian)记为矩阵 Df(x) \in \R^{m\times n}f:RnRm,xint domf,f在点x的导(或称Jacobian)记为矩阵Df(x)Rm×n, 定义如下
Df(x)ij=∂fi(x)∂xj,i=1,...,m,j=1,...,n(1)Df(x)_{ij} = \frac{\partial f_i(x)}{\partial x_j},\ i = 1,...,m,\ \ j = 1,...,n \tag{1} Df(x)ij=xjfi(x), i=1,...,m,  j=1,...,n(1)

Df(x)ij表示矩阵Df(x)的第i行第j列元素Df(x)_{ij}表示矩阵Df(x)的第i行第j列元素Df(x)ij表示矩阵Df(x)的第i行第j列元素

2. 梯度

定义: 如果fff是一个实值函数(即f:Rn→Rf:\R^n \rightarrow \Rf:RnR), 易知其在点xxx导数Df(x)Df(x)Df(x)是一个行向量, 定义Df(x)Df(x)Df(x)的转置为其在点xxx处的梯度, 即

∇f(x)=Df(x)T(2)\nabla f(x) = Df(x)^T \tag{2} f(x)=Df(x)T(2)
易知梯度为一个列向量.

注1: 梯度是针对实值函数的, 且其定义是基于Jacobian的, 也就是说现有导数才有梯度. 梯度的定义可以拓展到f:Sn→Rf:S^n \rightarrow \Rf:SnR, SnS^nSn指n阶实对称矩阵, 此处不再赘述.

注2:对于一般的f:Rn→Rmf:\R^n \rightarrow \R^mf:RnRm, fff在点xxx附近的一阶近似记作:
f(x)+Df(x)(z−x),z∈δϵ(x)(3)f(x) + Df(x)(z-x), z \in \delta_\epsilon(x) \tag{3} f(x)+Df(x)(zx),zδϵ(x)(3)
这和单变量函数的情形是一致的.
与之相对应, 对于一般的实值函数f:Rn→Rf:\R^n \rightarrow \Rf:RnR, 用梯度表示其一阶近似, 则有:
f(x)+∇f(x)T(z−x),z∈δϵ(x)(4)f(x) +\nabla f(x)^T(z-x), z \in \delta_\epsilon(x) \tag{4} f(x)+f(x)T(zx),zδϵ(x)(4)

3. 链式法则

考虑f:Rn→Rm,且f在x处可微,x∈intdomf,并有g:Rn→Rp在f(x)处可微,f(x)∈intdomg,定义符合复合函数h:Rn→Rp,其中h(z)=g(f(z)),则有h在点x处可微,且其在点x处的导数为f:\R^n \rightarrow \R^m, 且f在x处可微, x\in \mathbf{int}\ \mathbf{dom}\ f, 并有g:\R^n \rightarrow \R^p\\在f(x)处可微, f(x)\in \mathbf{int}\ \mathbf{dom}\ g, 定义符合复合函数h:\R^n \rightarrow \R^p,其\\中h(z) = g(f(z)), 则有h在点x处可微, 且其在点x处的导数为f:RnRm,fx处可微,xint dom f,并有g:RnRpf(x)处可微,f(x)int dom g,定义符合复合函数h:RnRp,h(z)=g(f(z)),则有h在点x处可微,且其在点x处的导数为:
Dh(x)=Dg(f(x))Df(x)(5)Dh(x) = Dg(f(x))Df(x) \tag{5} Dh(x)=Dg(f(x))Df(x)(5)
特别地, 若f:Rn→R,g:R→R,则可以考虑h的梯度,只要取转置即可,根据定义有f:\R^n \rightarrow \R, g:\R \rightarrow \R, 则可以考虑h的梯度, 只要取转置\\即可, 根据定义有f:RnR,g:RR,则可以考虑h的梯度,只要取转置即可,根据定义有:
∇h(x)=g′(f(x))∇f(x)(6)\nabla h(x) = g'(f(x))\nabla f(x) \tag{6} h(x)=g(f(x))f(x)(6)
这是很显然的结果, 只需要略加思索即可知道这是正确答案.

例题: 考虑f:Rn→R,domf=Rnf:\R^n \rightarrow \R, \mathbf{dom}\ f = \R^nf:RnR,dom f=Rn, 且
f(x)=ln⁡∑i=1mexp⁡(aiTx+bi)f(x) = \ln\sum_{i=1}^m \exp(a_i^T x+b_i) f(x)=lni=1mexp(aiTx+bi)
其中ai∈Rn,bi∈Ra_i \in \R^n, b_i \in \RaiRn,biR
请求出f(x)f(x)f(x)的梯度.
解:
z(x)=∑i=1mexp⁡(aiTx+bi)z(x) = \sum_{i=1}^m \exp(a_i^T x+b_i)z(x)=i=1mexp(aiTx+bi), 则根据链式法则, 有
Df(x)=Dln⁡z(x)=1zDz(x)Df(x) = D\ln z(x) = \frac{1}{z}Dz(x) Df(x)=Dlnz(x)=z1Dz(x)
y(x):Rn→Rm,yi=exp⁡(aiTx+bi)y(x) : \R^n \rightarrow \R^m, y_i = \exp(a_i^T x+b_i)y(x):RnRm,yi=exp(aiTx+bi), 则有z=1Ty,其中1∈Rm,且每个元素均为1z = \mathbf{1}^T y, 其中\mathbf{1} \in \R^m, 且\\每个元素均为1z=1Ty,其中1Rm,每个元素均为1
所以
y=exp⁡(ATx+b)\begin{split} y = \exp(A^Tx+b) \end{split} y=exp(ATx+b)
其中
AT=[a1Ta2T⋮amT]A^T = \begin{bmatrix} a_{1}^T \\ a_{2}^T \\ \vdots \\ a_{m}^T \\ \end{bmatrix} AT=a1Ta2TamT
所以
Df(x)=1zDz(x)=1z1TDy(x)\begin{split} Df(x) &= \frac{1}{z}Dz(x) \\ &= \frac{1}{z} \mathbf{1}^T Dy(x) \\ \end{split} Df(x)=z1Dz(x)=z11TDy(x)
其中Dy(x)Dy(x)Dy(x)
Dy(x)=[∂y1x1∂y1x2⋯∂y1xn∂y2x1∂y2x2⋯∂y2xn⋮⋮⋱⋮∂ymx1∂ymx2⋯∂ymxn]∈Rm×nDy(x) = \begin{bmatrix} \frac{\partial y_1}{x_1} & \frac{\partial y_1}{x_2} & \cdots & \frac{\partial y_1}{x_n} \\ \frac{\partial y_2}{x_1} & \frac{\partial y_2}{x_2} & \cdots & \frac{\partial y_2}{x_n} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial y_m}{x_1} & \frac{\partial y_m}{x_2} & \cdots & \frac{\partial y_m}{x_n} \end{bmatrix} \in\R^{m \times n} Dy(x)=x1y1x1y2x1ymx2y1x2y2x2ymxny1xny2xnymRm×n
易知
Dy(x)ij=∂yixj=exp⁡(aiTx+bi)⋅aijDy(x)_{ij} = \frac{\partial y_i}{x_j} = \exp(a_i^T x+b_i) \cdot a_{ij} Dy(x)ij=xjyi=exp(aiTx+bi)aij
其中aij为aiT的第j个元素a_{ij}为a_{i}^T的第j个元素aijaiT的第j个元素
Dy(x)Dy(x)Dy(x)也可写作
Dy(x)=diag{y1,y2,⋯,ym}⋅[a1Ta2T⋮amT]Dy(x) = diag\{ y_{1}, y_{2}, \cdots, y_{m} \} \cdot \begin{bmatrix} a_{1}^T \\ a_{2}^T \\ \vdots \\ a_{m}^T \\ \end{bmatrix} Dy(x)=diag{y1,y2,,ym}a1Ta2TamT
所以
Df(x)=1z1T⋅diag{y1,y2,⋯,ym}⋅[a1Ta2T⋮amT]=1z1T⋅diag{y1,y2,⋯,ym}⋅AT\begin{split} Df(x) &= \frac{1}{z} \mathbf{1}^T \cdot diag\{ y_{1}, y_{2}, \cdots, y_{m} \} \cdot \begin{bmatrix} a_{1}^T \\ a_{2}^T \\ \vdots \\ a_{m}^T \\ \end{bmatrix} \\ &= \frac{1}{z} \mathbf{1}^T \cdot diag\{ y_{1}, y_{2}, \cdots, y_{m} \} \cdot A^T \end{split} Df(x)=z11Tdiag{y1,y2,,ym}a1Ta2TamT=z11Tdiag{y1,y2,,ym}AT
所以
∇f(x)=1zA⋅diag{y1,y2,⋯,ym}⋅1=1zA⋅[exp⁡(a1Tx+b1)exp⁡(a2Tx+b2)⋮exp⁡(amTx+bm)]其中z=∑i=1mexp⁡(aiTx+bi)\begin{split} \nabla f(x) &= \frac{1}{z} A \cdot diag\{ y_{1}, y_{2}, \cdots, y_{m} \} \cdot \mathbf{1} \\ &=\frac{1}{z} A \cdot \begin{bmatrix} \exp(a_1^T x + b_1) \\ \exp(a_2^T x + b_2) \\ \vdots \\ \exp(a_m^T x + b_m) \\ \end{bmatrix} \\ 其中z &= \sum_{i=1}^m \exp(a_i^T x+b_i) \end{split} f(x)其中z=z1Adiag{y1,y2,,ym}1=z1Aexp(a1Tx+b1)exp(a2Tx+b2)exp(amTx+bm)=i=1mexp(aiTx+bi)

4. 二阶导数

对于实值函数f:Rn→R,且x∈intdomf,则f在点x的二阶导数(或称Hessian]matrix)记为矩阵∇2f(x)∈Rn×n,其中f:\R^n \rightarrow \R, 且x\in \mathbf{int}\ \mathbf{dom} f, 则f 在点x的二阶导\\数(或称Hessian] matrix)记为矩阵 \nabla^2 f(x) \in \R^{n\times n}, 其中f:RnR,xint domf,f在点x的二阶导(或称Hessian]matrix)记为矩阵2f(x)Rn×n,其中
∇2f(x)ij=∂2f(x)∂xi∂xj,i,j=1,...,n(7)\nabla^2 f(x)_{ij} = \frac{\partial^2 f(x)}{\partial x_i \partial x_j}, \ i,j = 1,...,n \tag{7} 2f(x)ij=xixj2f(x), i,j=1,...,n(7)
易知对于一般的实值函数f:Rn→Rf:\R^n \rightarrow \Rf:RnR, 用hessian matrix表示其二阶近似, 则有:
f^(z)=f(x)+∇f(x)T(z−x)+12(z−x)T∇2f(x)(z−x)z∈δϵ(x)\hat{f}(z) = f(x) +\nabla f(x)^T(z-x) + \frac{1}{2}(z-x)^T\nabla^2 f(x)(z-x)\\ z \in \delta_\epsilon(x) f^(z)=f(x)+f(x)T(zx)+21(zx)T2f(x)(zx)zδϵ(x)
易知下列关系式成立
D∇f(x)=∇2f(x)(8)D\nabla f(x) = \nabla ^2f(x) \tag{8} Df(x)=2f(x)(8)

相关文章:

凸优化专题1

多变量函数的求导与求梯度/矩阵求导 1. 导数 定义: 设f:Rn→Rm,且x∈intdomf,则f在点x的导数(或称Jacobian)记为矩阵Df(x)∈Rmnf:\R^n \rightarrow \R^m, 且x\in \mathbf{int}\ \mathbf{dom} f, 则f 在点x的导\\数(或称Jacobian)记为矩阵 Df(x) \in \R^{m\times n}f:Rn→Rm,且…...

【蓝桥杯每日一题】递推算法

🍎 博客主页:🌙披星戴月的贾维斯 🍎 欢迎关注:👍点赞🍃收藏🔥留言 🍇系列专栏:🌙 蓝桥杯 🌙我与杀戮之中绽放,亦如黎明的花…...

Unity性能优化: 性能优化之内存篇

前言 本文和传统的内存优化不一样,不是讲如何降低内存占用,而是讲编程开发中要注意的内存问题以及一些内存技术的演变与原理。 对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀 1: Application进程…...

华为OD机试题,用 Java 解【内存资源分配】问题

最近更新的博客 华为OD机试题,用 Java 解【停车场车辆统计】问题华为OD机试题,用 Java 解【字符串变换最小字符串】问题华为OD机试题,用 Java 解【计算最大乘积】问题华为OD机试题,用 Java 解【DNA 序列】问题华为OD机试 - 组成最大数(Java) | 机试题算法思路 【2023】使…...

微服务之Nacos注册与配置

🏠个人主页:阿杰的博客 💪个人简介:大家好,我是阿杰,一个正在努力让自己变得更好的男人👨 目前状况🎉:24届毕业生,奋斗在找实习的路上🌟 &#x1…...

Android 动画详解

Android动画的分类与使用学习Android必不可少的就是动画的使用了,在Android版本迭代的过程中,出现了很多动画框架,这里做一个总结。Android动画类型分类逐帧动画【Frame Animation】,即顺序播放事先准备的图片。补间动画【Tween A…...

Linux -- 程序 进程 线程 概念引入

程序与进程 :程序 :什么是程序 ???伪官方 : 二进制文件,文件存储在磁盘中,例如 /usr/bin 目录下 。 是静态。 简单讲 :# 我们都学习了语言,比如下面这串代…...

Android ART dex2oat

一、什么是dex2oat Dex2oat (dalvik excutable file to optimized art file) ,是一个对 dex 文件进行编译优化的程序,在我们的 Android 手机中的位置是 /system/bin/dex2oat,对应的源码路径为 android/art/dex2oat/dex2oat.cc,通…...

「RISC-V Arch」RISC-V 规范结构

日期:20230228 规范分类 根据 RISC-V 设计哲学,其规范文档也是高度模块化的: ISA 规范(2 篇) 非特权规范特权规范 非 ISA 规范(6篇) Trace规范ABI 规范外部调试规范PLIC 规范SBI 规范UEFI 协…...

【C】线程控制

创建线程 #include <pthread.h>int pthread_create(pthread_t * thread,const pthread_attr_t * attr,void *(*start_routine)(void*), void * arg);返回值&#xff1a;成功返回0&#xff0c;失败返回错误号。 thread&#xff1a;成功返回后&#xff0c;新创建的线程的…...

Maven工程打jar包的N种方式

Maven工程打jar包 一、IDEA自带打包插件二、maven插件打包2.1 制作瘦包&#xff08;直接打包&#xff0c;不打包依赖包&#xff09;2.2 制作瘦包和依赖包&#xff08;相互分离&#xff09;2.3 制作胖包&#xff08;项目依赖包和项目打为一个包&#xff09;2.4 制作胖包&#xf…...

一文了解GPU并行计算CUDA

了解GPU并行计算CUDA一、CUDA和GPU简介二、GPU工作原理与结构2.1、基础GPU架构2.2、GPU编程模型2.3、软件和硬件的对应关系三、GPU应用领域四、GPUCPU异构计算五、MPI与CUDA的区别一、CUDA和GPU简介 CUDA&#xff08;Compute Unified Device Architecture&#xff09;&#xf…...

全网资料最全Java数据结构与算法(1)

一、数据结构和算法概述 1.1什么是数据结构&#xff1f; 官方解释&#xff1a; 数据结构是一门研究非数值计算的程序设计问题中的操作对象&#xff0c;以及他们之间的关系和操作等相关问题的学科。 大白话&#xff1a; 数据结构就是把数据元素按照一定的关系组织起来的集合&a…...

【项目实战】SpringMVC拦截器HandlerInterceptor入门介绍

一、拦截器介绍 拦截器是应用程序级框架中常用的拦截用户请求、实施业务流程控制的模式,它可以将一些公共的、重复发生的业务逻辑从业务处理代码中独立出来,使系统的结构更加清晰,程序的复杂度也减小了。 拦截器是一个常见的特性,它可以实现任何自定义功能,而无需调整业…...

阿里淘宝新势力造型合伙人P8、年薪百万的欧阳娜娜也躲不过的魔鬼面试,看的我心服口服

阿里淘宝新势力造型合伙人P8、年薪百万的欧阳娜娜跳槽了&#xff0c;这不是关键。 她参加了网易有道明星语音录音员/代言人的面试&#xff0c;这也不是关键。 关键是她教科书式的面试过程&#xff0c;狠狠地给我们上了一课。 我是无意间刷到的这个视频的时候&#xff0c;就一…...

深度学习笔记:不同的反向传播迭代方法

1 随机梯度下降法SGD 随机梯度下降法每次迭代取梯度下降最大的方向更新。这一方法实现简单&#xff0c;但是在很多函数中&#xff0c;梯度下降的方向不一定指向函数最低点&#xff0c;这使得梯度下降呈现“之”字形&#xff0c;其效率较低 class SGD:"""随机…...

ElasticSearch 学习笔记总结(三)

文章目录一、ES 相关名词 专业介绍二、ES 系统架构三、ES 创建分片副本 和 elasticsearch-head插件四、ES 故障转移五、ES 应对故障六、ES 路由计算 和 分片控制七、ES集群 数据写流程八、ES集群 数据读流程九、ES集群 更新流程 和 批量操作十、ES 相关重要 概念 和 名词十一、…...

深入理解border以及应用

深入border属性以及应用&#x1f44f;&#x1f44f; border这个属性在开发过程中很常用&#xff0c;常常用它来作为边界的。但是大家真的了解border吗&#xff1f;以及它的形状是什么样子的。 我们先来看这样一段代码&#xff1a;&#x1f44f; <!--* Author: syk 185901…...

如何复现论文?什么是论文复现?

参考资料&#xff1a; 学习篇—顶会Paper复现方法 - 知乎 如何读论文&#xff1f;复现代码&#xff1f;_复现代码是什么意思 - CSDN 我是如何复现我人生的第一篇论文的 - 知乎 在我看来&#xff0c;论文复现应该有一个大前提和分为两个层次。 大前提是你要清楚地懂得自己要…...

22.2.28打卡 Codeforces Round #851 (Div. 2) A~C

A题 One and Two 题面翻译 题目描述 给你一个数列 a1,a2,…,ana_1, a_2, \ldots, a_na1​,a2​,…,an​ . 数列中的每一个数的值要么是 111 要么是 222 . 找到一个最小的正整数 kkk&#xff0c;使之满足&#xff1a; 1≤k≤n−11 \leq k \leq n-11≤k≤n−1 , anda1⋅a2⋅……...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;&#xff0c;为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展&#xff0c;机器人仍难以胜任复杂的长时程任务&#xff08;如家具装配&#xff09;&#xff0c;主要受限于人…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

Ubuntu Cursor升级成v1.0

0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开&#xff0c;快捷键也不好用&#xff0c;当看到 Cursor 升级后&#xff0c;还是蛮高兴的 1. 下载 Cursor 下载地址&#xff1a;https://www.cursor.com/cn/downloads 点击下载 Linux (x64) &#xff0c;…...

英国云服务器上安装宝塔面板(BT Panel)

在英国云服务器上安装宝塔面板&#xff08;BT Panel&#xff09; 是完全可行的&#xff0c;尤其适合需要远程管理Linux服务器、快速部署网站、数据库、FTP、SSL证书等服务的用户。宝塔面板以其可视化操作界面和强大的功能广受国内用户欢迎&#xff0c;虽然官方主要面向中国大陆…...