写在前面

本篇博客来自其他几篇博客的整合(详见参考文献),主要是提取了一些利于自己理解的小点。

一、为什么需要次梯度方法

次梯度方法是传统梯度下降算法的拓展,传统梯度下降算法是为了解决可导凸函数的问题,而次梯度方法主要是为了解决不可导梯度的问题。但是其算法收敛速度会相对较慢。

二、次梯度的定义

次梯度是指对于函数fff上的点x" role="presentation" style="position: relative;">xxx满足一下条件的g∈Rng∈Rng \in \mathbb{R}^n:

f(y)≥f(x)+gT(y−x)f(y)≥f(x)+gT(y−x)f(y) \geq f(x) + g^T(y-x)
即,
(1)若 fff是一个凸函数,若f" role="presentation" style="position: relative;">fff在x处可导,则由一阶泰勒展开式:
f(y)≥f(x)+▽f(x)T(y−x)f(y)≥f(x)+▽f(x)T(y−x)f(y) \geq f(x) + \bigtriangledown f(x)^T(y-x)
(2)若 fff在x处不可导,则仍可得到一个下届:
f(y)≥f(x)+gT(y−x)" role="presentation" style="position: relative;">f(y)≥f(x)+gT(y−x)f(y)≥f(x)+gT(y−x)f(y) \geq f(x) + g^T(y-x)
这个 ggg就是f" role="presentation" style="position: relative;">fff的子梯度。
注意:虽然次梯度是针对不可导函数而设计的,但是可导函数也仍然可以使用,因此 fff是非凸函数也是可以的。

三、次梯度的计算方法

在点x0" role="presentation" style="position: relative;">x0x0x_0的次导数的集合是一个非空闭区间[a, b],其中a和b是单侧极限
a=limx−>x−0f(x)−f(x0)x−x0a=limx−>x0−f(x)−f(x0)x−x0a=\lim_{x->x_0^-}\frac{f(x)-f(x_0)}{x-x_0}, a=limx−>x+0f(x)−f(x0)x−x0a=limx−>x0+f(x)−f(x0)x−x0a=\lim_{x->x_0^+}\frac{f(x)-f(x_0)}{x-x_0}
a和b一定存在,且a≤b。所有次导数的集合[a, b]称为函数 fff在x0" role="presentation" style="position: relative;">x0x0x_0的次导数。

四、次梯度的举例

f(x)=|x|f(x)=|x|f(x)=|x|在x=0x=0x=0的次梯度为[-1, 1]。
a=limx−>0−|x|−0x=−xx=−1a=limx−>0−|x|−0x=−xx=−1a=\lim_{x->0^-}\frac{|x|-0}{x}=\frac{-x}{x}=-1,
b=limx−>0+|x|−0x=xx=1b=limx−>0+|x|−0x=xx=1b=\lim_{x->0^+}\frac{|x|-0}{x}=\frac{x}{x}=1
因此,f(x)=|x|f(x)=|x|f(x)=|x|在x=0x=0x=0的次梯度为[-1, 1]。

五、次梯度的性质

  • 数乘不变性。∀α≥0,∂(αf)(x)=α∂f(x)∀α≥0,∂(αf)(x)=α∂f(x)\forall \alpha≥0, \partial(\alpha f)(x)=\alpha \partial f(x)
  • 加法不变性。f=f1+...+fm,∂f(x)=∂f1(x)+...+∂fm(x)f=f1+...+fm,∂f(x)=∂f1(x)+...+∂fm(x)f=f_1+...+f_m, \partial f(x)=\partial f_1(x)+...+\partial f_m(x)
  • 放射特性。如果fff是凸函数,那么∂f(Ax+b)=AT∂f(Ax+b)" role="presentation" style="position: relative;">∂f(Ax+b)=AT∂f(Ax+b)∂f(Ax+b)=AT∂f(Ax+b)\partial f(Ax+b)=A^T \partial f(Ax+b)

六、次梯度算法

次梯度算法与梯度下降类似,仅仅是使用次梯度代替梯度,即:
x(k)=x(k−1)−tk⋅g(k−1),k=1,2,3...x(k)=x(k−1)−tk⋅g(k−1),k=1,2,3...x^{(k)}=x^{(k-1)}-t_k \cdot g^{(k-1)}, k=1,2,3...
其中,g(k−1)∈∂f(x(k−1))g(k−1)∈∂f(x(k−1))g^{(k-1)} \in \partial f(x^{(k-1)})为f(x)f(x)f(x)在x处的次梯度。
与梯度下降算法不同的地方在于,次梯度算法并不是下降算法,每次对于参数的更新并不能保证代价函数是呈单调递减的趋势。

参考文献:
https://www.52ml.net/20973.html
https://blog.csdn.net/lansatiankongxxc/article/details/46386341
https://www.cnblogs.com/connorzx/p/4797194.html

