梯度流(Gradient Flow):探索通往最小值之路

news2024/11/19 7:46:21

09ab00c90f91b69832dc8523c17da811.gif

©PaperWeekly 原创 · 作者 | 苏剑林

单位 | 追一科技

研究方向 | NLP、神经网络

在这篇文章中,我们将探讨一个被称为“梯度流(Gradient Flow)”的概念。简单来说,梯度流是将我们在用梯度下降法中寻找最小值的过程中的各个点连接起来,形成一条随(虚拟的)时间变化的轨迹,这条轨迹便被称作“梯度流”。在文章的后半部分,我们将重点讨论如何将梯度流的概念扩展到概率空间,从而形成“Wasserstein 梯度流”,为我们理解连续性方程、Fokker-Planck 方程等内容提供一个新的视角。

91a761d81e20291a1252ef8c8a1073ca.png

梯度下降

假设我们想搜索光滑函数 的最小值,常见的方案是梯度下降(Gradient Descent),即按照如下格式进行迭代:

11f29b5a4e5b981fee9caf82abc006f3.png

如果 关于 是凸的,那么梯度下降通常能够找到最小值点;相反,则通常只能收敛到一个“驻点”——即梯度为 0 的点,比较理想的情况下能收敛到一个极小值(局部最小值)点。这里没有对极小值和最小值做严格区分,因为在深度学习中,即便是收敛到一个极小值点也是很难得的了。

如果将 记为 ,将 记为,那么考虑 的极限,那么式(1)将变为一个 ODE:

b65ad81795a5dad1f6a8e4a3b84c3101.png

求解这个 ODE 所得到的轨迹 ,我们就称为“梯度流(Gradient Flow)”,也就是说,梯度流是梯度下降在寻找最小值过程中的轨迹。在式(2)成立前提下,我们还有:

25d09fc3deb887db85ebc1800fd0d874.png

这就意味着,只要 ,那么当学习率足够小时,梯度下降总能往让 变小的方向前进。

更多相关讨论,可以参考之前的优化算法系列,如《从动力学角度看优化算法:从SGD到动量加速》、《从动力学角度看优化算法:一个更整体的视角》等。

2d5f87c5be48c22ee9915fd3f1b72b11.png

最速方向

为什么要用梯度下降?一个主流的说法是“梯度的负方向是局部下降最快的方向”,直接搜这句话就可以搜到很多内容。这个说法不能说错,但有点不严谨,因为没说明前提条件——“最快”的“最”必然涉及到定量比较,只有先确定比较的指标,才能确定“最”的结果。

如果只关心下降最快的方向的话,梯度下降的目标应该是:

2ed6e6db2a9442518f928a3c3cf774ef.png

假设一阶近似够用,那么有

482fd40c4837dacbc04cd6f8bd48d0fe.png

等号成立的条件是

d6cd05cc43963f99fa04bec7ac54d4d3.png

可以看到,更新方向正好是梯度的负方向,所以说它是局部下降最快的方向。然而,别忘了这是在约束条件 下得到的,其中 是欧氏空间的模长,如果换一个模长的定义,或者干脆换一个约束条件,那么结果就不一样了。所以,严谨来说应该是“在欧氏空间中,梯度的负方向是局部下降最快的方向”。

48132e7b2f1089d2762e9c97c0fbbf53.png

优化视角

式(4)是一个带约束优化,推广和求解起来都会比较麻烦。此外,式(4)的求解结果是式(6),也不是原始的梯度下降(1)。事实上,可以证明式(1)对应的优化目标是

4b914d34b67993395a604104bf57bea6.png

也就是说,将约束当成惩罚项加入到优化目标,这样就不用考虑求解约束,也容易推广。当 足够小时,第一项占主导,因此 需要足够小时第一项才会变得足够小,即最优点应该是很接近 的,于是我们可以在 处将 展开,得到

e34c7e235a9879150c1c11d1de5b6c38.png

此时只是一个二次函数最小值问题,求解结果正是式(1)。

很明显,除了模长平方外,我们还可以考虑别的正则项,从而形成不同的梯度下降方案。比如,自然梯度下降(Natural Gradient Descent)使用的是 KL 散度作为正则项:

e398ffe5b54bc1d217f61e95c532e248.png

其中 是某个与 相关的概率分布。为了求解上式,同样在 处进行展开, 同样展开到一阶,但是 KL 散度比较特殊,它展开到一阶还是零(参考这里),所以至少要展开到二阶,总的结果是

