临近梯度下降算法(Proximal Gradient Method)的推导以及优势
邻近梯度下降法
对于无约束凸优化问题,当目标函数可微时,可以采用梯度下降法求解;当目标函数不可微时,可以采用次梯度下降法求解;当目标函数中同时包含可微项与不可微项时,常采用邻近梯度下降法求解。上述三种梯度算法均属于离线批处理类型算法,在大规模的数据问题中,每次迭代都需要计算整个数据集梯度,因而需要较大的计算代价和存储空间。在线邻近梯度法(Online Proximal Gradient,OPG)是随即优化算法与临近梯度算法的结合,是一种典型的随机优化方法,以单个或小批量采样数据而实现数据实时处理。
考虑如下目标函数可分解为两部分的凸优化问题:
\begin{equation}\label{E1}
\min _{x} f(x)+g(x),
\end{equation}
其中$x$为优化变量,$f(x)$为光滑可微凸损失函数,$g(x)$是不可微的凸函数,一般为正则项。邻近梯度算法对其中的不可微项$g(x)$保持不变,可微项$f(x)$在$k$步迭代值$x_k$处做一阶Taylor展开,并加入二阶邻近项,对\eqref{E1}式的邻近梯度下降为:
\begin{aligned}
x_{k+1} &=\underset{u}{\arg \min } g(u)+f\left(x_{k}\right)+\nabla f\left(x_{k}\right)^{T}\left(u-x_{k}\right)+(1 / 2 \tau)\left\|u-x_{k}\right\|_{2}^{2} \\
&=\underset{u}{\operatorname{argmin}} g(u)+\frac{1}{2 \tau} \| u-\left.\left(x_{k}-t \nabla f\left(x_{k}\right)\right)\right|_{2} ^{2} \\
&=\operatorname{prox}_{\tau g}\left(x_{k}-\tau \nabla f\left(x_{k}\right)\right)
\end{aligned}
其中$\tau$为梯度步长,$\operatorname{prox}_{\tau g}(\cdot)$为邻近算子,根据$g(x)$形式有不同的定义,当$g(x)$为0时,邻近梯度算法退化为梯度下降算法;当$g(x)$为示性函数时,邻近算子为投影算符;当$g(x)$为$l_1$范数时,邻近算子为软阈值收缩算子。
在线邻近梯度下降法中,$f(x)$可以为不可微凸函数,将其利用次梯度线性化处理,同时也加入邻近项,可得:
\begin{equation}\label{E3}
x_{k+1}=\arg \min \left\{f_{k}^{T} x+g(x)+\left(1 / 2 \eta_{k}\right)\left\|x-x_{k}\right\|_{2}^{2}\right\}
\end{equation}
其中,次梯度$f_k$为$f(x)$的在$k$步迭代值$x_k$处近似,线性化处理目的是简化计算;$\left(1 / 2 \eta_{k}\right)\left\|x-x_{k}\right\|_{2}^{2}$为在$x_k$处的二次正则项,也称邻近项,目的是使得$x_{k+1}$和$x_{k}$相距较近,同时随着迭代收敛,$x_{k+1}$逐渐接近$x_{k}$,邻近项逐渐接近于0,所以可认为邻近项的目的是加快收敛,同时不会影响最终结果;$\eta_{k}>0$为邻近步长参数。
关于次梯度(Subgradient)
临近梯度下降算法(Proximal Gradient Method)的推导以及优势的更多相关文章
- 梯度下降算法(Gradient Descent)
近期在搞论文,须要用梯度下降算法求解,所以又一次整理分享在这里. 主要包含梯度介绍.公式求导.学习速率选择.代码实现. 梯度下降的性质: 1.求得的解和选取的初始点有关 2.能够保证找到局部最优解,由 ...
- 梯度下降算法(gradient descent)
简述 梯度下降法又被称为最速下降法(Steepest descend method),其理论基础是梯度的概念.梯度与方向导数的关系为:梯度的方向与取得最大方向导数值的方向一致,而梯度的模就是函数在该点 ...
- 梯度下降算法的一点认识(Ng第一课)
昨天开始看Ng教授的机器学习课,发现果然是不错的课程,一口气看到第二课. 第一课 没有什么新知识,就是机器学习的概况吧. 第二课 出现了一些听不太懂的概念.其实这堂课主要就讲了一个算法,梯度下降算法. ...
- Proximal Gradient Descent for L1 Regularization(近端梯度下降求解L1正则化问题)
假设我们要求解以下的最小化问题: $min_xf(x)$ 如果$f(x)$可导,那么一个简单的方法是使用Gradient Descent (GD)方法,也即使用以下的式子进行迭代求解: $x_{k+1 ...
- 梯度下降算法实现原理(Gradient Descent)
概述 梯度下降法(Gradient Descent)是一个算法,但不是像多元线性回归那样是一个具体做回归任务的算法,而是一个非常通用的优化算法来帮助一些机器学习算法求解出最优解的,所谓的通用就是很 ...
- Logistic回归Cost函数和J(θ)的推导(二)----梯度下降算法求解最小值
前言 在上一篇随笔里,我们讲了Logistic回归cost函数的推导过程.接下来的算法求解使用如下的cost函数形式: 简单回顾一下几个变量的含义: 表1 cost函数解释 x(i) 每个样本数据点在 ...
- 深度学习课程笔记(四)Gradient Descent 梯度下降算法
深度学习课程笔记(四)Gradient Descent 梯度下降算法 2017.10.06 材料来自:http://speech.ee.ntu.edu.tw/~tlkagk/courses_MLDS1 ...
- flink 批量梯度下降算法线性回归参数求解(Linear Regression with BGD(batch gradient descent) )
1.线性回归 假设线性函数如下: 假设我们有10个样本x1,y1),(x2,y2).....(x10,y10),求解目标就是根据多个样本求解theta0和theta1的最优值. 什么样的θ最好的呢?最 ...
- 梯度下降算法(Gradient descent)GD
1.我们之前已经定义了代价函数J,可以将代价函数J最小化的方法,梯度下降是最常用的算法,它不仅仅用在线性回归上,还被应用在机器学习的众多领域中,在后续的课程中,我们将使用梯度下降算法最小化其他函数,而 ...
随机推荐
- centos下安装ansible自动化工具(超详细,包含基本使用)
ansible官网:https://www.ansible.com 众所周知,ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef ...
- vscode golang 不能自动补全问题
问题描述: 使用vscode编辑go语言时,有时候会莫名其妙的代码不能自动补全,struct的属性值不能自动提示,这时候如果重新启动vscode也没有效果,就可能是gocode插件出了问题或者有了更新 ...
- python学习-Day24
目录 今日内容详细 主菜 : ATM+购物车作业 项目开发流程 需求分析 架构设计 分组开发 项目测试 交付上线 需求分析 提炼项目功能 项目大致技术栈 架构设计 编程历经过程 三层架构 将ATM分为 ...
- Protobuf在Python中的应用(序列化数据)
1.了解Protobuf Protocol Buffer是Google的语言中立的,平台中立的,可扩展机制的,用于序列化结构化数据 - 对比XML,但更小,更快,更简单.您可以定义数据的结构化,然后可 ...
- Android8.0 后台服务保活的一种思路
原文地址:Android8.0 后台服务保活的一种思路 | Stars-One的杂货小窝 项目中有个MQ服务,需要一直连着,接收到消息会发送语音,且手机要在锁屏也要实现此功能 目前是使用广播机制实现, ...
- 老生常谈系列之Aop--Spring Aop原理浅析
老生常谈系列之Aop--Spring Aop原理浅析 概述 上一篇介绍了AspectJ的编译时织入(Complier Time Weaver),其实AspectJ也支持Load Time Weaver ...
- Volatile的学习
首先先介绍三个性质 可见性 可见性代表主内存中变量更新,线程中可以及时获得最新的值. 下面例子证明了线程中可见性的问题 由于发现多次执行都要到主内存中取变量,所以会将变量缓存到线程的工作内存,这样当其 ...
- spring boot validation
先简单打个草稿 @NotNull 不能为 null @NotEmpty 不能为空(允许空格) ,只能用于字符串 @NotBlank 不能为空(trim()后) 用于验证字符串不为空且不能全为空格,只能 ...
- 【产品】如何写好APP描述
你有没有想过越是需要花钱购买的 App,用户会更认真阅读你的 App描述?本文列举了15个 app 描述,看看哪些是我们以前忽略了的,哪些是我们也犯过的错误.图中有红色背景的文字是需要强调的地方,这些 ...
- SpirngBoot 错误(1)
对于出现该错: Error starting ApplicationContext. To display the conditions report re-run your application ...