次梯度(subgradient)方法相关推荐

  1. python实现次梯度(subgradient)和近端梯度下降法 (proximal gradient descent)方法求解L1正则化

    l1范数最小化 考虑函数,显然其在零点不可微,其对应的的次微分为: 注意,的取值为一个区间. 两个重要定理: 1)一个凸函数,当且仅当,为全局最小值,即 为最小值点  : 2)为函数(不一定是凸函数) ...

  2. 【机器学习】次梯度(subgradient)方法

    次梯度方法(subgradient method)是传统的梯度下降方法的拓展,用来处理不可导的凸函数.它的优势是比传统方法处理问题范围大,劣势是算法收敛速度慢.但是,由于它对不可导函数有很好的处理方法 ...

  3. 支持向量机 (三): 优化方法与支持向量回归

    拉格朗日乘子法 - KKT条件 - 对偶问题 支持向量机 (一): 线性可分类 svm 支持向量机 (二): 软间隔 svm 与 核函数 支持向量机 (三): 优化方法与支持向量回归 优化方法 一.S ...

  4. 深度学习中的激活函数与梯度消失

    转载请注明出处:http://www.cnblogs.com/willnote/p/6912798.html 前言 深度学习的基本原理是基于人工神经网络,信号从一个神经元进入,经过非线性的激活函数,传 ...

  5. Split-Bregman迭代方式

    本文简要叙述当前流行的Bregman迭代算法的一些原理. 1.简介 近年来,由于压缩感知的引入,L1正则化优化问题引起人们广泛的关注.压缩感知,允许通过少量的数据就可以重建图像信号.L1正则化问题是凸 ...

  6. 启发式算法求解混合整数线性优化问题—— 生产计划安排和资源分配

    问题描述和范围限定: 生产计划安排分为两种:静态和动态计划. 静态计划生成的时间距离实际生产时间较长,以假设所有预设条件都满足为前提,在给定优化目标下(比如最小延迟,最低库存金额,etc.)寻找最优计 ...

  7. ESL第十七章 无向图模型 学习/推断/成对马尔可夫独立/全局马尔可夫性、协方差图/高斯图/修改回归算法/图结构估计/图lasso、【受限】玻尔兹曼机/泊松对数线性建模/迭代比例过滤/对比散度

    目录 17.1 导言 17.2 马尔可夫图及其性质 17.3 连续变量的无向图模型 17.3.1 图结构已知的参数估计 17.3.2 估计图结构 17.4 离散变量的无向图模型 17.4.1 图结构已 ...

  8. 机器学习最优化算法的演变,FTRL一路走来,从LR - SGD - TG - FOBOS - RDA - FTRL

    本文会尝试总结FTRL的发展由来,总结从LR -> SGD -> TG -> FOBOS ->  RDA -> FTRL 的发展历程.本文的主要目录如下: 一.  LR模 ...

  9. 八种常见回归算法解析及代码

    目录 一.线性回归 1.最小二乘法 -导数/偏导为0求参数 最小二乘法求解参数​优缺点 2.迭代求解参数​-梯度下降.坐标轴下降.最小角回归 2.1使用梯度下降-对回归系数中w的每个元素分别求偏导并乘 ...

  10. 最优化方法:L1和L2正则化regularization

    http://blog.csdn.net/pipisorry/article/details/52108040 机器学习和深度学习常用的规则化方法之一:L范数正则化(规格化). 一般来说,监督学习可以 ...

最新文章

  1. Servlet----ServletContext
  2. 获取磁盘空间大小计算成看k,m,G
  3. Python面向对象:反射(hasattr和getattr和setattr和delattr)
  4. Safari 10默认禁用Flash插件
  5. 实验吧Web-易-天网管理系统(php弱类型,==号)
  6. 丽水数据可视化设计价格_B端产品设计数据可视化图表选择篇
  7. 转Git学习碰到的问题
  8. Linux使用Mac键盘,System76 推出 Linux 键盘 看完手痒了!
  9. java笔试面试题---基础部分4
  10. android 表情变小了,别羡慕了!安卓微信表情包上限也变成999了!
  11. 西子奥的斯服务器显示dlf,OTIS奥的斯XIOTIS西子奥的斯E311故障查询和故障代码(全).pdf...
  12. Python制作经典的吃豆豆小游戏
  13. 【笔记】Robust High-Resolution Video Matting with Temporal Guidance
  14. notepad++打开bin文件
  15. 【力扣时间】【825】【中等】适龄的朋友
  16. 【机器学习面试】百面机器学习笔记和问题总结+扩展面试题
  17. 有限差分方法的matlab编程,有限差分方法的MATLAB编程(1)
  18. 华为鸿蒙2.0开发文档及API
  19. pip 在windows下的更新升级
  20. 主机和虚拟机通过虚拟串口通信

热门文章

  1. python天勤金叉编程代码大全_天勤终端数据解决方案
  2. 财务数据填报怎样做?用这个报表工具轻松搞定!_光点科技
  3. SW3518快充方案
  4. html mebed高度问题,高中英语中最易犯的100个错误,看看你有多少?
  5. doctor技术基础
  6. html表单页面css样式代码,前端html表单与css样式(示例代码)
  7. eclipse git reset文件
  8. 微信墙java源码_高仿微信java代码
  9. 离线语音遥控器控制红外设备
  10. 搭建内网DNS服务器教程