持续填坑中。。。
假设多元目标函数
一些经典的无约束优化问题,例如:
1、数据拟合,类似最小二乘法,但是我们想用一个指数来拟合:
2、假设数据
正态分布模型:
代价函数:
要求估算出
3、找到一堆数据的几何中心,几何中心满足跟所有多元数据的二范式最小:
一、分块松弛法
对于多元目标函数
分块松弛法一般用在类似例3的k均值聚类问题中,作为初始中心,可以随机地选个k不同的点
二、梯度下降法
1、最速下降法 (steepest descent)
梯度下降法 (gradient descent)或最速下降法 (steepest descent)是求解无约束 最优化问题的一种最常用的方法,具有实现简单的优点。梯度下降法是迭代算法,每一步需要求解目标函数的梯度向量。
选取适当的初值
具体方法:
由于
求出第k+1次迭代值
其中,
一般情况:如果其中
当目标函数是凸函数时,梯度下降法的解是全局最优解。一般情况下,其解不保证是全局最优解。梯度下降法的收敛速度也未必是很快的。
在算法中,“迭代收敛”可以用梯度向量长度小于某个预定值, 或者两次迭代间函数值变化小于某个预定值来判断。 在适当正则性条件下, 最速下降法可以收敛到局部极小值点并且具有线性收敛速度。 但是, 最速下降法连续两次的下降方向
一般大家最常用的就是最速梯度下降法,但是也存在各种方法变种,例如:
2、随机梯度法
例如之前提到的第二类问题,使用正态分布来拟合大量数据的分布情况,如果对代价函数使用梯度法求解极小值,当样本量
核心思想:在迭代的第k步, 可以从
3、共轭梯度法
最速下降法收敛速度较慢, 而且越靠近最小值点步长越短, 速度越慢。 对于一个函数曲面为狭长的山谷形状的目标函数, 为了达到山谷的最低点, 会沿相互正交的梯度方向反复跳跃。
一种解决的方法是前面所说的不使用最优一维搜索而是使用预先确定的步长或步长序列, 还有一种方法是将两步之间的梯度正交, 推广到两步之间为“共轭”关系,即对某个矩阵使得
这种方法的来源是对目标函数
而为了将一个d元的凸二次多项式达到最小值点, 只要从负梯度方向出发,沿着d个相互都关于
对d元凸二次多项式,其中的系数
4、动量法
loading
5、超梯度下降法
loading
三、牛顿法
1、概述
除了之前说的比较常用的各种梯度法,牛顿法也是机器学习中用的比较多的一种优化算法。如果希望迭代函数
牛顿法的基本思想是利用迭代点
2、原理
基本思想是:设法将一个非线性方程
(1)首先是一维情形:
对于一个需要求解的优化函数
对上式求导并令其为0,则为
即得到
几何解释:
Newton迭代法求解根的几何解释如下图所示:
方程
因此,Newton法也叫切线法,因为它是沿着曲线
Newton迭代法求解最优化的几何解释如下图所示:
设
(2)推广到多维情形:
假设
在点
若
所以
处达到。这一步需要用的Hessian矩阵的逆矩阵。所以牛顿法取初值
进行迭代,直至收敛。 收敛的判断准则可以取为
如果初值接近于最小值点并且目标函数满足一定正则性条件, 牛顿法有二阶收敛速度。但是问题是Hessian矩阵引入的复杂性,使得牛顿迭代求解的难度大大增加,但是已经有了解决这个问题的办法就是Quasi-Newton methond(拟牛顿法),不再直接计算hessian矩阵,而是每一步的时候使用梯度向量更新hessian矩阵的近似。
3、最速下降法和牛顿法的比较
牛顿法收敛更快,最速梯度法相邻两次迭代的方向互相垂直,这种锯齿现象会影响收敛速度!
从本质上去看,牛顿法是二阶收敛,梯度下降是一阶收敛,所以牛顿法就更快。 如果更通俗地说的话,比如你想找一条最短的路径走到一个盆地的最底部,梯度下降法每次只从你当前所处位置选一个坡度最大的方向走一步,牛顿法在选择方向时,不仅会考虑坡度是否够大,还会考虑你走了一步之后,坡度是否会变得更大。所以,可以说牛顿法比梯度下降法看得更远一点,能更快地走到最底部。(牛顿法目光更加长远,所以少走弯路;相对而言,梯度下降法只考虑了局部的最优,没有全局思想。) 根据wiki上的解释,从几何上说,牛顿法就是用一个二次曲面去拟合你当前所处位置的局部曲面,而梯度下降法是用一个平面去拟合当前的局部曲面,通常情况下,二次曲面的拟合会比平面更好,所以牛顿法选择的下降路径会更符合真实的最优下降路径。
四、拟牛顿法
在牛顿法的迭代中,需要计算黑塞矩阵的逆矩阵
1、拟牛顿条件(Secant equation)
取
得
记 ,
或者
所以在拟牛顿法中,选择
为什么要满足正定条件?根据迭代公司和二项泰勒展开的
当
所以按照拟牛顿挑选选择
2、DFP算法 (Davidon-Fletcher-Powell)
DFP算法用
为使
事实上,不难找出这样的
所以这里我们直接给出计算公式:
可以证明,如果初始矩阵
3、BFGS拟牛顿法
BFGS算法用
这时,相应的拟牛顿条件是
考虑使
这里我们直接给出计算公式:
可以证明,如果初始矩阵
若记
这就是BFGS算法关于 Gk 的迭代公式。
参考
- 无约束优化方法-统计计算
- 统计学习方法(第二版)-李航
- Newton’s Method Optimization: Derivation and How It Works
- 【下降算法】最速下降法、Newton法、共轭梯度法