梯度下降法

1 最优化问题

  • 最优化问题是求解函数极值的问题,包括极大值和极小值。在机器学习之类的实际应用中,我们一般将最优化问题统一表述为求解函数的极小值问题,即: m i n x f ( x ) min_xf(x) minxf(x)其中x称为优化变量,f称为目标函数。
  • 极大值问题可以转换成极小值问题来求解,只需要将目标函数加上负号即可: m i n x ( − f ( x ) ) min_x(-f(x)) minx(f(x))
  • 优化问题的全局极小值 x ∗ x^{*} x是指对于可行域里所有的x,不大于任意一点处的函数值,即: f ( x ∗ ) ≤ f ( x ) f(x^*)\leq f(x) f(x)f(x)
  • 优化问题的局部极小值 x ∗ x^{*} x 定义为存在一个 δ \delta δ 邻域,对于在邻域内 ∣ ∣ x − x ∗ ∣ ∣ ≤ δ ||x-x^*||\leq\delta xxδ,并且在可行域内的所有x,有: f ( x ∗ ) ≤ f ( x ) f(x^*)\leq f(x) f(x)f(x)

2 导数与梯度

  • 多元函数的梯度定义为: ▽ f ( x ) = ( ∂ f ∂ x 1 , . . . , ∂ f ∂ x n ) T \triangledown f(x)=\left ( \frac {\partial f} {\partial x_1},..., \frac {\partial f} {\partial x_n}\right )^T f(x)=(x1f,...,xnf)T 其中 ▽ \triangledown 称为梯度算子,它作用于一个多元函数,得到一个向量。如: ▽ ( x 2 + x y − y 2 ) = ( 2 x + y , y − 2 y ) \triangledown (x^2+xy-y^2)=(2x+y,y-2y) (x2+xyy2)=(2x+y,y2y)
  • 可导函数在某一点处取得极值的必要条件是梯度为0,梯度为0的点称为函数的驻点,但不是充分条件,即梯度为0的点可能不是极值点。
  • 要判断是极大值还是极小值,要看二阶导数/Hessian矩阵(由函数的二阶偏导数构成的矩阵)。有如下情况:
    1.如果二阶导数大于0 / Hessian矩阵正定,函数有极小值
    2.如果二阶导数小于0 / Hessian矩阵负定,函数有极大值
    3.如果二阶导数等于0 / Hessian矩阵不定,情况不定
  • 疑问:直接求函数的导数/梯度,然后令导数/梯度为0,解方程,问题不就解决了吗?然后有些方程可能很难解。比如下面的函数: f ( x , y ) = x 3 − 2 x 2 + e x y − y 3 + 10 y 2 + 50 s i n ( x y ) f(x,y)=x^3-2x^2+e^{xy}-y^3+10y^2+50sin(xy) f(x,y)=x32x2+exyy3+10y2+50sin(xy)
    分别对x和y求偏导数,并令它们为0,得到下面的方程组: { 3 x 2 − 4 x + y e x y + 50 y c o s ( x y ) = 0 x e x y − 3 y 2 + 20 y + 50 x c o s ( x y ) = 0 \begin{cases} 3x^2-4x+ye^{xy}+50ycos(xy)=0 \\ xe^{xy}-3y^2+20y+50xcos(xy)=0 \end{cases} {3x24x+yexy+50ycos(xy)=0xexy3y2+20y+50xcos(xy)=0这个方程非常难以求解,对于有指数函数,对数函数,三角函数的方程,我们称为超越方程,求解的难度并不比求极值本身小。
  • 精确的求解不太可能,因此只能求近似解,这称为数值计算。工程上实现时通常采用的是迭代法,它从一个初始点 x 0 x_{0} x0 开始,反复使用某种规则从 x k x_{k} xk移动到下一个点 x k + 1 x_{k+1} xk+1 ,构造这样一个数列,直到收敛到梯度为0的点处。即有下面的极限成立: l i m k → + ∞ ▽ f ( x k ) = 0 lim_{k\rightarrow +\infty}\triangledown f(x_k)=0 limk+f(xk)=0
  • 这些规则一般会利用一阶导数信息即梯度,或者二阶导数信息即Hessian矩阵。这样迭代法的核心是得到这样的由上一个点确定下一个点的迭代公式: x k + 1 = h ( x k ) x_{k+1}=h(x_k) xk+1=h(xk)此时我们没有全局信息,根本就不知道哪里是地势最低的点,只能想办法往下走,走一步看一步。

3 推导过程

  • 如果一个一元函数n阶可导,它的泰勒展开公式为: f ( x + Δ x ) = f ( x ) + f ′ ( x ) Δ x + 1 2 f ′ ( x ) ( Δ x ) 2 + . . . + 1 n ! f ( n ) ( x ) ( Δ x ) n f(x+\Delta x)=f(x)+f'(x)\Delta x + \frac {1} {2}f'(x)(\Delta x)^2+...+\frac{1}{n!}f^{(n)}(x)(\Delta x)^n f(x+Δx)=f(x)+f(x)Δx+21f(x)(Δx)2+...+n!1f(n)(x)(Δx)n
  • 多元函数 f ( x ) f(x) f(x)在x点处的泰勒展开为: f ( x + Δ x ) = f ( x ) + ( ▽ f ( x ) ) T Δ x + o ( Δ x ) f(x+\Delta x)=f(x)+(\triangledown f(x))^T\Delta x+o(\Delta x) f(x+Δx)=f(x)+(f(x))TΔx+o(Δx) 这里忽略了二次及更高的项。其中一次项是梯度向量与自变量增量 Δ x \Delta x Δx 的内积 ( ▽ f ( x ) T Δ x ) (\triangledown f(x)^T \Delta x) (f(x)TΔx),这等价于一元函数的 f ′ ( x 0 ) ( Δ x ) f^{'}(x_{0})(\Delta x) f(x0)(Δx)
  • 函数的增量与自变量的增量 Δ x \Delta x Δx 、函数梯度的关系可以表示为: f ( x + Δ x ) − f ( x ) = ( ▽ f ( x ) ) T Δ x + o ( Δ x ) f(x+\Delta x)-f(x)=(\triangledown f(x))^T\Delta x+o(\Delta x) f(x+Δx)f(x)=(f(x))TΔx+o(Δx)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值