

三种梯度下降算法的区别(BGD, SGD, MBGD)
source link: https://ai.renyuzhuo.cn/article/2021/01/20/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

我们在训练网络的时候经常会设置 batch_size,这个 batch_size 究竟是做什么用的,一万张图的数据集,应该设置为多大呢,设置为 1、10、100 或者是 10000 究竟有什么区别呢?
# 手写数字识别网络训练方法
network.fit(
train_images,
train_labels,
epochs=5,
batch_size=128)
批量梯度下降(Batch Gradient Descent,BGD)
梯度下降算法一般用来最小化损失函数:把原始的数据网络喂给网络,网络会进行一定的计算,会求得一个损失函数,代表着网络的计算结果与实际的差距,梯度下降算法用来调整参数,使得训练出的结果与实际更好的拟合,这是梯度下降的含义。
批量梯度下降是梯度下降最原始的形式,它的思想是使用所有的训练数据一起进行梯度的更新,梯度下降算法需要对损失函数求导数,可以想象,如果训练数据集比较大,所有的数据需要一起读入进来,一起在网络中去训练,一起求和,会是一个庞大的矩阵,这个计算量将非常巨大。当然,这也是有优点的,那就是因为考虑到所有训练集的情况,因此网络一定在向最优(极值)的方向在优化。
随机梯度下降(Stochastic Gradient Descent,SGD)
与批量梯度下降不同,随机梯度下降的思想是每次拿出训练集中的一个,进行拟合训练,进行迭代去训练。训练的过程就是先拿出一个训练数据,网络修改参数去拟合它并修改参数,然后拿出下一个训练数据,用刚刚修改好的网络再去拟合和修改参数,如此迭代,直到每个数据都输入过网络,再从头再来一遍,直到参数比较稳定,优点就是每次拟合都只用了一个训练数据,每一轮更新迭代速度特别快,缺点是每次进行拟合的时候,只考虑了一个训练数据,优化的方向不一定是网络在训练集整体最优的方向,经常会抖动或收敛到局部最优。
小批量梯度下降(Mini-Batch Gradient Descent,MBGD)
小批量梯度下降采用的还是计算机中最常用的折中的解决办法,每次输入网络进行训练的既不是训练数据集全体,也不是训练数据集中的某一个,而是其中的一部分,比如每次输入 20 个。可以想象,这既不会造成数据量过大计算缓慢,也不会因为某一个训练样本的某些噪声特点引起网络的剧烈抖动或向非最优的方向优化。
对比一下这三种梯度下降算法的计算方式:批量梯度下降是大矩阵的运算,可以考虑采用矩阵计算优化的方式进行并行计算,对内存等硬件性能要求较高;随机梯度下降每次迭代都依赖于前一次的计算结果,因此无法并行计算,对硬件要求较低;而小批量梯度下降,每一个次迭代中,都是一个较小的矩阵,对硬件的要求也不高,同时矩阵运算可以采用并行计算,多次迭代之间采用串行计算,整体来说会节省时间。
看下面一张图,可以较好的体现出三种剃度下降算法优化网络的迭代过程,会有一个更加直观的印象。
梯度下降算法的调优,训练数据集很小,直接采用批量梯度下降;每次只能拿到一个训练数据,或者是在线实时传输过来的训练数据,采用随机梯度下降;其他情况或一般情况采用批量梯度下降算法更好。
- 本文首发自: RAIS

Recommend
-
36
-
38
感谢阅读「美图数据技术团队」的第 11 篇原创文章,关注我们持续获取美图最新数据技术动态。 平时我们说的训练神经网络就是最小化损失函数的过程,损失函数的值衡量了模型在给定数据集下的表现(拟合)能力。
-
45
梯度下降是一种寻找函数极小值的优化方法,在深度学习模型中常常用来在反向传播过程中更新神经网络的权值。 在这篇文章中,我会总结应...
-
5
优化算法系列(1):梯度下降算法与推导深度学习(机器学习)算法 = 模型表征 + 模型评估 + 优化算法,而基本上所有的机器学习算法都在损失函数下转化为某种形式的优化问题,可以说模型训练就是一个数值优化过程。 当前,常见的深度学习优化算...
-
7
为什么梯度的反方向为下降速度最快的方向? x , y 都表示 权重,f 表示损失函数。 1.可由近似公式得到:
-
4
梯度下降算法的Python实现 1.梯度下降算法的理解 我们在求解最优化问题的时候,需要最小化或最大化某一个目标函数。如线性回归中,就需要最小化残差平方和。 某一向量的平方和函数可定义如下: def sum_of_sq...
-
5
常用的梯度下降优化算法 发表于 2018-10-01 更新于 2021-03-07 ...
-
7
梯度下降法(Gradient Descent)是一个算法,但不是像多元线性回归那样是一个具体做回归任务的算法,而是一个非常通用的优化算法来帮助一些机器学习算法求解出最优解的,所谓的通用就是很多机器学习算法都是用它,甚至深度学习也是用它来求解最优解。所有优化算法的...
-
5
梯度下降算法 Gradient Descent 梯度下降算法是一种被广泛使用的优化算法。在读论文的时候碰到了一种参数优化问题: 在函数FF中有若干参数是不确定的,已知
-
6
1、岗位、赛道、企业及工作地点的确定1.1 求职岗位的确定求职准备期首要的目标是确定岗位!大体而言分为技术岗和非技术岗,而其下又有各种分支技术岗包括:研发、 算法、测试。研发包...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK