次梯度(subgradient)方法
写在前面
本篇博客来自其他几篇博客的整合(详见参考文献),主要是提取了一些利于自己理解的小点。
一、为什么需要次梯度方法
次梯度方法是传统梯度下降算法的拓展,传统梯度下降算法是为了解决可导凸函数的问题,而次梯度方法主要是为了解决不可导梯度的问题。但是其算法收敛速度会相对较慢。
二、次梯度的定义
次梯度是指对于函数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)方法相关推荐
- python实现次梯度(subgradient)和近端梯度下降法 (proximal gradient descent)方法求解L1正则化
l1范数最小化 考虑函数,显然其在零点不可微,其对应的的次微分为: 注意,的取值为一个区间. 两个重要定理: 1)一个凸函数,当且仅当,为全局最小值,即 为最小值点 : 2)为函数(不一定是凸函数) ...
- 【机器学习】次梯度(subgradient)方法
次梯度方法(subgradient method)是传统的梯度下降方法的拓展,用来处理不可导的凸函数.它的优势是比传统方法处理问题范围大,劣势是算法收敛速度慢.但是,由于它对不可导函数有很好的处理方法 ...
- 支持向量机 (三): 优化方法与支持向量回归
拉格朗日乘子法 - KKT条件 - 对偶问题 支持向量机 (一): 线性可分类 svm 支持向量机 (二): 软间隔 svm 与 核函数 支持向量机 (三): 优化方法与支持向量回归 优化方法 一.S ...
- 深度学习中的激活函数与梯度消失
转载请注明出处:http://www.cnblogs.com/willnote/p/6912798.html 前言 深度学习的基本原理是基于人工神经网络,信号从一个神经元进入,经过非线性的激活函数,传 ...
- Split-Bregman迭代方式
本文简要叙述当前流行的Bregman迭代算法的一些原理. 1.简介 近年来,由于压缩感知的引入,L1正则化优化问题引起人们广泛的关注.压缩感知,允许通过少量的数据就可以重建图像信号.L1正则化问题是凸 ...
- 启发式算法求解混合整数线性优化问题—— 生产计划安排和资源分配
问题描述和范围限定: 生产计划安排分为两种:静态和动态计划. 静态计划生成的时间距离实际生产时间较长,以假设所有预设条件都满足为前提,在给定优化目标下(比如最小延迟,最低库存金额,etc.)寻找最优计 ...
- ESL第十七章 无向图模型 学习/推断/成对马尔可夫独立/全局马尔可夫性、协方差图/高斯图/修改回归算法/图结构估计/图lasso、【受限】玻尔兹曼机/泊松对数线性建模/迭代比例过滤/对比散度
目录 17.1 导言 17.2 马尔可夫图及其性质 17.3 连续变量的无向图模型 17.3.1 图结构已知的参数估计 17.3.2 估计图结构 17.4 离散变量的无向图模型 17.4.1 图结构已 ...
- 机器学习最优化算法的演变,FTRL一路走来,从LR - SGD - TG - FOBOS - RDA - FTRL
本文会尝试总结FTRL的发展由来,总结从LR -> SGD -> TG -> FOBOS -> RDA -> FTRL 的发展历程.本文的主要目录如下: 一. LR模 ...
- 八种常见回归算法解析及代码
目录 一.线性回归 1.最小二乘法 -导数/偏导为0求参数 最小二乘法求解参数优缺点 2.迭代求解参数-梯度下降.坐标轴下降.最小角回归 2.1使用梯度下降-对回归系数中w的每个元素分别求偏导并乘 ...
- 最优化方法:L1和L2正则化regularization
http://blog.csdn.net/pipisorry/article/details/52108040 机器学习和深度学习常用的规则化方法之一:L范数正则化(规格化). 一般来说,监督学习可以 ...
最新文章
- Servlet----ServletContext
- 获取磁盘空间大小计算成看k,m,G
- Python面向对象:反射(hasattr和getattr和setattr和delattr)
- Safari 10默认禁用Flash插件
- 实验吧Web-易-天网管理系统(php弱类型,==号)
- 丽水数据可视化设计价格_B端产品设计数据可视化图表选择篇
- 转Git学习碰到的问题
- Linux使用Mac键盘,System76 推出 Linux 键盘 看完手痒了!
- java笔试面试题---基础部分4
- android 表情变小了,别羡慕了!安卓微信表情包上限也变成999了!
- 西子奥的斯服务器显示dlf,OTIS奥的斯XIOTIS西子奥的斯E311故障查询和故障代码(全).pdf...
- Python制作经典的吃豆豆小游戏
- 【笔记】Robust High-Resolution Video Matting with Temporal Guidance
- notepad++打开bin文件
- 【力扣时间】【825】【中等】适龄的朋友
- 【机器学习面试】百面机器学习笔记和问题总结+扩展面试题
- 有限差分方法的matlab编程,有限差分方法的MATLAB编程(1)
- 华为鸿蒙2.0开发文档及API
- pip 在windows下的更新升级
- 主机和虚拟机通过虚拟串口通信