学习笔记,仅供参考,有错必纠
转载自:凸优化笔记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里面。考虑原始优化问题,min⁡f=g+h\min f =g+hminf=g+h本身是一个无约束优化问题,但把hhh用一个约束函数表示,他就是一个带约束的优化问题min⁡g(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=argmin⁡f(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+∣∣很小,也可能离最优解比较远。

如何正确理解近似点梯度下降算法相关推荐

  1. 梯度下降算法_梯度下降算法详解

    原创 | CDA数据分析研究院,转载需授权 介绍 如果说在机器学习领域有哪个优化算法最广为认知,用途最广,非梯度下降算法莫属.梯度下降算法是一种非常经典的求极小值的算法,比如在线性回归里我们可以用最小 ...

  2. 梯度下降算法的正确步骤_梯度下降算法

    梯度下降算法的正确步骤 Title: What is the Gradient Descent Algorithm and its working. 标题:什么是梯度下降算法及其工作原理. Gradi ...

  3. 梯度下降算法的正确步骤是什么?

    梯度下降算法的正确步骤是什么? a.用随机值初始化权重和偏差 b.把输入传入网络,得到输出值 c.计算预测值和真实值之间的误差 d.对每一个产生误差的神经元,调整相应的(权重)值以减小误差 e.重复迭 ...

  4. DL之DNN优化技术:神经网络算法简介之GD/SGD算法(BP的梯度下降算法)的简介、理解、代码实现、SGD缺点及改进(Momentum/NAG/Ada系列/RMSProp)之详细攻略

    DL之DNN优化技术:神经网络算法简介之GD/SGD算法(BP的梯度下降算法)的简介.理解.代码实现.SGD缺点及改进(Momentum/NAG/Ada系列/RMSProp)之详细攻略 目录 GD算法 ...

  5. 导数在梯度下降算法中的意义理解

    梯度下降算法实际是在计算函数的极值问题,我们通过求函数的极值获取函数的局部最值 在计算梯度下降的过程中,求函数的导数来通过逼近的方法去求局部最值 而一般文章中介绍变量变化的时候是通过将变量自身减去导数 ...

  6. 彻底搞明白梯度下降算法1:方向导数与梯度概念理解

    预备知识点:斜率与变化率 方向导数 梯度 总结 1.预备知识点:斜率与变化率 斜率: 数学.几何学名词,是表示一条直线(或曲线的切线)关于横坐标轴倾斜程度的量.它通常用直线(或曲线的切线)与横坐标轴夹 ...

  7. 如何理解梯度下降算法

    介绍 在这篇文章中,我们将了解什么是真正的梯度下降法,为什么它成为非常流行的机器学习算法,为什么AI和ML中的大多数算法都遵循这种技术. 柯西在1847年提出了梯度下降算法,是第一个提出梯度下降的人, ...

  8. 如何理解梯度下降算法?『MindSpore 啃书吧』为你分享

    不停的看手机上的社交媒体,里面有太多东西在干扰我们,每天的时间都被这些干扰碎片化,计划好的一些事情也会被打乱,会按重要程度再排序.读书在你每天的计划表里吗?你觉得读书是重要的事情吗? 古今中外有关读书 ...

  9. 理解梯度下降算法中的动量

    理解梯度下降算法中的动量 在深度学习优化算法中,常用的梯度下降算法中一般会有一个参数 -- 动量(momentum).此文章记录动量算法的原理,以及使用它的目的. N.B. 此处的梯度下降算法是广义的 ...

最新文章

  1. UVA - 1346 Songs (贪心+排序)
  2. 人工智能技术为大脑制作地图 前沿
  3. JSP在动态网页上输出 三角形和菱形
  4. English learning
  5. Facebook最伟大的技术成就有哪些
  6. 工欲善其事必先利其器——dreamweaver
  7. Android系统简介(中):系统架构
  8. 单片机p2.0引脚c语言,单片机C语言教程二
  9. Cool_gamesetup.exe山寨版熊猫烧香病毒
  10. dell主板恢复出厂设置_如何清除DELL电脑主板CMOS信息并恢复默认设置
  11. hdmi接口线_HDMI高清线注意事项
  12. 计算机没有休眠,没有休眠选项,电脑没有休眠选项
  13. 2019携程校招笔试
  14. vulnhub 网站靶机 DC-1 打靶记录
  15. 视频存储网站服务器配置,视频存储服务器配置
  16. 未来架构:从服务化到云原生
  17. dns找不到服务器,“找不到服务器或DNS错误”,如何调整?
  18. 【】Microsoft Dynamics CRM Server 2011 (x86 and x64) - DVD (Chinese-Simplified)
  19. 怎样为人处事的原则和方法
  20. 自动驾驶nuScenes数据集——一个KITTI以外的新数据集

热门文章

  1. seaborn绘图后得到分布参数
  2. 5-2 决策树算法预测销量高低代码
  3. 算法设计:动态规划问题
  4. go 用 mysql web开发环境_简单讲解Go程序中使用MySQL的方法
  5. Mybatis报错: Invalid bound statement (not found)...
  6. java 崩溃日志_Android收集程序崩溃日志的方法
  7. mybatis获取mysql源数据类型_spring集成mybatis实现mysql数据库读写分离
  8. ant design 分页中文字_给你代码:ant-desgin-vue使用
  9. QT-Qt获取当前时间并格式化输出及将积秒转换成时间
  10. 基于微服务API级权限的技术架构