前言

梯度下降法可以帮助我们找到某个函数的极小值或者最小值。这里先拿一个损失函数来说,假设损失函数如下:

机器学习_阅读笔记_梯度下降
我们最终的目的求参数θ0θ1使得损失函数对于给定的样本求得的值最小。

θ0θ1对应损失函数的图像关系类似一个碗状(bowl shape)
机器学习_阅读笔记_梯度下降
单个参数与损失函数的关系图类似于以下二维图:
机器学习_阅读笔记_梯度下降
我们发现:

  • θ在最小值左边的时候,损失函数的导数(斜率)是负的;
  • θ在最小值右边的时候,导数是正的;
  • θ在最小值附近的时候,导数接近0.

因此,如果我们在:

  • 导数为负的时候增加θ
  • 导数为正的时候减小θ

为达到上面调整参数θ的目的,我们可以定义步长α(Learning rate),并通过以下公式对调整参数值:
机器学习_阅读笔记_梯度下降

对上述损失函数可以将上述公式转化成以下公式:
机器学习_阅读笔记_梯度下降

梯度

在微积分里面,对多元函数的参数求偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。比如函数f(x,y), 分别对x,y求偏导数,求得的梯度向量就是(∂f/∂x, ∂f/∂y)T,简称grad f(x,y)或者▽f(x,y)。对于在点(x0,y0)的具体梯度向量就是(f/x0,f/y0)T.或者▽f(x0,y0),如果是3个参数的向量梯度,就是(f/x,f/yf/z)T,以此类推。

在机器学习算法中,在最小化损失函数时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数,和模型参数值。反过来,如果我们需要求解损失函数的最大值,这时就需要用梯度上升法来迭代了。

梯度下降法和梯度上升法是可以互相转化的。比如我们需要求解损失函数f(θ)的最小值,这时我们需要用梯度下降法来迭代求解。但是实际上,我们可以反过来求解损失函数 -f(θ)的最大值,这时梯度上升法就派上用场了。

梯度下降

对于前言中讲到2个参数对应的损失函数是个碗状,更抽象的可以比作一个山脉(如下图),我们如何从山脉的某处走到山脚,当然有可能我们不能走到山脚,而是到了某一个局部的山峰低处。因此,梯度下降不一定能够找到全局的最优解,有可能是一个局部最优解。当然,如果损失函数是凸函数,梯度下降法得到的解就一定是全局最优解。
机器学习_阅读笔记_梯度下降

梯度下降算法

一、 先决条件: 确认优化模型的假设函数和损失函数。
比如对于线性回归,假设函数表示为 hθ(x1,x2,...xn)=θ0+θ1x1+...+θnxn, 其中θi (i = 0,1,2… n)为模型参数,xi (i = 0,1,2… n)为每个样本的n个特征值。我们增加一个特征x0=1 ,这样可以简化成hθ(x0,x1,...xn)=ni=0θixi

同样是线性回归,对应于上面的假设函数,损失函数为(同前言):

J(θ0,θ1...,θn)=12mi=0m(hθ(x0,x1,...xn)yi)2

二、算法相关参数初始化:主要是初始化参数θ,算法终止距离ε以及步长α
TODO:初始化方法后期补充

三、计算过程
1)、定当前位置的损失函数的梯度,对于θi,其梯度表达式如下:

θiJ(θ0,θ1...,θn)

2)、用步长乘以损失函数的梯度,得到当前位置下降的距离,即αθiJ(θ0,θ1...,θn)
具体例子见前言
3)、确定是否所有的θi,梯度下降的距离都小于ε,如果小于ε则算法终止,当前所有的θi(i=0,1,...n)即为最终结果。否则进入步骤4.
4)、更新所有的θ,对于θi,其更新表达式如下。更新完毕后继续转入步骤1.
θi=θiαθiJ(θ0,θ1...,θn)

具体示例见前言。

调优

1、步长α的选择,可以选择多个值进行效果调试。α足够小时,J(θ)会一直下降,α太小,收敛太慢,α太大,可能不会每次迭代都下降,可能不会收敛。
2、算法参数的初始值选择。
3、特征值归一化。参数 J(θ) 在数据范围小的情况下下降快,在数据方位大的情况下下降慢,所以我们可以将所有特征值都缩放到−1 ≤ x(i) ≤ 1或者−0.5 ≤ x(i) ≤ 0.5范围内,可以使用以下方法

机器学习_阅读笔记_梯度下降

4、Momentum、RMSProp算法、Adam优化算法等,可参考或自行搜索资料

normal equation

下面直接给出公式

θ=(XTX)1XTy

其中,θnx1的向量,里面有n个代数法的模型参数。Xmxn维的矩阵。ynx1的向量,m代表样本的个数,n代表样本的特征数。
下面给出证明
首先要回顾一下线性代数:
1.单位矩阵 E 是一个对角线全为1,其他元素都为零的方阵 :

100010001

2.方阵 A 的逆矩阵记为 A1,同时其满足下面的特性:

A×A1=E


A1×A=E

下面开始证明
假设模型矩阵表达式为

y=Xθ

首先在两边同时左乘XT得到
XTy=XTXθ

再在两边同时左乘(XTX)1得到
(XTX)1XTy=(XTX)1XTXθ

其中(XTX)1XTX求得为单位矩阵,可以消除故得
θ=(XTX)1XTy

与梯度下降的比较

机器学习_阅读笔记_梯度下降

对于mn(样本数少于特征数),XTX不可逆

梯度下降分类

批量梯度下降法(Batch Gradient Descent)

批量梯度下降法,是梯度下降法最常用的形式,具体做法也就是在更新参数时使用所有的样本来进行更新。

θj=θjαmi=1m(hθ(x(i))y(i))x(i)j   for i=1..n

m表示样本总数

优点:最小化所有训练样本的损失函数,得到全局最优解;易于并行实现。
缺点:当样本数目很多时,训练过程会很慢。

示意图:
机器学习_阅读笔记_梯度下降

随机梯度下降法(Stochastic Gradient Descent)

跟BGD相似,只是每次迭代更新只使用一个样本

θj=θjα(hθ(x(i))y(i))x(i)j   for i=1..n

优点:训练速度快。
缺点:最小化每条样本的损失函数,最终的结果往往是在全局最优解附近,不是全局最优;不易于并行实现。

示意图:
机器学习_阅读笔记_梯度下降

小批量梯度下降法(Mini-batch Gradient Descent)

小批量梯度下降法是批量梯度下降法和随机梯度下降法的折衷,也就是对于m个样本,我们采用k个样子来迭代,1<k<m。可根据样本量调整这个值,为了和计算机的信息存储方式相适应,可将t的值设置为2的幂次。将所有的训练样本完整过一遍称为一个epoch。

θj=θjαki=1k(hθ(x(i))y(i))x(i)j   for i=1..n

示意图:
机器学习_阅读笔记_梯度下降

参考

梯度下降(Gradient Descent)小结
Gradient Descent 梯度下降法
机器学习笔记03:Normal equation与梯度下降的比较
深度学习(4):优化神经网络(2)

相关文章:

  • 2021-07-17
  • 2021-12-07
  • 2021-09-09
  • 2021-11-10
  • 2021-04-26
  • 2021-11-08
猜你喜欢
  • 2021-06-11
  • 2022-01-04
  • 2021-08-07
  • 2022-01-12
  • 2022-01-18
  • 2022-01-01
相关资源
相似解决方案