梯度下降法学习总结
梯度下降法简介
梯度下降法是求解无约束优化问题的迭代算法,每一步要求解目标函数的梯度向量。
假设目标函数
f(x)
在实数域上具有一阶连续偏导数,无约束最优化问题为:
minx∈Rnf(x)
。设
x∗
是目标函数极小值点。选取适当的初值
x(0)
,不断迭代,更新
x
的值,直到梯度收敛/目标函数值收敛/x的值收敛。在迭代的每一步,以负梯度方向更新x的值(因为函数值沿负梯度方向下降最快)。 设第k此迭代值为
f(x)=f(x(k))+gTk(x−x(k))
其中 gk 是f f(x) 在 x(k) 的梯度。
用以下方法求下一次迭代值:
f(x(k)+λk∗(−gk))=minλ≥0f(x(k)+λ∗(−gk))
求出使得 f(x(k)+λk∗(−gk)) 最小的 λk 后,令
x(k+1)=x(k)+λk∗(−gk)
梯度下降法特点
优点:
实现简单;
目标函数是凸函数时,能达到全局最优。
缺点:
求梯度比较费时,收敛速度一般;
只能解无约束的优化问题;
目标函数非凸时,陷入局部最优。
迭代算法
输入:目标函数
f(x)
,梯度函数
g(x)
,计算精度
ε
;
输出:
f(x)
极小值点
x∗
。
- k=0 ;随机产生 x(0)∈R ;
- 计算 x(k) 处的函数值 f(x(k))
- 计算
x(k)
处的梯度值
g(x(k))
;如果
g(x(k))<ε
,停止迭代,令
x∗=x(k+1)
;否则,求
λk
,使得
f(x(k)+λk∗(−gk))=minλ≥0f(x(k)+λ∗(−gk))
- x(k+1)=x(k)+λk∗(−gk) ,计算 x(k+1) 处的函数值 f(x(k+1)) ;如果 ||f(x(k+1))−f(x(k))||<ε 或者 ||x(k+1)−x(k)||<ε ,停止迭代;令 x∗=x(k+1)
- 否则,令 k=k+1 ,转3