梯度下降: 02. 批量梯度下降BGD,随机梯度下降SGD,小批量梯度下降MBGD

简介

本文从原理上介绍了三种梯度下降的方法,相同点,异同点,优缺点。
内容包含了数学公式的推导与说明

1. 梯度下降的3种方法

梯度下降分三类,原理基本相同,操作方式略有区别

  1. 批量梯度下降BGD(BatchGradient Descent):使用全量数据进行特征抽取,模型训练
  2. 小批量梯度下降MBGD(Mini-Batch Gradient Descent):从全量数据中随机抽取部分数据进行特征抽取,模型训练
  3. 随机梯度下降SGD(Stochastic Gradient Descent):从全量样本数据中随机抽取1个样本进行模型训练
    在这里插入图片描述

1.1 梯度下降的操作步骤分为以下4步

  1. 随机赋值,Random随机数生成 θ \theta θ,随机一组数值 w 0 、 w 1 . . . w n w_0、w_1...w_n w0w1...wn
  2. 求梯度g(默认认为数据符合正态分布,g对应最小二乘法公式),梯度代表曲线某点上的切线的斜率,沿着切线往下就相当于沿着坡度最陡峭的方向下降
  3. if(g) < 0: θ \theta θ​变大,if(g>0): θ \theta θ​变小
    • (x = x - eta * g(x))
  4. 判断是否收敛convergence,如果收敛跳出迭代,如果没有达到收敛,回第2步再次执行2~4步。
    • 收敛的判断标准是:随着迭代进行损失函数Loss,变化非常微小甚至不再改变,即认为达到收敛

1.2 三种梯度下降不同,体现在第二步中:

  1. BGD是指在每次迭代使用所有样本来进行梯度的更新
  2. MBGD是指在每次迭代使用一部分样本(所有样本1000个,使用其中100个样本)来进行梯度的更新
  3. SGD是指每次迭代随机选择一个样本来进行梯度更新

2. 线性回归梯度更新公式

复习一下:最小二乘法公式:
J ( θ ) = 1 2 ∑ i = 1 n ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta) = \frac12 \sum\limits_{i=1}^{n}(h_{\theta}(x^{(i)}) - y^{(i)})^2 J(θ)=21i=1n(hθ(x(i))y(i))2
矩阵写法:
J ( θ ) = 1 2 ( X ⋅ θ − y ) T ( X ⋅ θ − y ) J_(\theta) = \frac12(X\cdot\theta-y)^T(X\cdot\theta - y) J(θ)=21(Xθy)T(Xθy)

2.1 求解上面梯度下降的第2步,即推导出损失函数的导函数来。

θ j n + 1 = θ j n − η ∗ ∂ J ( θ ) ∂ θ j \theta_j^{n+1} = \theta_j^{n} - \eta * \frac{\partial {J(\theta})}{\partial \theta_j} θjn+1=θjnηθjJ(θ)

这是对第 j j j个系数的梯度更新公式,n+1,n表示次数(不是次幂)

∂ J θ ∂ θ j = ∂ ∂ θ j 1 2 ( h θ ( x ) − y ) 2 \frac{\partial{J\theta}}{\partial \theta_j} = \frac{\partial}{\partial {\theta_j}}{\frac12 (h_{\theta}(x) - y)^2} θjJθ=

相关推荐

  1. 随机梯度下降SGD

    2024-06-09 15:46:02       32 阅读
  2. 随机梯度下降算法

    2024-06-09 15:46:02       43 阅读
  3. 32. 批量梯度下降法(Mini-batch Gradient Descent)

    2024-06-09 15:46:02       28 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-09 15:46:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-09 15:46:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-09 15:46:02       87 阅读
  4. Python语言-面向对象

    2024-06-09 15:46:02       96 阅读

热门阅读

  1. 深度学习中自监督学习

    2024-06-09 15:46:02       29 阅读
  2. Jenkins 内置变量 和变量作用域

    2024-06-09 15:46:02       25 阅读
  3. 为什么要选择AWS?AWS的优势有哪些?

    2024-06-09 15:46:02       33 阅读
  4. SASS基础知识

    2024-06-09 15:46:02       30 阅读
  5. linux的sed

    2024-06-09 15:46:02       28 阅读
  6. No signature found in package of version 2 or newer for package

    2024-06-09 15:46:02       22 阅读
  7. 进程和线程

    2024-06-09 15:46:02       24 阅读
  8. 压力测试的前置准备

    2024-06-09 15:46:02       32 阅读