梯度下降法学习笔记

我们都知道梯度下降法是求解无约束最优化问题的最常用方法,可是为什么梯度下降可以用来求解最优化问题呢?梯度到底是什么?这里假设我们要解决一个最小值问题 minf(x) ,当我们所研究的对象并不是一个凸函数或者即使是一个凸函数,但是计算量会非常的大,此时我们就会想能否有一种迭代的方法,当我们随机的选取一个点,我们以该点位为起点,然后沿着某个方向能够以最快的速度走到最小值点呢?基于这样的思路,我们首先来介绍到底什么是梯度。

梯度

在百度百科上给出的梯度公式为:

grad(t)=t=δtδxi+δtδyj+δtδzk
其中 i,j,k 为基向量,其也可以表示为 (δtδx,δtδy,δtδz) 。通过上面的定义我们可以看到梯度是一个向量,是 t (x,y,z) 点的一个方向,且沿着该方向是t值变化最大的方向。下面是对梯度为函数值变化最大的方向的证明:

假设 v 表示任意的一个单位向量,那么方向导数(表示函数t在方向 v 上的变化率)即为grad(t)v,根据点乘的定义我们知道 grad(t)v=|grad(t)||v|cosθ ,因为 v 为一个单位向量,因此其又等于|grad(t)|cosθ,故对于方向导数,其值最大的时候是 θ=0 ,即向量 v 与梯度grad(t)平行的时候。因此 t 的函数值变化率最大的方向就是梯度方向。

梯度下降法

根据对上面梯度的介绍,我们知道梯度方向是函数值变化最大的方向,因此对于问题minf(X),我们只需要沿着负梯度方向不断对x进行修正即可以最快的速度下降到极小值点,这也是通常人们把梯度下降法等同于最速下降法的原因。下面给出梯度下降法的基本步骤:

  1. 随机选取初始节点 X0=(x10,x20,...,xk0)
  2. 求出函数 f(X) Xi 点的梯度 f=δfδXi
  3. 如果函数误差 E(f(Xi),f(Xi1))>ϵ ,则依据梯度更新
    xi=xiαf(xi)
    重复2,3步直到函数误差小于阈值 ϵ 。其中 α 为步长,用于控制每次下降的幅度,通常其值是逐渐递减的。

批量梯度下降与随机梯度下降

对于线性回归我们知道其模型为 fΘ(X)=XTΘ ,那么其损失函数 J(Θ)=12mmi=1(fΘ(xi)yi)2 ,故 δfδΘ=1mmi=1(fΘ(xi)yi)xi

  • 批量梯度下降
    对于批量梯度下降,其对 Θ 的更新策略为
    θt+1j=θtj1mi=1m(fθj(xij)yi)xij
    我们可以看到对于批量梯度下降,其每一次更新都要考虑所有的样本,当样本量很大的时候,这种更新的速度是非常慢的,那么我们就想能否每来一个样本我们就更新一次而不是等所有样本都到来才更新?
  • 随机梯度下降
    对于梯度下降,其更新策略不再是每次更新都考虑所有的样本,而是对每个样本,都对参数进行一次更新,其更新策略如下:
    θt+1j=θtjfθj(xij)yi)xij
    在这种情况下,我们可能只需要其中的一部分样本就可以让算法收敛到极值点。

你可能感兴趣的:(梯度下降-机器学习)