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

15 篇文章 0 订阅
15 篇文章 0 订阅

前言

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


我们最终的目的求参数 θ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

其中, θ n x1的向量,里面有n个代数法的模型参数。X m xn维的矩阵。 y nx1的向量,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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值