6ee3669d321d442d9e3f069b12203d64.png

这里的 是 Fisher 信息矩阵 [1],计算细节就不展开了,过程也可以参考这里。现在上式本质上也是二次函数的最小值问题,结果为

a6130bb34f3812c74dec2c2472432d5a.png

这就是所谓的“自然梯度下降”。

7d822bb59c6c611235375ca33b6b2cbb.png

泛函入门

式(7)不仅可以将正则项一般化,还可以将求解目标一般化,比如推广到泛函。

“泛函”看起来让人“犯寒”,但事实上对于本站的老读者来说应该接触多次了。简单来说,普通多元函数就是输入一个向量,输出一个标量,泛函则是输入一个函数,输出一个标量,比如定积分运算:

01bacfc89a4f31c28d1f21c1bc5fb820.png

对于任意一个函数 , 的计算结果就是一个标量,所以 就是一个泛函。又比如前面提到的 KL 散度,它定义为

d167c9dbab49957475a34525c317e51d.png

这里积分默认为全空间积分,如果固定 ,那么它就是关于 的泛函,因为 是一个函数,输入一个满足条件的函数, 将输出一个标量。更一般地,《f-GAN简介:GAN模型的生产车间》所介绍的 f 散度,也是泛函的一种,这些都是比较简单的泛函,更负责的泛函可能包含输入函数的导数,如理论物理的最小作用量 [2]。

下面我们主要关注的泛函的定义域为全体概率密度函数的集合,即研究输入一个概率密度、输出一个标量的泛函。

1195f293747071fea491a7d17ac0ac05.png

概率之流

假如我们有一个泛函 ,想要计算它的最小值,那么模仿梯度下降的思路,只要我们能求出它的某种梯度,那么就可以沿着它的负方向进行迭代。

为了确定迭代格式,我们沿着前面的思考,考虑推广式(7),其中 自然是替换为 ,那么第一项正则应该替换成什么呢?在式(7)中它是欧氏距离的平方,那么很自然想到这里也应该替换为某种距离的平方,对于概率分布来说,性态比较好的距离是 Wasserstein 距离(准确来说是“2-Wasserstein距离”):

5332ead42320c10d68db3fab2191eafb.png

关于它的介绍,这里就不详细展开了,有兴趣的读者请参考《从Wasserstein距离、对偶理论到WGAN》。如果进一步将式(7)中的欧氏距离替换为 Wasserstein 距离,那么最终目标就是

5716ed9e97aff44f72745a87bb3a0401.png

很抱歉,笔者没法简明给出上述目标的求解过程,甚至笔者自己也没完全理解它的求解过程,只能根据《Introduction to Gradient Flows in the 2-Wasserstein Space》[3]、《{Euclidean, Metric, and Wasserstein} Gradient Flows: an overview》[4] 等文献,直接给出它的求解结果为

4effb75463b463a25b7be588801ea67e.png

或者取极限后得到

90df7452ffbb54a8ff729b8a0ebb234a.png

这就是 “Wasserstein 梯度流(Wasserstein Gradient Flow)”,其中 是 的变分导数,对于定积分泛函来说,变分导数就是被积函数的导数:

2560f249ed83972c3071ce1cdb03a057.png

4dba9b9fa88219897c58623590af95ac.png

一些例子

根据《f-GAN简介:GAN模型的生产车间》, 散度的定义为

413d7bb4b1424e590fbf2f79a6cbeaa5.png

将 固定,设 ,那么得到

c3beead6bf1e45a61ba50981314499c2.png

其中 。根据《测试函数法推导连续性方程和Fokker-Planck方程》[5] 的内容,上式具备连续性方程的形式,所以通过 ODE

a9dff7d2ff8761685caf8e6feeac8cce.png

可以实现从分布 中采样,而根据前面的讨论,式(20)是最小化 的 散度的 Wasserstein 梯度流,当 时 散度为零,即 ,所以 时,上述 ODE 实现了从分布 采样。不过,这个结果目前来说只有形式上的意义,并没有实际作用,因为这意味着我们要知道分布 的表达式,还要从式(20)中解出 的表达式,然后才能算出 ODE 右端式子,从而完成采样,这个计算难度非常大,通常是没法完成的。

一个相对简单的例子是(逆)KL 散度,此时 ,代入式(20)得到

06d4ff5118bfb752f9885f6122707ab0.png

再次对比《测试函数法推导连续性方程和Fokker-Planck方程》[5] 的结果,这正好是个 Fokker-Planck 方程,对应于 SDE:

