梯度下降(Gradient Descent)

在求解机器学习算法的优化问题时,梯度下降是经常采用的方法之一。

梯度下降不一定能够找到全局最优解,有可能是一个局部最优解。但如果损失函数是凸函数,梯度下降法得到的一定是全局最优解。

梯度下降的相关概念:

1、步长或学习率(learning rate):步长和学习率是一个东西,只是在不同的地方叫法不一样,以下叫做步长。步长决定了在梯度下降过程中,每一步沿梯度负方向前进的长度。

2、假设函数(hypothesis function):也就是我们的模型学习到的函数,记为

3、损失函数(loss function):为了评估模型的好坏,通常用损失函数来度量拟合的程度。在线性回归中,损失函数通常为样本label和假设函数输出的差的平方,比如对样本,采用线性回归,损失函数为:

梯度下降算法:

1、先决条件:确认优化模型的假设函数和损失函数

2、参数的初始化:初始化假设函数的参数是一个向量),算法终止距离以及步长

3、算法过程:

1)确定当前位置的损失函数的梯度,对于,其梯度如下:

2)确定是否所有的,梯度下降的距离都小于,如果小于则算法种植,当前所有的即为最终结果。否则进入步骤3

3)更新所有的,对于,其更新表达式如下。更新完毕后进入步骤1

以上为梯度下降算法。

梯度下降法关于参数更新方式的不同又可分为:

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

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

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

1、批量梯度下降法(Batch Gradient Descent(BGD)):

批量梯度下降法是梯度下降法最原始的形式,它的具体思路是在更新每一参数时都使用所有的样本来进行更新,其数学形式如下:

1)对上述的损失函数求偏导:

2)由于是最小化风险函数,所以按照每个参数的梯度负方向来更新每个

具体的伪代码形式为:

repeat{

(for every j=0,...,n)

}

从上面的公式可以看出,它得到的是一个全局最优解,但是每迭代一次,都要用到训练集所有的数据,如果样本数目m很大,那么这种迭代速度将会很慢。

优点:全局最优解;易于并行实现

缺点:当样本数目很多时,训练过程会很慢

从迭代次数上来看,BGD迭代的次数相对较少。

2、随机梯度下降法(Stochastic Gradient Descent(SGD)):

由于批量梯度下降法在更新每一个参数时,都需要所有的训练样本,训练过程会随着样本数量的加大而变得异常缓慢。随机梯度下降法正是为了解决批量梯度下降法这一弊端而提出的。

将损失函数写为如下形式:

利用每个样本的损失函数对求偏导得到对应的梯度,来更新

具体的伪代码形式为:

1、Randomly shuffle dataset;

2、repeat{

for i=1,...,m{

(for j=0,...,n)

}

}

随机梯度下降是通过每个样本来迭代更新一次,如果样本量很大的情况(例如几十万),那么可能只用其中几万条或者几千条的样本,就已经将迭代到最优解了,对比上面的批量梯度下降,迭代一次要用到所有的训练样本,一次迭代不可能最优。而且,SGD伴随的一个问题是噪音较BGD要多,使得SGD并不是每次迭代都向着整体最优化方向。

优点:训练速度快

缺点:准确度下降,并不是全局最优;不易于并行实现

从迭代次数上看,SGD迭代的次数较多,在解空间的搜索过程看起来有些盲目。

SGD方法的一个缺点是,其更新方向完全依赖于当前的batch,因而其更新十分不稳定。解决这一问题的一个简单的做法便是引入momentum。

momentum即动量,它模拟的是物体运动时的惯性,即更新的时候在一定程度上保留之前更新的方向,同时利用当前batch的梯度微调最终的更新方向。这样一来,可以在一定程度上增加稳定性,从而学习地更快,并且还有一定摆脱局部最优的能力:

其中,即momentum,表示要在多大程度上保留原来的更新方向,这个值在0-1之间,在训练开始时,由于梯度可能会很大,所以初始值一般选为0.5;当梯度不那么大时,改为0.9。是学习率,即当前batch的梯度多大程度上影响最终更新方向,跟普通的SGD含义相同。之和不一定为1。

3、小批量梯度下降法(Mini-batch Gradient Descent(MBGD)):

由上述的两种梯度下降法可以看出,其各自均有优缺点。而小批量梯度下降法(Mini-batch Gradient Descent(MBGD))则在这两种方法的性能之间取得一个折中,即算法的训练过程比较快,而且也保证最终参数训练的准确率。

MBGD在每次更新参数时使用b个样本(b一般为10),其具体的伪代码形式为:

set b=10, m=1000

Repeat{

for i=1,11,21,31,991{

(for every j=0,...,n)

}

}

参考博客:

http://www.cnblogs.com/pinard/p/5970503.html

http://www.cnblogs.com/maybe2030/p/5089753.html

时间: 2024-10-10 08:28:04

梯度下降(Gradient Descent)的相关文章

机器学习(1)之梯度下降(gradient descent)

机器学习(1)之梯度下降(gradient descent) 题记:最近零碎的时间都在学习Andrew Ng的machine learning,因此就有了这些笔记. 梯度下降是线性回归的一种(Linear Regression),首先给出一个关于房屋的经典例子, 面积(feet2) 房间个数 价格(1000$) 2104 3 400 1600 3 330 2400 3 369 1416 2 232 3000 4 540 ... ... .. 上表中面积和房间个数是输入参数,价格是所要输出的解.面

