首页 > 其他分享 >[机器学习复习笔记] BGD, SGD, MBGD

[机器学习复习笔记] BGD, SGD, MBGD

时间:2023-11-08 22:44:40浏览次数:48  
标签:BGD 批量 梯度 样本 batch MBGD theta SGD

BGD, SGD, MBGD

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

1.1 批量梯度下降法介绍

梯度下降法 每次迭代中,将 所有样本 用来进行参数 \(\theta\) (梯度)的更新,这其实就是 批量梯度下降法

批量梯度下降法损失函数表达式

\[E = \frac{1}{2n}\sum_{i = 1}^{n}(y^{(i)} - f_{\theta}(x^{(i)}))^2 \]

参数更新 表达式:

\[\theta_j := \theta_j - \eta \sum_{i = 1}^n(f_{\theta}(x^{(i)}) - y^{(i)})x_j^{(i)} \]


1.2 BGD 的优缺点

优点

  • 在训练过程中,使用固定的学习率,不必担心学习率衰退现象的出现。

  • 由全数据集确定的方向能够更好地代表样本总体,从而更准确地朝向极值所在的方向。当目标函数为凸函数时,一定能收敛到全局最小值,如果目标函数非凸则收敛到局部最小值。

  • 它对梯度的估计是 无偏 的。样例越多,标准差越低。

  • 一次迭代是对所有样本进行计算,此时利用向量化进行操作,实现了并行。

缺点

  • 遍历全部样本仍需要 大量时间,尤其是当数据集很大时(几百万甚至上亿)。

  • 遍历全部样例,有时一些样本可能是多余的,对参数更新没有太大的作用

批量梯度下降法损失函数收敛图像

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

2.1 随机梯度下降法介绍

随机梯度下降法 不同于批量梯度下降,在每次迭代时 只使用一个样本 来对参数进行更新(mini-batch size = 1)

随机梯度下降法损失函数 表达式:

\[E = \frac{1}{2}(f_{\theta}(x^{(i)}) - y^{(i)})^2 \]

参数更新 表达式:

\[\theta_j := \theta_j - \eta (f_{\theta}(x^{(i)}) - y^{(i)})x_j^{(i)} \]


2.2 SGD 的优缺点

优点

  • 在学习过程中加入了噪声,提高了泛化误差

  • 随机优化某一条训练数据上的损失函数,这样每一轮参数的 更新速度大大加快

缺点

  • 最终的结果是 不收敛的,在最小值附近波动。

  • 由于每次只选取一个样本,学习过程会非常慢

  • 单个样本并不能代表全体样本的趋势,最后的效果很有可能不理想。

随机梯度下降法损失函数图像

3. MBGD 随机梯度下降法(Mini-batch Gradient Descent)

3.1 小批量梯度下降法介绍

使用 一个以上而又不是全部的样本 进行训练,被称为 小批量(mini-batch)小批量随机(mini-batch stochastic) 方法。