e8d59ab3eed27a4c10b857c8146808ed.png

也就是说,如果我们知道 ,那么就可以实现用上式实现从 中采样,相比前面的 ODE,免除了求解 的过程,是一个相对可用的方案。

d5f73808a2f2661fa5bb706209d319b0.png

文章小结

本文介绍了梯度下降求最小值过程中的“梯度流”概念,其中包括向量空间的梯度流到概率空间的 Wasserstein 梯度流的拓展,以及它们与连续性方程、Fokker-Planck 方程和 ODE/SDE 采样之间的联系。

outside_default.png

参考文献

outside_default.png

[1] https://en.wikipedia.org/wiki/Fisher_information

[2] https://kexue.fm/archives/1304

[3] https://abdulfatir.com/blog/2020/Gradient-Flows/

[4] https://arxiv.org/abs/1609.03890

[5] https://kexue.fm/archives/9461

更多阅读

51c86af725ad6c92161b83093dabc0b8.png

ff0af972f34ea417771e1be21aa168e8.png

90454e19008bc9eee4d038076a4c4a56.png

9889b087518cd675047ed5ccd25cf483.gif

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算

📬 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿

aa4d20d589bc58bf2bd8feceab9da7e5.png

△长按添加PaperWeekly小编

🔍

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

·

·

23d529956a8070487b6a5f72fd141218.jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/726640.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】进程信号之信号的产生

进程信号 一 一、信号入门1、信号的一些特性2、信号的处理方式信号捕捉初识 3、Linux下的信号 二、信号的产生1、通过终端按键产生信号2、调用系统函数向进程发信号a、kill函数b、raise函数c、abort函数 3. 由软件条件产生信号4、硬件异常产生信号 结语 一、信号入门 什么是信号…

yolov7增加AFPN

论文学习:AFPN: Asymptotic Feature Pyramid Network for Object Detection-全新特征融合模块AFPN,完胜PAFPN_athrunsunny的博客-CSDN博客 论文的作者是说在yolo上效果有提升,不过还没有测试,具体还不清楚,把代码撸出来…

开源网安受邀参加2023全球数字经济大会,分享软件安全落地实践经验

近日,2023全球数字经济大会数字安全生态建设专题论坛在京隆重举行。作为2023全球数字经济大会的重要组成部分,本次论坛围绕“数字安全生态建设”这一主题,邀请政府主管部门、行业专家学者、关键信息基础设施运营主体、数字安全企业、数据要素…

第八章 实现商品详情数据异构及静态化

lua操作 设计图详解 1、 普通模式,用户获得redis数据需要经过nginx,php-fpm,php框架,再到redis 2 、直接模式,对于部分高并发请求, 为了提高吞吐率, 有必要砍掉一些环节和应用来实现快速响应,如上图,这里我们将普通模式中的php-fpm和php框架砍掉了。nginx直接从r…

arvr虚拟现实服务商为文旅行业提供全新的交互式营销体验

在AR领域,很多企业都会遇到场景化展示需求的问题,比如需要制作一个宣传片视频、远程协作软件或者产品营销等等,对于这样的场景制作需求,一般都是找像深圳华锐视点这样的第三方AR开发技术公司进行AR场景定制。 AR是将计算机生成的虚…

在萌诺母婴综合体旗下萌诺尊享(新华店)坐月子可以享受哪些服务?

第一次怀孕生孩子内心比较恐惧,尤其担心月子坐不好身体和身材难以恢复。在怀孕期间刷微博看到郑恺苗苗在萌诺尊享(新华店)坐月子的vlog,感觉这里的环境和服务都还不错,主要是看到苗苗在月子期间身材恢复的很快,于是和老公亲自去门…

深入理解计算机系统(一)

信息就是位上下文 #include<stdio.h>int main() {printf("hello,world\n");return 0; } 上面是一个hello程序。它的生命周期是从一个源程序开始的&#xff0c;就是程序员通过编辑器创建并保存的文本文件&#xff0c;文件名是hello.c。&#xff08;源程序实际…

QT 之蓝牙BLE编程

简介 使用PC蓝牙和蓝牙透传模块通讯。 准备 QT core gui bluetoothQT蓝牙库相关头文件 #include <QtBluetooth/qbluetoothglobal.h> #include <QtBluetooth/qbluetoothlocaldevice.h> #include <qbluetoothaddress.h> #include <qbluetoothdev…

