梯度下降法学习总结
梯度下降法简介
梯度下降法是求解无约束优化问题的迭代算法,每一步要求解目标函数的梯度向量。
假设目标函数f(x)在实数域上具有一阶连续偏导数,无约束最优化问题为:
minx∈Rnf(x)
。设x∗是目标函数极小值点。选取适当的初值x(0),不断迭代,更新x的值,直到梯度收敛/目标函数值收敛/x的值收敛。在迭代的每一步,以负梯度方向更新x的值(因为函数值沿负梯度方向下降最快)。 设第k此迭代值为
f(x)=f(x(k))+gTk(x−x(k))
其中gk是ff(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