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$

相关文章
|
机器学习/深度学习 算法 PyTorch
【从零开始学习深度学习】38. Pytorch实战案例:梯度下降、随机梯度下降、小批量随机梯度下降3种优化算法对比【含数据集与源码】
【从零开始学习深度学习】38. Pytorch实战案例:梯度下降、随机梯度下降、小批量随机梯度下降3种优化算法对比【含数据集与源码】
|
11月前
|
机器学习/深度学习 算法 大数据
机器学习入门:梯度下降算法(下)
机器学习入门:梯度下降算法(下)
|
11月前
|
机器学习/深度学习 算法
机器学习入门:梯度下降算法(上)
机器学习入门:梯度下降算法(上)
|
12月前
|
机器学习/深度学习 算法
深度学习中的优化算法:从梯度下降到Adam
本文深入探讨了深度学习中的核心——优化算法,重点分析了梯度下降及其多种变体。通过比较梯度下降、动量方法、AdaGrad、RMSProp以及Adam等算法,揭示了它们如何更高效地找到损失函数的最小值。此外,文章还讨论了不同优化算法在实际模型训练中的表现和选择依据,为深度学习实践提供了宝贵的指导。
267 7
|
机器学习/深度学习 分布式计算 并行计算
算法金 | 再见!!!梯度下降(多图)
**梯度下降及其优化算法简述** 梯度下降是一种优化算法,广泛用于机器学习和深度学习,通过迭代更新模型参数以最小化损失函数。它有几种变体,包括批梯度下降(使用全部数据)、随机梯度下降(单个样本)和小批量梯度下降(小批量样本)。每种形式在计算效率和稳定性上各有优劣。
452 4
算法金 | 再见!!!梯度下降(多图)
|
机器学习/深度学习 算法 Python
探索机器学习中的梯度下降优化算法
【8月更文挑战第1天】在机器学习的广阔天地里,梯度下降法如同一位勇敢的探险家,指引我们穿越复杂的数学丛林,寻找模型参数的最优解。本文将深入探讨梯度下降法的核心原理,并通过Python代码示例,展示其在解决实际问题中的应用。
185 3
梯度下降算法(二)
梯度下降法中,学习率选择至关重要。0.3的学习率导致无法找到最小值且产生震荡,而0.01则使结果接近最优解(2.99998768)。当学习率进一步减小至0.001,点远离最低点。通过迭代次数增加至1000次,可更接近最低点(2.999999999256501)。梯度下降用于最小化损失,学习率控制参数更新步长,需平衡收敛速度和稳定性。迭代次数和初始点也影响模型性能,合适的初始化能加速收敛并避开局部极小值。
|
机器学习/深度学习 存储 算法
梯度下降算法(一)
梯度下降是一种迭代优化算法,用于找到多变量函数的最小值。它不直接求解方程,而是从随机初始点开始,沿着梯度(函数增大幅度最大方向)的反方向逐步调整参数,逐步逼近函数的最小值。在单变量函数中,梯度是导数,而在多变量函数中,梯度是一个包含所有变量偏导数的向量。通过计算梯度并乘以学习率,算法更新参数以接近最小值。代码示例展示了如何用Python实现梯度下降,通过不断迭代直到梯度足够小或达到预设的最大迭代次数。该过程可以类比为在雾中下山,通过感知坡度变化来调整前进方向。
|
机器学习/深度学习 算法 C语言
【深度学习】优化算法:从梯度下降到Adam
【深度学习】优化算法:从梯度下降到Adam
325 1
|
机器学习/深度学习 自然语言处理 算法
深度解析深度学习中的优化算法:从梯度下降到自适应方法
【4月更文挑战第28天】 在深度学习模型训练的复杂数学迷宫中,优化算法是寻找最优权重配置的关键导航者。本文将深入探讨几种主流的优化策略,揭示它们如何引导模型收敛至损失函数的最小值。我们将比较经典的批量梯度下降(BGD)、随机梯度下降(SGD)以及动量概念的引入,进一步探索AdaGrad、RMSProp和Adam等自适应学习率方法的原理与实际应用。通过剖析这些算法的理论基础和性能表现,我们旨在为读者提供一个关于选择合适优化器的参考视角。

热门文章

最新文章