引言:在解决无约束问题时,经常用到的一类算法是最速下降法,在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法。在求解损失函数的最小值时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。反过来,如果我们需要求解损失函数的最大值,这时就需要用梯度上升法来迭代了。在机器学习中,基于基本的梯度下降法发展了两种梯度下降方法,分别为随机梯度下降法和批量梯度下降法。本节主要介绍一下最速下降法。
本篇主要讨论如下的优化模型:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
其中是
的实值连续函数,通常假定其具有二阶连续偏导数,对于
可以等价的转化为
,所以下面仅讨论极小化问题。
? ? ? ?最速下降法由于只考虑当前下降最快而不是全局下降最快,在求解非线性无约束问题时,最重要的是得到每一步迭代的方向和每一步下降的长度
。考虑到函数
在点
处沿着方向
的方向导数
,其意义是
在点
处沿
的变化率。当
连续可微时,方向导数为负,说明函数值沿着该方向下降;方向导数越小(负值),表明下降的越快,因此确定搜索方向
的一个想法就是以
在点
方向导数最小的方向作为搜索方向。
? ? ? ? ?设方向为单位向量,
,从点
按方向
,步长
进行搜索得到下一点
,对该式进行泰勒展开得到:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
可以得到处的变化率:
? ? ? ? ? ? ? ? ? ? ? ? ?
容易看出来在下降最快就是要在
出的变化率最大,所以就是要使
最小(
),而对于
,要使其最小就是当
时,
,即可以确定最速下降方向为
,这也是最速下降法名字的由来。
最速下降法采用的搜索步长通常采取的策略是精确步长搜索法,即:,通过求该式子的最小值点来求取步长,一般有:
? ?,该式表明
和
是正交的。在这里我没有用该方法,而是用一维搜索方法(黄金分割法<0.618法>)来近似找到最小值点,通过自己编程实现一维搜索更好的理解这个过程,最终的结果与精确搜索几乎一致。
求解问题:? ? ?
最速下降法的具体步骤为:
1. 选定初始点,
,给定精度要求
。
2.计算,若
,则停止,否则令
;
3. 在处沿方向
作线搜索得
,
,返回2.
用最速下降法求解无约束非线性问题的最小值点:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
其中。
在这里为了直观的理解问题,我们对该问题进行可视化,分别取
步长为0.2。绘制图像如下:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
解:在这里先用精确搜索求出最小值点,其后再用一维搜索进行验证。
(1)?
(2)
(3)
(4)运用精确搜索求步长
,可得
,
(5)
? 同理转回(2)可以一直迭代回去一直到满足条件为止,得到最优解为,
优点:?
(1)每一步迭代简单,对初始点要求少?
缺点:?
(1)由于是对每一步进行最优迭代,但是整体的收敛下降速度不一定最快。?
(2)用最速下降法求最优问题,迭代路径呈直角锯齿形如下图,开始的几步迭代很快,但越接近最优点收敛速度越慢
用matlab编程来求解,由于我在这里运用平分法确定极小值区间,然后用黄金分割法求的极小值,代码比较仔细,最终结果如下:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?编辑:高宇航
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
联系我们
电话:400-123-4567
手机:138 0000 0000
公司地址
地址:广东省广州市天河区88号
公司名称
顺盈平台官方指定注册站