Tensorflow细节-P84-梯度下降与批量梯度下降

1、批量梯度下降

批量梯度下降法是最原始的形式,它是指在每一次迭代时使用所有样本来进行梯度的更新。从数学上理解如下:
对应的目标函数(代价函数)即为:

(1)对目标函数求偏导:

(2)每次迭代对参数进行更新:

优点:
??(1)一次迭代是对所有样本进行计算,此时利用矩阵进行操作,实现了并行。
??(2)由全数据集确定的方向能够更好地代表样本总体,从而更准确地朝向极值所在的方向。当目标函数为凸函数时,BGD一定能够得到全局最优。
缺点:
??(1)当样本数目 m 很大时,每迭代一步都需要对所有样本计算,训练过程会很慢。
??从迭代的次数上来看,BGD迭代的次数相对较少。其迭代的收敛曲线示意图可以表示如下:

2、随机梯度下降

随机梯度下降法不同于批量梯度下降,随机梯度下降是每次迭代使用一个样本来对参数进行更新。使得训练速度加快。
??对于一个样本的目标函数为:

(1)对目标函数求偏导:

(2)参数更新:

?优点:
??(1)由于不是在全部训练数据上的损失函数,而是在每轮迭代中,随机优化某一条训练数据上的损失函数,这样每一轮参数的更新速度大大加快。
?缺点:
??(1)准确度下降。由于即使在目标函数为强凸函数的情况下,SGD仍旧无法做到线性收敛。
??(2)可能会收敛到局部最优,由于单个样本并不能代表全体样本的趋势。
??(3)不易于并行实现。
解释一下为什么SGD收敛速度比BGD要快:
??答:这里我们假设有30W个样本,对于BGD而言,每次迭代需要计算30W个样本才能对参数进行一次更新,需要求得最小值可能需要多次迭代(假设这里是10);而对于SGD,每次更新参数只需要一个样本,因此若使用这30W个样本进行参数更新,则参数会被更新(迭代)30W次,而这期间,SGD就能保证能够收敛到一个合适的最小值上了。也就是说,在收敛时,BGD计算了 10×30W 次,而SGD只计算了 1×30W 次。

3、小批量梯度下降(Mini-Batch Gradient Descent, MBGD)
??小批量梯度下降,是对批量梯度下降以及随机梯度下降的一个折中办法。其思想是:每次迭代 使用 batch_size个样本来对参数进行更新。
??这里我们假设 batchsize=10 ,样本数 m=1000 。
更新函数为:

?优点:
??(1)通过矩阵运算,每次在一个batch上优化神经网络参数并不会比单个数据慢太多。
??(2)每次使用一个batch可以大大减小收敛所需要的迭代次数,同时可以使收敛到的结果更加接近梯度下降的效果。(比如上例中的30W,设置batch_size=100时,需要迭代3000次,远小于SGD的30W次)
??(3)可实现并行化。
?缺点:
??(1)batch_size的不当选择可能会带来一些问题。

?batcha_size的选择带来的影响:
??(1)在合理地范围内,增大batch_size的好处:
????a. 内存利用率提高了,大矩阵乘法的并行化效率提高。
????b. 跑完一次 epoch(全数据集)所需的迭代次数减少,对于相同数据量的处理速度进一步加快。
????c. 在一定范围内,一般来说 Batch_Size 越大,其确定的下降方向越准,引起训练震荡越小。
??(2)盲目增大batch_size的坏处:
????a. 内存利用率提高了,但是内存容量可能撑不住了。
????b. 跑完一次 epoch(全数据集)所需的迭代次数减少,要想达到相同的精度,其所花费的时间大大增加了,从而对参数的修正也就显得更加缓慢。
????c. Batch_Size 增大到一定程度,其确定的下降方向已经基本不再变化。

原文地址:https://www.cnblogs.com/liuboblog/p/11619044.html

时间: 2024-07-30 07:10:03

Tensorflow细节-P84-梯度下降与批量梯度下降的相关文章

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

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

【转】 随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )的公式对比、实现对比

梯度下降(GD)是最小化风险函数.损失函数的一种常用方法,随机梯度下降和批量梯度下降是两种迭代求解思路,下面从公式和实现的角度对两者进行分析,如有哪个方面写的不对,希望网友纠正. 下面的h(x)是要拟合的函数,J(theta)损失函数,theta是参数,要迭代求解的值,theta求解出来了那最终要拟合的函数h(theta)就出来了.其中m是训练集的记录条数,j是参数的个数. 1.批量梯度下降的求解思路如下: (1)将J(theta)对theta求偏导,得到每个theta对应的的梯度 (2)由于是

随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )的公式对比

转自:here 注意下面说的全局最优是特殊的情况,一般还是梯度下降的方法还是很容易变成局部最优. 梯度下降(GD)是最小化风险函数.损失函数的一种常用方法,随机梯度下降和批量梯度下降是两种迭代求解思路,下面从公式的角度对两者进行分析. 下面的h(x)是要拟合的函数,J(theta)损失函数,theta是参数,要迭代求解的值,theta求解出来了那最终要拟合的函数h(theta)就出来了.其中m是训练集的记录条数,j是参数的个数. 1.批量梯度下降的求解思路如下: (1)将J(theta)对the

看代码理解批量梯度下降求解线下回归问题

layout: post title: 梯度下降算法 subtitle: 批量梯度下降求解线下回归问题 date: 2017-12-01 author: Felix catalog: true tags: - 机器学习 - 优化算法 --- //############################################################## //# //# 批量梯度下降算法实例:求解线性回归问题 //# //##############################

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

本文以二维线性拟合为例,介绍批量梯度下降法.随机梯度下降法.小批量梯度下降法三种方法,求解拟合的线性模型参数. 需要拟合的数据集是 $(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

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

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

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

梯度下降(GD) 梯度的本意是一个向量,表示某一函数在该点处的方向导数沿着该方向取得最大值,导数对应的是变化率 即函数在该点处沿着该方向变化最快,变化率最大(为该梯度的模) 随机梯度下降(SGD):每次迭代随机使用一组样本 针对BGD算法训练速度过慢的缺点,提出了SGD算法,普通的BGD算法是每次迭代把所有样本都过一遍,每训练一组样本就把梯度更新一次.而SGD算法是从样本中随机抽出一组,训练后按梯度更新一次,然后再抽取一组,再更新一次,在样本量及其大的情况下,可能不用训练完所有的样本就可以获得一

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

一般线性回归函数的假设函数为: 对应的损失函数为: (这里的1/2是为了后面求导计算方便)下图作为一个二维参数(,)组对应能量函数的可视化图: 下面我们来比较三种梯度下降法 批量梯度下降法BGD (Batch Gradient Descent) 我们的目的是要误差函数尽可能的小,即求解weights使误差函数尽可能小.首先,我们随机初始化weigths,然后不断反复的更新weights使得误差函数减小,直到满足要求时停止.这里更新算法我们选择梯度下降算法,利用初始化的weights并且反复更新w

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

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