批量梯度下降BGD、随机梯度下降SGD和小批量梯度下降MBGD对比

一般线性回归函数的假设函数为:

对应的损失函数为:

(这里的1/2是为了后面求导计算方便)
下图作为一个二维参数()组对应能量函数的可视化图:

下面我们来比较三种梯度下降法

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

我们的目的是要误差函数尽可能的小,即求解weights使误差函数尽可能小。首先,我们随机初始化weigths,然后不断反复的更新weights使得误差函数减小,直到满足要求时停止。这里更新算法我们选择梯度下降算法,利用初始化的weights并且反复更新weights:

这里代表学习率,表示每次向着J最陡峭的方向迈步的大小。为了更新weights,我们需要求出函数J的偏导数。首先当我们只有一个数据点(x,y)的时候,J的偏导数是:

则对所有数据点,上述损失函数的偏导(累和)为:

再最小化损失函数的过程中,需要不断反复的更新weights使得误差函数减小,更新过程如下:

那么好了,每次参数更新的伪代码如下:

由上图更新公式我们就可以看到,我们每一次的参数更新都用到了所有的训练数据(比如有m个,就用到了m个),如果训练数据非常多的话,是非常耗时的。

下面给出批梯度下降的收敛图:

从图中,我们可以得到BGD迭代的次数相对较少。

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

由于批梯度下降每跟新一个参数的时候,要用到所有的样本数,所以训练速度会随着样本数量的增加而变得非常缓慢。随机梯度下降正是为了解决这个办法而提出的。它是利用每个样本的损失函数对θ求偏导得到对应的梯度,来更新θ:

更新过程如下:

 

随机梯度下降是通过每个样本来迭代更新一次,对比上面的批量梯度下降,迭代一次需要用到所有训练样本(往往如今真实问题训练数据都是非常巨大),一次迭代不可能最优,如果迭代10次的话就需要遍历训练样本10次。但是,SGD伴随的一个问题是噪音较BGD要多,使得SGD并不是每次迭代都向着整体最优化方向。

解释一下为什么SGD收敛速度比BGD要快:

这里我们假设有30万个样本,对于BGD而言,每次迭代需要计算30万个样本才能对参数进行一次更新,需要求得最小值可能需要多次迭代(假设这里是10);而对于SGD,每次更新参数只需要一个样本,因此若使用这30万个样本进行参数更新,则参数会被迭代30万次,而这期间,SGD就能保证能够收敛到一个合适的最小值上了,也就是说,在收敛时,BGD计算了10*30万次,而SGD只计算了1*30万次。

随机梯度下降收敛图如下:

我们可以从图中看出SGD迭代的次数较多,在解空间的搜索过程看起来很盲目。但是大体上是往着最优值方向移动。

所以SGD迭代次数比BGD要多,但是其收敛速度要快于BGD。

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

我们从上面两种梯度下降法可以看出,其各自均有优缺点,那么能不能在两种方法的性能之间取得一个折衷呢?即,算法的训练过程比较快,而且也要保证最终参数训练的准确率,而这正是小批量梯度下降法的初衷。

MBGD的思想是:每次迭代使用batch_size个样本来对参数进行更新。

这里我们假设batch_size=10,样本数m=1000

更新伪代码如下:

优点:每次使用一个batch可以大大减小收敛所需要的迭代次数,同时可以使收敛到的结果更加接近梯度下降的效果。

缺点:batch_size的不当选择可能会带来一些问题。

原文地址:https://www.cnblogs.com/CuteyThyme/p/10546498.html

时间: 2024-10-06 03:27:20

批量梯度下降BGD、随机梯度下降SGD和小批量梯度下降MBGD对比的相关文章

批量梯度下降(BGD)、随机梯度下降(SGD)以及小批量梯度下降(MBGD)的理解

https://www.cnblogs.com/lliuye/p/9451903.html 梯度下降法作为机器学习中较常使用的优化算法,其有着三种不同的形式:批量梯度下降(Batch Gradient Descent).随机梯度下降(Stochastic Gradient Descent)以及小批量梯度下降(Mini-Batch Gradient Descent).其中小批量梯度下降法也常用在深度学习中进行模型的训练.接下来,我们将对这三种不同的梯度下降法进行理解.  为了便于理解,这里我们将使

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

下面的h(x)是要拟合的函数,J(theta)损失函数,theta是参数,要迭代求解的值,theta求解出来了那最终要拟合的函数h(theta)就出来了.其中m是训练集的记录条数,j是参数的个数. 1.批量梯度下降(BGD)的求解思路如下: (1)将J(theta)对theta求偏导,得到每个theta对应的的梯度 (2)由于是要最小化风险函数,所以按每个参数theta的梯度负方向,来更新每个theta (3)从上面公式可以注意到,它得到的是一个全局最优解,但是每迭代一步,都要用到训练集所有的数