每一步,从 \(n\) 个样本的训练集(已经打乱样本的顺序)中随机抽出一小批量(mini-batch)样本 \(X = \{x^{(1)}, \cdots , x^{(m^{'})}\}\),\(m^{'}\) 为小批量大小。

随机梯度下降法损失函数 表达式:

\[E = \frac{1}{2m^{'}}\sum_{i = 1}^{m^{'}}(f_{\theta}(x^{(i)}) - y^{(i)}) ^2 \]

参数更新 表达式:

\[\theta_j := \theta_j - \eta \frac{1}{m^{'}}(f_{\theta}(x^{(i)}) - y^{(i)})x_j^{(i)} \]


3.2 MBGD 的优缺点

优点

  • 计算速度比BGD ,只遍历部分样例就可执行更新。

  • 随机选择样例有利于避免重复多余的样例和对参数更新较少贡献的样例。

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

缺点

  • 在迭代的过程中,因为噪音的存在,学习过程会出现波动。因此,它在最小值的区域徘徊,不会收敛

  • 学习过程会有 更多的振荡,为更接近最小值,往往 需要增加学习率衰减项,以降低学习率,避免过度振荡。

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

小批量梯度下降法损失函数图像

3.3 mini-batch size 的取值

小批量大小(mini-batch size)通常由以下几个因素决定:

  • 更大的批量会计算更精确的梯度,但是回报却是小于线性的。

  • 极小的批量通常难以充分利用多核结构。当批量低于某个数值时,计算时间不会减少。

  • 批量处理中的所有样本可以并行处理,内存消耗和批量大小会成正比。对于很多硬件设备,这是批量大小的限制因素。

  • 在使用GPU时,通常使用 2的幂数 作为批量大小可以获得 更少的运行时间。一般,2的幂数取值范围是 32~25616 有时在尝试大模型时使用。


参考文章

批量梯度下降(BGD)、随机梯度下降(SGD)、小批量梯度下降(MBGD)

梯度下降法(GD、SGD、BGD、MINI-BGD)

标签:BGD,批量,梯度,样本,batch,MBGD,theta,SGD
From: https://www.cnblogs.com/MAKISE004/p/17818527.html

相关文章

  • NETCore,离线部署Linux ,离线部署 libgdiplus
    背景错误信息:Unabletoloadsharedlibrary‘libgdiplus‘oroneofitsdependencies解析:libgdiplus是Linux支持Netcore的图形库,比如System.Drawing要用,在线安装都容易,离线就处理起来恶心了以下事爬坑记录,思路:在有网的Linux下载依赖包,然后再拷贝rmp包去离线服务器安装参......
  • Python信贷风控模型:梯度提升Adaboost,XGBoost,SGD, GBOOST, SVC,随机森林, KNN预测金
    原文链接:http://tecdat.cn/?p=26184 原文出处:拓端数据部落公众号最近我们被客户要求撰写关于信贷风控模型的研究报告,包括一些图形和统计输出。在此数据集中,我们必须预测信贷的违约支付,并找出哪些变量是违约支付的最强预测因子?以及不同人口统计学变量的类别,拖欠还款的概率如何......
  • 感性理解梯度下降 GD、随机梯度下降 SGD 和 SVRG
    MLTheory太魔怔了!!!!!从微积分课上我们学到对一个\(\mathscrC^2\)函数,其二阶泰勒展开的皮亚诺余项形式\[f(\bmw')=f(\bmw)+\langle\nablaf(\bmw),\bmw'-\bmw\rangle+o(\|\bmw'-\bmw\|)\]这说明只要\(\bmw'\)和\(\bmw\)挨得足够接近,我们就可......
  • Python信贷风控模型:梯度提升Adaboost,XGBoost,SGD, GBOOST, SVC,随机森林, KNN预测金
    原文链接:http://tecdat.cn/?p=26184 原文出处:拓端数据部落公众号最近我们被客户要求撰写关于信贷风控模型的研究报告,包括一些图形和统计输出。在此数据集中,我们必须预测信贷的违约支付,并找出哪些变量是违约支付的最强预测因子?以及不同人口统计学变量的类别,拖欠还款的概率如何......
  • libgdx
    libGDX是一个基于OpenGL(ES)的跨平台Java游戏开发框架,可以在Windows、Linux、macOS、Android、浏览器和iOS上运行[1][2]。它是一个免费且开源的游戏开发应用框架,使用Java编程语言编写,并包含部分C和C++组件[4]。libGDX项目托管在GitHub上,团队成员在这里协作并提供贡献[3]。该框架使用......
  • optim.SGD
    链接:https://www.zhihu.com/question/585468191/answer/2905219147optim.SGD是PyTorch中的一个优化器,其实现了随机梯度下降(StochasticGradientDescent,SGD)算法。在深度学习中,我们通常使用优化器来更新神经网络中的参数,以使得损失函数尽可能地小。在PyTorch中使用optim.SGD优化......
  • libgdx——FileHanle详解
    FilehandlingTableofContentsanotefromthetranslationWikiStyleGuideDeveloper'sGuideIntroductionGoals&FeaturesCommunity&SupportContributingGamesBuiltwithLibgdxPrerequisitesGradleProjectSetup,Running,DebuggingandPa......
  • LibGdx 游戏引擎 freetype 使用指南
    网上大多数的Libgdx文档,使用的版本都是0.9X的时候留下的,1.X版本的比较少。freetype在1.X时使用发生发生了变化,写一下变化。本人使用的是Libgdx1.6版本。首先给两个传送门,可以去Git上看官方的wiki。官方的freetype说明https://github.com/libgdx/libgdx/wiki/Gdx-freetype官方的......
  • Python信贷风控模型:Adaboost,XGBoost,SGD, SVC,随机森林, KNN预测信贷违约支付|附代码
    要求撰写关于信贷风控模型的研究报告,包括一些图形和统计输出。在此数据集中,我们必须预测信贷的违约支付,并找出哪些变量是违约支付的最强预测因子?以及不同人口统计学变量的类别,拖欠还款的概率如何变化?有25个变量:ID: 每个客户的IDLIMIT_BAL: 金额SEX: 性别(1=男,2=女)4.教育程......
  • Python信贷风控模型:Adaboost,XGBoost,SGD, SVC,随机森林, KNN预测信贷违约支付|附代码
    图形和统计输出。在此数据集中,我们必须预测信贷的违约支付,并找出哪些变量是违约支付的最强预测因子?以及不同人口统计学变量的类别,拖欠还款的概率如何变化有25个变量:ID: 每个客户的IDLIMIT_BAL: 金额SEX: 性别(1=男,2=女)4.教育程度:(1=研究生,2=本科,3=高中,4=其他,5=未知)5.婚......