机器学习之-梯度下降法学习笔记

1 简介

梯度下降法又被称为最速下降法(Steepest descend method),其理论基础是梯度的概念。
梯度与方向导数的关系为:梯度的方向与取得最大方向导数值的方向一致,而梯度的模就是函数在该点的方向导数的最大值。
现在假设我们要求函数的最值,采用梯度下降法,如图所示:
机器学习之-梯度下降法学习笔记
以一个人下山为例。比如刚开始的初始位置是在红色的山顶位置,那么现在的问题是该如何达到蓝色的山底呢?按照梯度下降算法的思想,它将按如下操作达到最低点:

  1. 明确自己现在所处的位置
  2. 找到相对于该位置而言下降最快的方向
  3. 沿着第二步找到的方向走一小步,到达一个新的位置,此时的位置肯定比原来低
  4. 回到第一步
  5. 终止于最低点
    按照以上5步,最终达到最低点,这就是梯度下降的完整流程。

2 相关概念

在详细了解梯度下降的算法之前,我们先看看相关的一些概念。
1步长(Learning rate):步长决定了在梯度下降迭代的过程中,每一步沿梯度负方向前进的长度。用上面下山的例子,步长就是在当前这一步所在位置沿着最陡峭最易下山的位置走的那一步的长度。
2特征(feature):指的是样本中输入部分,比如样本(x0,y0),(x1,y1),则样本特征为x,样本输出为y。
3.假设函数(hypothesis function):在监督学习中,为了拟合输入样本,而使用的假设函数,记为hθ(x)。比如对于样本(xi,yi)(i=1,2,…n),可以采用拟合函数如下: hθ(x) = θ0+θ1x。
4损失函数(loss function):为了评估模型拟合的好坏,通常用损失函数来度量拟合的程度。损失函数极小化,意味着拟合程度最好,对应的模型参数即为最优参数。在线性回归中,损失函数通常为样本输出和假设函数的差取平方。比如对于样本(xi,yi)(i=1,2,…n),采用线性回归,损失函数为:
机器学习之-梯度下降法学习笔记
其中xi表示样本特征x的第i个元素,yi表示样本输出y的第i个元素,hθ(xi)为假设函数。

3 梯度下降算法的理论推导

3.1 一元函数

一元函数的导数,其几何意义是某点切线的斜率,除此之外它还能表示函数在该点的变化率,导数越大,说明函数在该点的变化越大。

机器学习之-梯度下降法学习笔记机器学习之-梯度下降法学习笔记
则导函数本身则代表着函数沿着x方向的变化率

3.2 二元函数

对于二元函数,z=f(x,y),它对x和y的偏导数分别表示如下:
函数在y方向不变的情况下,函数值沿x方向的变化率
函数在x方向不变的情况下,函数值沿y方向的变化率
有了以上的了解,我们分别知道了函数在单独在x和y方向上的变化率
在一平面中,任意一向量都可以用两个不共线的基向量表示,也就是说任意一方向上的变化,都可以分解到x和y两个方向上。
比如,我想求u方向上的变化率,根据导函数的定义
机器学习之-梯度下降法学习笔记
其中α是u方向与x正方向的夹角
极限存在,可用洛必达法则,分子分母同时对▲u求导
原式等于:
机器学习之-梯度下降法学习笔记
令:
机器学习之-梯度下降法学习笔记
这是一个自变量是α的函数,我们将其命名为方向导数,其表明随着α的不同,方向不同,函数的变化率不同。
寻找函数变化率最大的方向-梯度
我们可以这样改写,令:
机器学习之-梯度下降法学习笔记
则:
机器学习之-梯度下降法学习笔记
θ是两个向量的夹角
显然,当θ=0时,取得最大方向导数,也就说随着α的改变,当两个向量A和I是平行的时候,取得最大方向导数,而此时I的方向就是下式的方向:
机器学习之-梯度下降法学习笔记
我们把上式称之为梯度,所以梯度方向是函数变化率最大的方向,更本质的说是函数增长最快的方向。
所以,当我们需要最小化损失函数时,只需要使损失函数沿着负梯度前行,就能使损失函数最快下降。

4 梯度下降法应用

以斯坦福大学机器学习教程——线性回归为例。
首先,给出线性回归的模型
机器学习之-梯度下降法学习笔记
假设我们用来拟合的数据共有 m组,根据最小二乘法,我们实际要找出:
机器学习之-梯度下降法学习笔记
最小的 θ值,其中上标 (i) 代表是第几组数据。设关于 θ的损失函数:
机器学习之-梯度下降法学习笔记
θ 可以看做是一个参数向量,即{θ0 , θ1} T 。式子的前面乘上系数,是为了方便计算。
根据前面梯度的概念,我们得到:
机器学习之-梯度下降法学习笔记
为了使损失函数达到局部最小值,我们只需要沿着这个向量的反方向进行迭代即可。
那么参数的值到底该一次变化多少呢?我们通常用 α来表示这个大小,称为**“步长”**,它的值是需要我们手动设定的,显然,步长太小,会拖慢迭代的执行速度,而步长太大,则有可能在下降时走弯路或者不小心跳过了最优解。
所以我们应该根据实际的情况,合理地设置 α的值。
于是,在每次迭代中,令:
机器学习之-梯度下降法学习笔记
即可使损失函数最终收敛到局部最小值,我们也得到了我们想要的参数值。