从梯度下降到Fista
前言:
FISTA(A fast iterative shrinkage-thresholding algorithm)是一种快速的迭代阈值收缩算法(ISTA)。FISTA和ISTA都是基于梯度下降的思想,在迭代过程中进行了更为聪明(smarter)的选择,从而达到更快的迭代速度。理论证明:FISTA和ISTA的迭代收敛速度分别为O(1/k2)和O(1/k)。
本篇博文先从解决优化问题的传统方法“梯度下降”开始,然后引入ISTA,最后再上升为FISTA。文章主要参考资料如下:
[1] A Fast Iterative Shrinkage-Thresholding Algorithm for Linear Inverse Problems。
[2] Proximal Gradient Descent for L1 Regularization
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------我是分割线-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
正文:
考虑以下线性转换问题:b = Ax + w (1)
例如在图像模糊问题中,A为模糊模板(由未模糊图像通过转换而来),b为模糊图像,w为噪声。并且,A和b已知,x为待求的系数。
求解该问题的的传统方法为最小二乘法,思想很简单粗暴:使得重构误差||Ax-b||2最小。即:
对f(x) = ||Ax-b||2求导,可得其导数为:f'(x) = 2AT(Ax-b)。对于该问题,令导数为零即可以取得最小值(函数f(x)为凸函数,其极小值即为最小值)。
1)如果A为非奇异矩阵,即A可逆的话,那么可得该问题的精确解为x=A-1b。
2)如果A为奇异矩阵,即A不可逆,则该问题没有精确解。退而求其次,我们求一个近似解就好,||Ax-b||2<=ϵϵ。
其中,||x||1为惩罚项,用以规范化参数x。该例子使用L1范数作为惩罚项,是希望x尽量稀疏(非零元素个数尽可能少),即b是A的一个稀疏表示。||Ax-b||2<=ϵ则为约束条件,即重构误差最小。问题(3)也可以描述为:
式子(4)即为一般稀疏表示的优化问题。希望重构误差尽可能小,同时参数的个数尽可能少。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------我是分割线-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
考虑更为一般的情况,我们来讨论梯度下降法。有无约束的优化问题如下:
梯度下降法基于这样的观察:如果实值函数F(x)在点a处可微且有定义,那么函数F(x)在点a沿着梯度相反的方向−𝛻F(𝑎)-∇F(a)下降最快。
基于此,我们假设f(x)连续可微(continuously differentiable)。如果存在一个足够小的数值t>0使得x2 = x1 - t∇F(a),那么:
F(x1) >= F(x2)
梯度下降法的核心就是通过式子(6)找到序列{xk},使得F(xk) >= F(xk-1)。
下图详细说明了梯度下降的过程:
从上图可以看出:初始点不同,获得的最小值也不同。因为梯度下降法求解的是局部最小值,受初值的影响较大。如果函数f(x)为凸函数的话,则局部最小值亦为全局最小值。这时,初始点只对迭代速度有影响。
再回头看一下式子(6),我们使用步长tk和导数∇F(xk)来控制每一次迭代时x的变化量。再看一下上面那张图,彩色缤纷那张。对于每一次迭代,我们当然希望F(x)的值降得越快越好,这样我们就能更快速得获得函数的最小值。因此,步长tk的选择很重要。
如果步长tk太小,则找到最小值的迭代次数非常多,即迭代速度非常慢,或者说迭代的收敛速度很慢;而步长太大的话,则会出现overshoot the minimum的现象,即不断在最小值左右徘徊,跳来跳去的,如下图所示:
然而,tk最后还是作用在xk-1上,得到xk。因此,更为朴素的思想应该是:序列{xk}的个数尽可能小,即每一次迭代步伐尽可能大,函数值减少得尽可能多。那么就是关于序列{xk}的选择了,如何更好的选择每一个点xk,使得函数值更快的趋近其最小值。
ISTA和FISTA求解最小化问题的思想就是基于梯度下降法的,它们的优化在于对{xk}的选择上。这里我们不讲证明,只讲思想。想看证明的话,请看参考资料[1]。
下面来讲ISTA(Iterative shrinkage-thresholding algorithm),即迭代阈值收缩算法。
先从无约束的优化问题开始,即上面的式子(5):
这时候,我们还假设了f(x)满足Lipschitz连续条件,即f(x)的导数有下界,其最小下界称为Lipschitz常数L(f)。这时,对于任意的L>=L(f),有:
(7)
基于此,在点xk附近可以把函数值近似为:
(8)
在梯度下降的每一步迭代中,将点xk-1处的近似函数取得最小值的点作为下一次迭代的起始点xk,这就是所谓的proximal regularization算法(其中,tk=1/L)。
(9)
上面的方法只适合解决非约束问题。而ISTA要解决的可是带惩罚项的优化问题,引入范数规范化函数g(x)对参数x进行约束,如下:
(10)
使用更为一般的二次近似模型来求解上述的优化问题,在点y,F(x) := f(x) + g(x)的二次近似函数为:
(11)
该函数的最小值表示为:
(12)
忽略其常数项f(y)和∇F(y),结合式子(11)和(12),PL(y)可以写成:
(13)
显然,使用ISTA解决带约束的优化问题时的基本迭代步骤为:
(14)
固定步长的ISTA的基本迭代步骤如下(步长t = 1/L(f)):
然而,固定步长的ISTA的缺点是:Lipschitz常数L(f)不一定可知或者可计算。例如,L1范数约束的优化问题,其Lipschitz常数依赖于ATA的最大特征值。而对于大规模的问题,非常难计算。因此,使用以下带回溯(backtracking)的ISTA:
理论证明:ISTA的收敛速度为O(1/k);而FISTA的收敛速度为O(1/k2)。实际应用中,FISTA亦明显快于ISTA。其证明过程还是看这篇文章:[1]。
FISTA与ISTA的区别在于迭代步骤中近似函数起始点y的选择。ISTA使用前一次迭代求得的近似函数最小值点xk-1,而FISTA则使用另一种方法来计算y的位置。理论证明,其收敛速度能够达到O(1/k2)。固定步长的FISTA的基本迭代步骤如下:
当然,考虑到与ISTA同样的问题:问题规模大的时候,决定步长的Lipschitz常数计算复杂。FISTA与ISTA一样,亦有其回溯算法。在这个问题上,FISTA与ISTA并没有区别,上面也说了,FISTA与ISTA的区别仅仅在于每一步迭代时近似函数起始点的选择。更加简明的说:FISTA用一种更为聪明的办法选择序列{xk},使得其基于梯度下降思想的迭代过程更加快速地趋近问题函数F(x)的最小值。
带回溯的FISTA算法基本迭代步骤如下:
值得注意的是,在每一步迭代中,计算近似函数的起止点时,FISTA使用前两次迭代过程的结果xk-1,xk-1,对其进行简单的线性组合生成下一次迭代的近似函数起始点yk。方法很简单,但效果却非常好。当然,这也是有理论支持的。
FISTA算法就介绍到这里啦!如果有什么讲的不够明白的地方,还希望各位看客指点。
从梯度下降到Fista的更多相关文章
- 梯度下降(Gradient Descent)小结
在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法.这里就对梯度下降法做一个完整的总结. 1. 梯度 在微 ...
- 线性回归、梯度下降(Linear Regression、Gradient Descent)
转载请注明出自BYRans博客:http://www.cnblogs.com/BYRans/ 实例 首先举个例子,假设我们有一个二手房交易记录的数据集,已知房屋面积.卧室数量和房屋的交易价格,如下表: ...
- 随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )的公式对比、实现对比[转]
梯度下降(GD)是最小化风险函数.损失函数的一种常用方法,随机梯度下降和批量梯度下降是两种迭代求解思路,下面从公式和实现的角度对两者进行分析,如有哪个方面写的不对,希望网友纠正. 下面的h(x)是要拟 ...
- 为什么是梯度下降?SGD
在机器学习算法中,为了优化损失函数loss function ,我们往往采用梯度下降算法来进行优化.举个例子: 线性SVM的得分函数和损失函数分别为: ...
- Stanford大学机器学习公开课(二):监督学习应用与梯度下降
本课内容: 1.线性回归 2.梯度下降 3.正规方程组 监督学习:告诉算法每个样本的正确答案,学习后的算法对新的输入也能输入正确的答案 1.线性回归 问题引入:假设有一房屋销售的数据如下: 引 ...
- Matlab梯度下降解决评分矩阵分解
for iter = 1:num_iters %梯度下降 用户向量 for i = 1:m %返回有0有1 是逻辑值 ratedIndex1 = R_training(i,:)~=0 ; %U(i,: ...
- 机器学习(一):梯度下降、神经网络、BP神经网络
这几天围绕论文A Neural Probability Language Model 看了一些周边资料,如神经网络.梯度下降算法,然后顺便又延伸温习了一下线性代数.概率论以及求导.总的来说,学到不少知 ...
- 梯度下降之随机梯度下降 -minibatch 与并行化方法
问题的引入: 考虑一个典型的有监督机器学习问题,给定m个训练样本S={x(i),y(i)},通过经验风险最小化来得到一组权值w,则现在对于整个训练集待优化目标函数为: 其中为单个训练样本(x(i),y ...
- (二)深入梯度下降(Gradient Descent)算法
一直以来都以为自己对一些算法已经理解了,直到最近才发现,梯度下降都理解的不好. 1 问题的引出 对于上篇中讲到的线性回归,先化一个为一个特征θ1,θ0为偏置项,最后列出的误差函数如下图所示: 手动求解 ...
随机推荐
- 【工业串口和网络软件通讯平台(SuperIO)教程】四.开发设备驱动
SuperIO相关资料下载:http://pan.baidu.com/s/1pJ7lZWf 1.1 开发准备 把“开发包”内的所有文件复制到项目的“bin”目录下,或项目下的专用生成目录.开发包 ...
- MongoDB基础入门001--安装
关于mongodb的好处,优点之类的这里就不说了,唯一要讲的一点就是mongodb中有三元素:数据库,集合,文档,其中"集合" 就是对应关系数据库中的"表",& ...
- 解决eclipse配置Tomcat时找不到server选项(Mac通用)
集成Eclipse和Tomcat时找不到server选项: 按照网上的步骤如下: 在Eclipse中,窗口(window)——首选项(preferences)——服务器(Server)——运行时环境( ...
- jQuery组件开发之表格隔行选中效果实现
一.效果展示如下 jQuery组件之表格插件源码 //表格选中插件 //方式一 (function($){ var chosTabBgColor = function(options){ //设置默认 ...
- C#通过WMI的wind32 的API函数实现msinfo32的本地和远程计算机的系统日志查看功能
先不说如何实现,先来看看效果图: 读取远程的需要提供下远程的计算用户名和密码即可. 如何实现这个代码功能,请看如下代码部分: 实体类: using System; using System.Colle ...
- IOS开发基础知识--碎片16
1:Objective-C语法之动态类型(isKindOfClass, isMemberOfClass,id) 对象在运行时获取其类型的能力称为内省.内省可以有多种方法实现. 判断对象类型 -(BOO ...
- 【代码笔记】iOS-获取系统完成任务所需的后台时间
一,代码. AppDelegate.h #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplica ...
- python之ATM
每次做一点就发出来,大神不要嫌重复 2016/11/4 今天来搞ATM,反正逃不了的,说来惭愧,这个作业是我10/4号20天前拿到的,当时是万脸蒙比的,今天又做了一点,现在算是百脸蒙比吧. 一.需求: ...
- linux 学习随笔-shell基础知识
1:用户的shell历史命令保存在home/username/.bash_history中 #!! 执行用户的上一条命令 #!pw 执行命令历史中最近一次以pw开头的命令 2:'*'来匹配零或多个 ...
- Nginx搭建反向代理服务器过程详解
一.反向代理:Web服务器的“经纪人” 1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从 ...