NN优化方法对比:梯度下降、随机梯度下降和批量梯度下降

1.前言 这几种方法呢都是在求最优解中经常出现的方法,主要是应用迭代的思想来逼近.在梯度下降算法中,都是围绕以下这个式子展开: 其中在上面的式子中hθ(x)代表,输入为x的时候的其当时θ参数下的输出值,与y相减则是一个相对误差,之后再平方乘以1/2,并且其中 注意到x可以一维变量,也可以是多维变量,实际上最常用的还是多维变量.我们知道曲面上方向导数的最大值的方向就代表了梯度的方向,因此我们在做梯度下降的时候,应该是沿着梯度的反方向进行权重的更新,可以有效的找到全局的最优解.这个θ的更新过程可以描

对数几率回归法(梯度下降法,随机梯度下降与牛顿法)与线性判别法(LDA)

本文主要使用了对数几率回归法与线性判别法(LDA)对数据集(西瓜3.0)进行分类.其中在对数几率回归法中,求解最优权重W时,分别使用梯度下降法,随机梯度下降与牛顿法. 代码如下: 1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 # @Date : 2017-05-09 15:03:50 4 # @Author : whb ([email protected]) 5 # @Link : ${link} 6 # @Version : $Id$

机器学习算法(优化)之一:梯度下降算法、随机梯度下降(应用于线性回归、Logistic回归等等)

本文介绍了机器学习中基本的优化算法-梯度下降算法和随机梯度下降算法,以及实际应用到线性回归.Logistic回归.矩阵分解推荐算法等ML中. 梯度下降算法基本公式 常见的符号说明和损失函数 X :所有样本的特征向量组成的矩阵 x(i) 是第i个样本包含的所有特征组成的向量x(i)=(x(i)1,x(i)2...,x(i)n) y(i) 第i个样本的label,每个样本只有一个label,y(i)是标量(一个数值) hθ(x(i)) :拟合函数,机器学习中可以用多种类型的拟合函数 θ 是函数变量,

监督学习:随机梯度下降算法(sgd)和批梯度下降算法(bgd)

线性回归 首先要明白什么是回归.回归的目的是通过几个已知数据来预测另一个数值型数据的目标值. 假设特征和结果满足线性关系,即满足一个计算公式h(x),这个公式的自变量就是已知的数据x,函数值h(x)就是要预测的目标值.这一计算公式称为回归方程,得到这个方程的过程就称为回归. 假设房子的房屋面积和卧室数量为自变量x,用x1表示房屋面积,x2表示卧室数量:房屋的交易价格为因变量y,我们用h(x)来表示y.假设房屋面积.卧室数量与房屋的交易价格是线性关系. 他们满足公式 上述公式中的θ为参数,也称为权

梯度下降法和随机梯度下降法的区别

这几天在看<统计学习方法>这本书,发现 梯度下降法 在 感知机 等机器学习算法中有很重要的应用,所以就特别查了些资料.  一.介绍       梯度下降法(gradient descent)是求解无约束最优化问题的一种常用方法,有实现简单的优点.梯度下降法是迭代算法,每一步需要求解目标函数的梯度向量.  二.应用场景      1.给定许多组数据(xi, yi),xi (向量)为输入,yi为输出.设计一个线性函数y=h(x)去拟合这些数据. 2.感知机:感知机(perceptron)为二类分类

梯度下降VS随机梯度下降

样本个数m,x为n维向量.h_theta(x) = theta^t * x梯度下降需要把m个样本全部带入计算,迭代一次计算量为m*n^2 随机梯度下降每次只使用一个样本,迭代一次计算量为n^2,当m很大的时候,随机梯度下降迭代一次的速度要远高于梯度下降

梯度下降法、随机梯度下降法、小批量梯度下降法

本文以二维线性拟合为例,介绍批量梯度下降法.随机梯度下降法.小批量梯度下降法三种方法,求解拟合的线性模型参数. 需要拟合的数据集是 $(X_1, y_1), (X_2, y_2)..., (X_n, y_n)$,其中$X^i=(x_1^i, x_2^i)$,表示2个特征,$y^j$是对应的回归值. 拟合得到的函数是 $h_{\theta_1, \theta_2}(X)$,尽可能使${h_{{\theta _1},{\theta _2}}}(X) \approx y$. 损失函数是$J(\thet