优化算法之——最速下降法
信息来源:网络    时间:2024-04-07 23:07

引言:在解决无约束问题时,经常用到的一类算法是最速下降法,在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法。在求解损失函数的最小值时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。反过来,如果我们需要求解损失函数的最大值,这时就需要用梯度上升法来迭代了。在机器学习中,基于基本的梯度下降法发展了两种梯度下降方法,分别为随机梯度下降法和批量梯度下降法。本节主要介绍一下最速下降法。

本篇主要讨论如下的优化模型:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?緻set{x\epsilon R^{2}}{min}f(x)

其中fx的实值连续函数,通常假定其具有二阶连续偏导数,对于maxf(x)可以等价的转化为min(-f(x)),所以下面仅讨论极小化问题。

? ? ? ?最速下降法由于只考虑当前下降最快而不是全局下降最快,在求解非线性无约束问题时,最重要的是得到每一步迭代的方向d^{(k)}和每一步下降的长度\lambda ^{_{(k)}}。考虑到函数f(x)在点x^_{(k)}处沿着方向d的方向导数f_{d}(x^{(k)})=	riangledown f(x^{(k)})^{T}d,其意义是f(x)在点x^{(k)}处沿d的变化率。当f连续可微时,方向导数为负,说明函数值沿着该方向下降;方向导数越小(负值),表明下降的越快,因此确定搜索方向d^{(k)}的一个想法就是以f(x)在点x^{(k)}方向导数最小的方向作为搜索方向。

1.1 搜索方向d^{(k)}的确定

? ? ? ? ?设方向d为单位向量,\left \| d \right \|=1,从点x^{(k)}按方向d,步长\lambda进行搜索得到下一点x^{(k+1)}=x^{(k)}+\lambda_{k}d^{(k)},对该式进行泰勒展开得到:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? f(x^{(k)}+\lambda_{k} d^{(k)})=f(x^{(k)})+\lambda_{k} 	riangledown f(x^{(k)})^{T}+o(\lambda )

可以得到x^{(k)}处的变化率:

? ? ? ? ? ? ? ? ? ? ? ? ? \lim_{t\rightarrow 0}\frac{f(x^{(k)}+\lambda_{k} d^{(k)})-f(x^{(k)}))}{\lambda_{k} }=\lim_{t\rightarrow 0}\frac{\lambda_{k} 	riangledown f(x^{(k)})^{T}d^{(k)}+o(\lambda )}{\lambda_{k} }=	riangledown f(x^{(k)})^Td^{(k)}

容易看出来在x^{(k)}下降最快就是要在x^{(k)}出的变化率最大,所以就是要使	riangledown f(x^{(k)})^Td^{(k)}最小(	riangledown f(x^{(k)})^Td^{(k)}<0),而对于

	riangledown f(x^{(k)})^Td^{(k)}=\left \|	riangledown f(x^{(k)}) \right \|\cdot \left \| d^{(k)} \right \|\cdot cos	heta,要使其最小就是当cos	heta =-1时,

d^{(k)}=-\frac{	riangledown f(x^{(k)})}{	riangledown \left \| f(x^{(k)}) \right \|},即可以确定最速下降方向为-	riangledown f(x^{(k)}),这也是最速下降法名字的由来。

1.2 步长\lambda^{(k)}的确定

最速下降法采用的搜索步长通常采取的策略是精确步长搜索法,即:\lambda_{k}=argminf(x^{(k)}+\lambda_{k}d^{(k)}),通过求该式子的最小值点来求取步长,一般有:

? ?\frac{df(x^{(k)}+\lambda d^{(k)})}{d\lambda}=d^{(k)}	riangledown f(x^{(k)})=0,该式表明d^{(k)}d^{(k+1)}是正交的。在这里我没有用该方法,而是用一维搜索方法(黄金分割法<0.618法>)来近似找到最小值点,通过自己编程实现一维搜索更好的理解这个过程,最终的结果与精确搜索几乎一致。

求解问题:? ? ?緻set{x\epsilon R^{2}}{min}f(x)

最速下降法的具体步骤为:

1. 选定初始点x^{(k)}k=1,给定精度要求\varepsilon >0

2.计算	riangledown f(x^{(k)}),若\left \| 	riangledown f(x^{(k)}) \right \|<\varepsilon,则停止,否则令d^{(k)}=-	riangledown f(x^{(k)})

3. 在x^{(k)}处沿方向d^{(k)}作线搜索得x^{(k+1)}=x^{(k)}+\lambda_{k}d^{(k)}k=k+1,返回2.

3.例子

用最速下降法求解无约束非线性问题的最小值点:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?minf(x)=x_{1}^{2}+2x_{2}^{2}-2x_{1}x_{2}-2x_{2}

其中x=(x_{1},x_{2})^{T},x^{(0)}=(0,0)^{T}

在这里为了直观的理解问题,我们对该问题进行可视化,x_{1},x_{2}分别取[-10,10]步长为0.2。绘制图像如下:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

解:在这里先用精确搜索求出最小值点,其后再用一维搜索进行验证。

(1)?	riangledown f(x)=(2x_{1}-2x_{2},4x_{2}-2x_{1}-2)^{T}

(2)	riangledown f(x^{(0)})=(0,-2)^{T}

(3)d^{(0)}=-	riangledown f(x^{(0)})=(0,2)^{T}

(4)运用精确搜索求步长\lambda

\lambda=argminf(x^{(0)}+\lambda d^{(0)}),可得\lambda=1/4

(5)x^{(1)}=x^{(0)}+\lambda d^{(0)}=(0,1)^{T}

? 同理转回(2)可以一直迭代回去一直到满足条件为止,得到最优解为x^{*}=(1,1)^{T}y^{*}=-1

4.优缺点

优点:?
(1)每一步迭代简单,对初始点要求少?
缺点:?
(1)由于是对每一步进行最优迭代,但是整体的收敛下降速度不一定最快。?
(2)用最速下降法求最优问题,迭代路径呈直角锯齿形如下图,开始的几步迭代很快,但越接近最优点收敛速度越慢

用matlab编程来求解,由于我在这里运用平分法确定极小值区间,然后用黄金分割法求的极小值,代码比较仔细,最终结果如下:

 
 
 
 
 
 
 

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?编辑:高宇航

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

| 首页 | 关于顺盈娱乐 | 顺盈新闻 | 顺盈注册 | 顺盈登录 | 顺盈平台 | 顺盈代理 | 顺盈APP下载 |

ICP备案:粤IP******** Copyright © 2002-2022 顺盈平台官方指定注册站 版权所有

平台注册入口