一.无约束最优化之梯度下降

1.梯度

梯度是函数在某点的所有偏导数组成的向量,是函数在该点变化最快的方向

2.泰勒展开式

泰勒展开式的本质,是针对非多项式,用多项式在某点逼近非多项式的每一阶。当阶数无穷大时,可以认为多项式等于非多项式。
非多项式 f ( x ) f(x) f(x)在点 x 0 x_{0} x0处的 n n n阶泰勒展开式为:
f ( x ) = f ′ ( x 0 ) + f ′ ( x 0 ) 1 ! ( x − x 0 ) + f ′ ′ ( x 0 ) 2 ! ( x − x 0 ) 2 + . . . + f n ( x 0 ) n ! ( x − x 0 ) n = f ′ ( x 0 ) + f ′ ( x 0 ) 1 ! Δ x + f ′ ′ ( x 0 ) 2 ! Δ x 2 + . . . + f n ( x 0 ) n ! Δ x n \begin{aligned} f(x) &= f^{'} (x_{0} )+\frac{f^{'} (x_{0} )}{1!} (x-x_{0} )+\frac{f^{''} (x_{0} )}{2!} (x-x_{0} )^{2}+...+\frac{f^{n} (x_{0} )}{n!} (x-x_{0} )^{n} \\ &=f^{'} (x_{0} )+\frac{f^{'} (x_{0} )}{1!} \Delta x+\frac{f^{''} (x_{0} )}{2!} \Delta x^{2}+...+\frac{f^{n} (x_{0} )}{n!} \Delta x^{n} \end{aligned} f(x)=f(x0)+1!f(x0)(xx0)+2!f(x0)(xx0)2+...+n!fn(x0)(xx0)n=f(x0)+1!f(x0)Δx+2!f(x0)Δx2+...+n!fn(x0)Δxn

3.梯度下降法原理解析

梯度下降法是求解无约束最优化问题最常用的方法之一。
梯度下降法用一阶泰勒展开式代替原函数,迭代计算原函数在当前取值邻域内的极值。具体的,函数迭代的每一步都朝着梯度的负方向,直到误差小于阈值。
为什么要用梯度下降来寻找极值?因为梯度的方向是函数值往极值点变化最快的方向,证明如下:
已知第 k k k次的迭代值为 x k x^{k} xk,则第 k + 1 k+1 k+1次的迭代值为 x k + 1 x^{k+1} xk+1,假设它俩之间有如下关系:
x k + 1 = x k + λ p k x^{k+1}=x^{k}+\lambda p_{k} xk+1=xk+λpk
f ( x ) f(x) f(x) x k + 1 x^{k+1} xk+1处进行一阶泰勒展开:
f ( x k + 1 ) = f ( x k + λ p k ) = f ( x k ) + ▽ f ( x k ) λ p k f(x^{k+1})=f(x^{k}+\lambda p_{k})=f(x^{k})+\bigtriangledown f(x^{k})\lambda p_{k} f(xk+1)=f(xk+λpk)=f(xk)+f(xk)λpk
由上式可知,当 p k = − ▽ f ( x k ) p_{k}=-\bigtriangledown f(x^{k}) pk=f(xk),函数值减小最快。
上式中, ▽ f ( x k ) \bigtriangledown f(x^{k}) f(xk)为函数在 x k x^{k} xk的梯度,是函数变化最快的方向。 λ \lambda λ是步长,表示函数每次迭代沿负梯度方向移动的距离,当其取值较小时,迭代次数较多;取值较大时,容易在极值点处产生震荡。

4.梯度下降法的一般流程

输入:目标函数 f ( x ) f(x) f(x),阈值 ϵ \epsilon ϵ
输出:函数 f ( x ) f(x) f(x)的极值点 x ∗ x^{*} x
(1)取合适的初始值 x 0 x^{0} x0 k = 1 k=1 k=1
(2)计算函数在 x k x^{k} xk处的取值 f ( x k ) f(x^{k}) f(xk)和梯度 ▽ f ( x k ) \bigtriangledown f(x^{k}) f(xk)
(3)如果 ∣ ▽ f ( x k ) ∣ ≤ ϵ |\bigtriangledown f(x^{k})|\le\epsilon f(xk)ϵ,令 x ∗ = x k x^{*}=x^{k} x=xk;否则,令 p k = − ▽ f ( x k ) p_{k}=-\bigtriangledown f(x^{k}) pk=f(xk),转(4)。
(4)计算 x k + 1 = x k + λ p k x^{k+1}=x^{k}+\lambda p_{k} xk+1=xk+λpk和函数值 f ( x k + 1 ) f(x^{k+1}) f(xk+1),如果 ∣ x k + 1 − x k ∣ ≤ ϵ |x^{k+1}- x^{k} |\le \epsilon xk+1xkϵ ∣ f ( x k + 1 ) − f ( x k ) ∣ ≤ ϵ |f(x^{k+1})- f(x^{k}) |\le \epsilon f(xk+1)f(xk)ϵ<令 x ∗ = x k + 1 x^{*}=x^{k+1} x=xk+1;否则,令 k = k + 1 , k=k+1, k=k+1转(2)。
(5)输出极小值 x ∗ x^{*} x

5.梯度下降法调优

(1)初始值的选择
当目标函数为凸函数时,任选一个初始值就可以迭代优化至最小值;当目标函数为非凸函数时,梯度下降法一般得到是极小值。因此,可以选择多个初始值,在结果中选择最小的值作为解。
(2)步长的选择
步长较小,迭代次数多,收敛慢,但是结果准确;步长较大,容易错过极值点或者在极值点附近震荡,但是收敛较快。因此,可以选择多个步长进行尝试。
(3)归一化
由于特征的单位不同,取值范围也不同。可以将特征进行归一化处理,使数值无量纲化,这样也可以加快迭代速度。

6.常用几种梯度下降法简介

(1)批量梯度下降法
在每一次迭代更新参数时,使用所有的样本参与计算。
(2)小批量梯度下降法
在每一次迭代更新参数时,随机选取一部分样本参与计算。
(3)随机梯度下降法
在每一次迭代更新参数时,随机选取一个样本参与计算。

7.梯度下降法与最小二乘法

两者都是求解无约束最优化的方法。最小二乘法直接求解出解析解,在样本容量较小并且有逆矩阵存在时使用。梯度下降适用于样本容量大或逆矩阵不存在时。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值