如何正确理解近似点梯度下降算法
学习笔记,仅供参考,有错必纠
转载自:凸优化笔记19:近似点梯度下降
近似点梯度下降算法
这一部分考虑的问题主要是
minmizef(x)=g(x)+h(x)minmize f(x) = g(x) + h(x) minmizef(x)=g(x)+h(x)
这里面ggg是全空间可导的凸函数,domg=Rndom \; g=R^ndomg=Rn,hhh是存在不可导部分的凸函数,并且一般需要hhh的近似点计算较为简单.
近似点梯度下降算法是什么呢?
xk+1=proxth(xk−tk∇g(xk))x_{k+1} = prox_{th} (x_k - t_k \nabla g(x_k)) xk+1=proxth(xk−tk∇g(xk))
这里跟之前的梯度下降(GD)和次梯度下降(SD)的形式都不太一样,实际上看了后面的推导会发现经过转换他们还是很像的。不过怎么理解这个式子呢?举一个例子,假如hhh是集合CCC的指示函数,如下图所示, 这个式子实际上是先沿着ggg的梯度走步长tkt_ktk,然后再投影到集合 CCC里面。考虑原始优化问题,minf=g+h\min f =g+hminf=g+h本身是一个无约束优化问题,但把hhh用一个约束函数表示,他就是一个带约束的优化问题ming(x),s.t.x∈C\min g(x), s.t. \; x \in Cming(x),s.t.x∈C,而近似点梯度下降方法要做的事情就是先优化 ggg,然后投影到约束区域CCC中。
根据proxthprox_{th}proxth的定义,我们把上面的式子展开可以得到
可以发现括号里面的式子实际上就是在xxx附近对光滑的ggg进行了二阶展开,而x+x^+x+就是对近似后函数取最小值点。再进一步地
可以发现Gt(x)=∂h(x+)+∇g(x)G_t(x)=\partial h(x^+) + \nabla g(x)Gt(x)=∂h(x+)+∇g(x)实际上就近似为函数fff的次梯度,但并不严格是,因为∂f(x)=∂h(x)+∇g(x)\partial f(x) =\partial h(x) + \nabla g(x)∂f(x)=∂h(x)+∇g(x)。而此时我们也可以将 x+x^+x+ 写成比较简单的形式
x+=x−tGt(x)x^+ = x - t G_t(x) x+=x−tGt(x)
这跟之前的梯度下降法就统一了,并且也说明了Gt(x)G_t(x)Gt(x)就相当于是fff的梯度。
这里还需要说明的一点是Gt(x)=(x−proxth(x−t∇g(x)))/tG_t(x) = (x - prox_{th} (x - t \nabla g(x)))/tGt(x)=(x−proxth(x−t∇g(x)))/t这是一个连续函数,这是因为近似点算子是 Lipschitz 连续的(在下面一小节中会解释说明),又由于Gt(x)=0⟺x=argminf(x)G_t(x) = 0 \iff x = arg \; \min f(x)Gt(x)=0⟺x=argminf(x),因此∣∣x−x+∣∣≤ϵ||x - x^+|| \le \epsilon∣∣x−x+∣∣≤ϵ就可以作为 stopping criterion。
与之成对比的是非光滑函数的次梯度下降,∣∣x−x+∣∣||x - x^+||∣∣x−x+∣∣就不是一个很好的 stopping criterion,因为即使∣∣x−x+∣∣||x - x^+||∣∣x−x+∣∣很小,也可能离最优解比较远。
如何正确理解近似点梯度下降算法相关推荐
- 梯度下降算法_梯度下降算法详解
原创 | CDA数据分析研究院,转载需授权 介绍 如果说在机器学习领域有哪个优化算法最广为认知,用途最广,非梯度下降算法莫属.梯度下降算法是一种非常经典的求极小值的算法,比如在线性回归里我们可以用最小 ...
- 梯度下降算法的正确步骤_梯度下降算法
梯度下降算法的正确步骤 Title: What is the Gradient Descent Algorithm and its working. 标题:什么是梯度下降算法及其工作原理. Gradi ...
- 梯度下降算法的正确步骤是什么?
梯度下降算法的正确步骤是什么? a.用随机值初始化权重和偏差 b.把输入传入网络,得到输出值 c.计算预测值和真实值之间的误差 d.对每一个产生误差的神经元,调整相应的(权重)值以减小误差 e.重复迭 ...
- DL之DNN优化技术:神经网络算法简介之GD/SGD算法(BP的梯度下降算法)的简介、理解、代码实现、SGD缺点及改进(Momentum/NAG/Ada系列/RMSProp)之详细攻略
DL之DNN优化技术:神经网络算法简介之GD/SGD算法(BP的梯度下降算法)的简介.理解.代码实现.SGD缺点及改进(Momentum/NAG/Ada系列/RMSProp)之详细攻略 目录 GD算法 ...
- 导数在梯度下降算法中的意义理解
梯度下降算法实际是在计算函数的极值问题,我们通过求函数的极值获取函数的局部最值 在计算梯度下降的过程中,求函数的导数来通过逼近的方法去求局部最值 而一般文章中介绍变量变化的时候是通过将变量自身减去导数 ...
- 彻底搞明白梯度下降算法1:方向导数与梯度概念理解
预备知识点:斜率与变化率 方向导数 梯度 总结 1.预备知识点:斜率与变化率 斜率: 数学.几何学名词,是表示一条直线(或曲线的切线)关于横坐标轴倾斜程度的量.它通常用直线(或曲线的切线)与横坐标轴夹 ...
- 如何理解梯度下降算法
介绍 在这篇文章中,我们将了解什么是真正的梯度下降法,为什么它成为非常流行的机器学习算法,为什么AI和ML中的大多数算法都遵循这种技术. 柯西在1847年提出了梯度下降算法,是第一个提出梯度下降的人, ...
- 如何理解梯度下降算法?『MindSpore 啃书吧』为你分享
不停的看手机上的社交媒体,里面有太多东西在干扰我们,每天的时间都被这些干扰碎片化,计划好的一些事情也会被打乱,会按重要程度再排序.读书在你每天的计划表里吗?你觉得读书是重要的事情吗? 古今中外有关读书 ...
- 理解梯度下降算法中的动量
理解梯度下降算法中的动量 在深度学习优化算法中,常用的梯度下降算法中一般会有一个参数 -- 动量(momentum).此文章记录动量算法的原理,以及使用它的目的. N.B. 此处的梯度下降算法是广义的 ...
最新文章
- UVA - 1346 Songs (贪心+排序)
- 人工智能技术为大脑制作地图 前沿
- JSP在动态网页上输出 三角形和菱形
- English learning
- Facebook最伟大的技术成就有哪些
- 工欲善其事必先利其器——dreamweaver
- Android系统简介(中):系统架构
- 单片机p2.0引脚c语言,单片机C语言教程二
- Cool_gamesetup.exe山寨版熊猫烧香病毒
- dell主板恢复出厂设置_如何清除DELL电脑主板CMOS信息并恢复默认设置
- hdmi接口线_HDMI高清线注意事项
- 计算机没有休眠,没有休眠选项,电脑没有休眠选项
- 2019携程校招笔试
- vulnhub 网站靶机 DC-1 打靶记录
- 视频存储网站服务器配置,视频存储服务器配置
- 未来架构:从服务化到云原生
- dns找不到服务器,“找不到服务器或DNS错误”,如何调整?
- 【】Microsoft Dynamics CRM Server 2011 (x86 and x64) - DVD (Chinese-Simplified)
- 怎样为人处事的原则和方法
- 自动驾驶nuScenes数据集——一个KITTI以外的新数据集
热门文章
- seaborn绘图后得到分布参数
- 5-2 决策树算法预测销量高低代码
- 算法设计:动态规划问题
- go 用 mysql web开发环境_简单讲解Go程序中使用MySQL的方法
- Mybatis报错: Invalid bound statement (not found)...
- java 崩溃日志_Android收集程序崩溃日志的方法
- mybatis获取mysql源数据类型_spring集成mybatis实现mysql数据库读写分离
- ant design 分页中文字_给你代码:ant-desgin-vue使用
- QT-Qt获取当前时间并格式化输出及将积秒转换成时间
- 基于微服务API级权限的技术架构