11 回归算法 - BGD、SGD、MBGD梯度下降

简介:

=== 名词解释 ===

BGD: 批量 - 梯度下降算法
SGD: 随机 - 梯度下降算法
__MBGD:__小批量 - 梯度下降算法

=== 批量梯度下降算法 BGD ===

在上一章10 回归算法 - 梯度下降中讲述的梯度下降算法是针对某一个样本进行的。实际上,我们拥有m个样本,针对每一个样本我们都应该有一个对应的梯度下降。

所以引入可批量梯度下降算法(BGD),这是一个$color{red}{求解相对精确}$ ,但是计算时$color{red}{迭代速度相对比较慢}$的算法。

原因如下:
BGD
如上公式所示,批量梯度算法BGD,是对__所有样本的梯度__进行了__求和__的操作。

公式化简后:
BGD

=== 随机梯度下降算法 SGD===

随机梯度下降算法:不再考虑样本梯度的求和了,而是来一个新的样本,我就更新一次θ。
SGD

如果有m条数据,我就更新m次。
但是在批量梯度下降算法 BGD中,对于θ我只更新了1次 (全部样本都计算完后求和)

所以在随机梯度下降算法中,迭代更新的速度会更快。
实际生产当中,我们选择随机梯度下降的场景会更多。

毕竟,如果我有上百万条数据,如果一次性全遍历完后再得到θ的值,这样太慢了。

总结一下BGD和SGD的区别:
1、SGD速度比BGD快(迭代次数少)
2、SGD在某些情况下(全局存在多个相对最优解,或 J(θ)是一个二次以上的函数 ),SGD有可能跳出某些小的局部最优解,所以不会比BGD坏。
3、BGD一定能够得到一个局部最优解(在线性回归模型中一定是一个全局最优解),SGD由于随机性的存在,可能导致最终结果比BGD差。

优先选择:SGD


=== 小批量梯度下降法 MBGD===

如果既需要保证算法训练速度,又需要保证参数训练的准确率,使用MBGD。

MBGD中不是每拿一个样本就更新一次梯度,而是拿b个样本(一般取10个)的平均梯度作为更新方向。

MBGD是BGD和SGD的结合:
随机抽若干个样本,求和。再不断更新参数。

MBGD


PS 回答几个问题:
1、学习率(步长)的选择:
学习率都是人为设定的,或者可以理解为不断得尝试。根据迭代速度和结果进行不断得调整。
学习率没有一个明确的设定范围,一般可以选择1左右的数字进行尝试,如果迭代的速度还可以,且结果能够获得即可。

2、一般生产中,在深度学习中,对于损失函数的求解我们会自己去写。
但在机器学习中我们可以直接使用sklearn的LinearRegression进行最小二乘来求解θ:
$θ=(X^TX)$-1$X^TY$

相关文章
|
2天前
|
算法 vr&ar Python
R语言用极大似然和梯度下降算法估计GARCH(p)过程
R语言用极大似然和梯度下降算法估计GARCH(p)过程
|
25天前
|
机器学习/深度学习 算法 大数据
基于PyTorch对凸函数采用SGD算法优化实例(附源码)
基于PyTorch对凸函数采用SGD算法优化实例(附源码)
29 3
|
1月前
|
机器学习/深度学习 算法
反向传播原理的梯度下降算法
反向传播原理的梯度下降算法
|
7月前
|
机器学习/深度学习 算法 大数据
机器学习梯度下降算法
机器学习梯度下降算法
37 0
|
7月前
|
算法
梯度下降算法详解(从下山比喻、数学推导到代码实现)
梯度下降算法详解(从下山比喻、数学推导到代码实现)
95 0
|
8月前
|
机器学习/深度学习 算法 Python
数学和微分角度理解梯度下降算法
数学和微分角度理解梯度下降算法
|
8月前
|
机器学习/深度学习 算法 PyTorch
Gradient Descent Algorithm 梯度下降算法
Gradient Descent Algorithm 梯度下降算法
53 0
|
9月前
|
存储 机器学习/深度学习 算法
线性回归 梯度下降算法大全与基于Python的底层代码实现
梯度下降是一种常用的优化算法,它通过不断迭代来最小化一个损失函数。根据不同的损失函数和迭代方式,梯度下降可以被分为批量梯度下降(Batch Gradient Descent,BGD)、随机梯度下降(Stochastic Gradient Descent,SGD)、小批量梯度下降(Mini-batch Gradient Descent)、共轭梯度法(Conjugate Gradient,CG)等。
|
10月前
|
机器学习/深度学习 算法 PyTorch
【Deep Learning 2】BGD梯度下降算法
🍊本文从行人下山过程引入梯度下降法,随后详细阐述其原理,并做了两个实验更好理解🍊实验一使用Pytorch来求解函数的最小值🍊实验二使用批量梯度下降算法、和机梯度下降算法来拟合函数最佳参数。
113 0
|
11月前
|
算法
单变量批量梯度下降算法与单变量随机梯度下降算法
通过这些图形,我希望你能更好地理解这些代价函数J所表达的值是什么样的,它们对应的假设是什么样的,以及什么样的假设对应的点,更接近于代价函数的最小值。
80 0