机器学习中的数学(1)-回归(regression)、梯度下降(gradient descent)

机器学习中的数学(1)-回归(regression).梯度下降(gradient descent) 版权声明: 本文由LeftNotEasy所有,发布于http://leftnoteasy.cnblogs.com.如果转载,请注明出处,在未经作者同意下将本文用于商业用途,将追究其法律责任. 前言: 上次写过一篇关于贝叶斯概率论的数学,最近时间比较紧,coding的任务比较重,不过还是抽空看了一些机器学习的书和视频,其中很推荐两个:一个是stanford的machine learning公开课,在

机器学习中的数学-回归(regression)、梯度下降(gradient descent)<1>

机器学习中的数学(1)-回归(regression).梯度下降(gradient descent) 版权声明: 本文由LeftNotEasy所有,发布于http://leftnoteasy.cnblogs.com.如果转载,请注明出处,在未经作者同意下将本文用于商业用途,将追究其法律责任. 前言: 上次写过一篇关于贝叶斯概率论的数学,最近时间比较紧,coding的任务比较重,不过还是抽空看了一些机器学习的书和视频,其中很推荐两个:一个是stanford的machine learning公开课,在

梯度下降(Gradient descent)

首先,我们继续上一篇文章中的例子,在这里我们增加一个特征,也即卧室数量,如下表格所示: 因为在上一篇中引入了一些符号,所以这里再次补充说明一下: x‘s:在这里是一个二维的向量,例如:x1(i)第i间房子的大小(Living area),x2(i)表示的是第i间房子的卧室数量(bedrooms). 在我们设计算法的时候,选取哪些特征这个问题往往是取决于我们个人的,只要能对算法有利,尽量选取. 对于假设函数,这里我们用一个线性方程(在后面我们会说到运用更复杂的假设函数):hΘ(x) = Θ0+Θ1

(二)深入梯度下降(Gradient Descent)算法

一直以来都以为自己对一些算法已经理解了,直到最近才发现,梯度下降都理解的不好. 1 问题的引出 对于上篇中讲到的线性回归,先化一个为一个特征θ1,θ0为偏置项,最后列出的误差函数如下图所示: 手动求解 目标是优化J(θ1),得到其最小化,下图中的×为y(i),下面给出TrainSet,{(1,1),(2,2),(3,3)}通过手动寻找来找到最优解,由图可见当θ1取1时,与y(i)完全重合,J(θ1) = 0 下面是θ1的取值与对应的J(θ1)变化情况 由此可见,最优解即为0,现在来看通过梯度下降

(转)机器学习中的数学(1)-回归(regression)、梯度下降(gradient descent)

版权声明: 本文由LeftNotEasy所有,发布于http://leftnoteasy.cnblogs.com.如果转载,请注明出处,在未经作者同意下将本文用于商业用途,将追究其法律责任. 前言: 上次写过一篇关于贝叶斯概率论的数学,最近时间比较紧,coding的任务比较重,不过还是抽空看了一些机器学习的书和视频,其中很推荐两个:一个是stanford的machine learning公开课,在verycd可下载,可惜没有翻译.不过还是可以看.另外一个是prml-pattern recogni

机器学习笔记01:线性回归(Linear Regression)和梯度下降(Gradient Decent)

最近在Coursera上看吴大神的Machine Learning,感觉讲的真的很棒.所以觉得应该要好好做做笔记,一方面是加强自己对ML中一些方法的掌握程度和理解,另一方面也能方便自己或者同样爱好ML的同学. 线性回归(Linear Regression) 线性回归(Linear Regression)应该是机器学习中最基本的东西了.所谓回归,想必大家在高中时期的课程里面就接触过,给定一系列离散的点(x0,y0),求一条直线 f(x)=ax+b 以使得最小.在machine learning 中

梯度下降法Gradient Descent

梯度下降法: 应用:求线性回归方程的系数 目标:最小化损失函数 (损失函数定义为残差的平方和) 搜索方向:负梯度方向,负梯度方向是下降最快的方向 #Gradient Descent 梯度下降法 # 在直接设置固定的step时,不宜设置的过大,当步长过大时会报错: # Error in while ((newerror > error) | (iter < maxiter)) { : missing value where TRUE/FALSE needed #原因是step过大,会导致在迭代过

梯度下降法Gradient descent(最速下降法Steepest Descent)

最陡下降法(steepest descent method)又称梯度下降法(英语:Gradient descent)是一个一阶最优化算法. 函数值下降最快的方向是什么?沿负梯度方向  d=−gk 原文地址:https://www.cnblogs.com/focusonoutput/p/12151198.html

回归、梯度下降

回归(regression).梯度下降(gradient descent) 发表于332 天前 ? 技术, 科研 ? 评论数 3 ? 被围观 1152 次+ 本文由LeftNotEasy所有,发布于http://leftnoteasy.cnblogs.com.如果转载,请注明出处,在未经作者同意下将本文用于商业用途,将追究其法律责任. 前言: 上次写过一篇关于贝叶斯概率论的数学,最近时间比较紧,coding的任务比较重,不过还是抽空看了一些机器学习的书和视频,其中很推荐两个:一个是 stanfo