造船码头行车/电动葫芦控制系统的无线技改

一、应用背景 近年来&#xff0c;我国造船业在高技术船舶研发和建造方面持续取得新突破&#xff0c;据统计截止到2022年&#xff0c;我国造船业完工量、新接订单量、手持订单量三大指标国际市场份额均保持世界前列。连续13年位居全球居首。随着船舶制造的综合能力不断提高&…

微信小程序制作 购物商城首页 【内包含源码】

1、实现效果 手机效果预览,这里的首页使用到了轮播图。页面图片数据可以替换成自己的数据。 2、开发者工具效果图 3、项目的目录结构 4、首页核心代码 4.1 index.js 这里用来存放数据,页面的数据。目前是假数据,也可以调用接口接收真实数据 // index.jsimport {request }…

spring-依赖注入的方式

setter注入-可选依赖注入 简单类型&#xff1a; 1.配置类 2.set方法 引用类型&#xff1a; 构造器注入-强制依赖注入 简单类型&#xff1a; 引用类型&#xff1a; 通过有参构造&#xff0c;获得需要注入的对象 <construct-arg />标签中name属性中填写的时构造方…

数据结构--二叉树的层遍历

数据结构–二叉树的层遍历 算法思想: ①初始化一个辅助 队列 \color{red}队列 队列 ②根结点入队 ③若队列非空&#xff0c;则队头结点出队&#xff0c;访问该结点&#xff0c;并将其左、右孩子插入队尾&#xff08;如果有的话) ④重复③直至队列为空 代码实现 typedef struc…

pycharm的环境配置运行

刚开始用pycharm打开一个项目文件时&#xff0c;由于没有配置文件&#xff0c; 程序是不能运行的 运行的按钮为灰色 此时在项目浏览器中右键点击项目主程序&#xff0c;在下拉菜单中选择运行&#xff0c; 快捷键为ctrlshiftF10在配置中会自动添加以主程序为名称的配置 这时可…

vue3实现折叠面板

总是忘记vue怎么实现折叠面板&#xff0c;记录一下&#xff0c;没有动画样式。 <div class"item-content padding15" style"font-size: 0.875rem;" click"changeCollapse(index)" v-for"(item, index) in collData.dataList" :key&…

mtk log、kernel log、adb log的详细使用

目录 mtk logkernel logadb log 打印MTK log&#xff0c;里面就包含了kernel层的log&#xff0c;像我们adb log打印的是上层应用的log&#xff0c;mtk log打印的则是更底层的log。 那么什么时候需要用到mtk log 呢&#xff1f; 就比如你想抓一些从关机到开机的log&#xff0c;…

基于 SpringBoot + Vue 的前后端分离的高校招生管理系统

【程序员徐师兄】&#xff1a;hello你好我是程序员徐师兄&#xff0c;6年大厂经验。很高兴你能来阅读&#xff0c;希望我们能不断精进&#xff0c;向着优秀程序员前行&#xff01; 博客来源于项目以及编程中遇到的问题总结&#xff0c;偶尔会有读书分享&#xff0c;我会陆续更新…

AICG - Stable Diffusion 的扩展插件 (Extensions) 的配置与使用

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/131576762 Prompt: (masterpiece, top quality, best quality, ((standing in centre)), ((1girl, black hair)), ((upper body, symmetrical com…

leetcode 141.环形链表 I - 142.环形链表 II 代码及指针相遇证明问题

⭐️ 环形链表 I 题目描述 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 如果链表中存在环 &#xff0c;则返回 true 。 否则&#xff0c;返回 false 。 思…

Vue项目在IE浏览器页面白屏且报错SCRIPT1010:缺少标识符

背景 &#xff1a;Vue2 项目在谷歌浏览器运行好好的&#xff0c;在 IE 浏览器打开就会出现各种的问题。。 控制台报错 &#xff1a;SCRIPT1010: 缺少标识符 文件&#xff1a;app.403ea2d4.js&#xff0c;行&#xff1a;1&#xff0c;列&#xff1a;180 问题 &#xff1a; 同伴 …

Linux 中查找 IP 地址的方法

概要 在 Linux 系统中&#xff0c;经常需要查找 IP 地址以进行网络配置、故障排除或安全管理。无论是查找本地主机的 IP 地址还是查找其他设备的 IP 地址&#xff0c;本文将介绍三种简单的方法&#xff0c;帮助你在 Linux 中轻松找到所需的 IP 地址。 方法一&#xff1a;使用 i…