小批量梯度下降(Mini-batch Gradient Descent)

小批量梯度下降(Mini-batch Gradient Descent)

小批量梯度下降是一种介于批量梯度下降和随机梯度下降之间的优化算法。每次更新参数时,小批量梯度下降使用一小部分(小批量)训练数据计算梯度,而不是使用整个训练数据集或单个样本。这种方法结合了批量梯度下降和随机梯度下降的优点,既能提高计算效率,又能保持梯度更新的稳定性。

小批量梯度下降的步骤

  1. 初始化参数:随机初始化模型参数。
  2. 将训练数据集分成若干小批量:每个小批量包含若干训练样本。
  3. 计算每个小批量的梯度:对每个小批量的数据,计算损失函数对模型参数的梯度。
  4. 更新参数:按照梯度的负方向更新参数。
  5. 迭代:对所有小批量重复步骤3和4,直到损失函数收敛或达到预设的迭代次数。

小批量梯度下降的公式

小批量梯度下降的更新公式为:
θ = θ − α ∇ θ J m i n i ( θ ) \theta = \theta - \alpha \nabla_{\theta} J_{mini}(\theta) θ=θαθJmini(θ)
其中:
- θ \theta θ是模型参数。
- α \alpha α是学习率,控制每次更新的步长。
- ∇ θ J m i n i ( θ ) \nabla_{\theta} J_{mini}(\theta) θJmini(θ)是小批量数据上的损失函数 J ( θ ) J(\theta) J(θ)对参数 θ \theta θ的梯度。

具体数据示例

假设我们有一个简单的线性回归问题,训练数据集如下:

xy
12
23
34
45
56
67
78
89

我们要拟合的线性模型为 h ( θ ) = θ 0 + θ 1 x h(\theta) = \theta_0 + \theta_1 x h(θ)=θ0+θ1x

步骤1:初始化参数

假设 θ 0 = 0 \theta_0 = 0 θ0=0 θ 1 = 0 \theta_1 = 0 θ1=0,学习率 α = 0.01 \alpha = 0.01 α=0.01

步骤2:将训练数据集分成若干小批量

假设我们将数据集分成每个批次包含4个样本的两个小批量:

  • 小批量1: ( 1 , 2 ) , ( 2 , 3 ) , ( 3 , 4 ) , ( 4 , 5 ) (1, 2), (2, 3), (3, 4), (4, 5) (1,2),(2,3),(3,4),(4,5)
  • 小批量2: ( 5 , 6 ) , ( 6 , 7 ) , ( 7 , 8 ) , ( 8 , 9 ) (5, 6), (6, 7), (7, 8), (8, 9) (5,6),(6,7),(7,8),(8,9)
步骤3:计算每个小批量的梯度并更新参数
小批量1

计算损失函数和梯度:

损失函数 J ( θ ) J(\theta) J(θ)为均方误差(MSE):
J ( θ ) = 1 2 m ∑ i = 1 m ( h ( θ ) − y i ) 2 J(\theta) = \frac{1}{2m} \sum_{i=1}^{m} (h(\theta) - y_i)^2 J(θ)=2m1i=1m(h(θ)yi)2
其中, m m m是小批量样本的数量。

对第一个小批量:
h ( θ ) = θ 0 + θ 1 x h(\theta) = \theta_0 + \theta_1 x h(θ)=θ0+θ1x

计算梯度:

∂ J ∂ θ 0 = 1 4 ∑ i = 1 4 ( h ( θ ) − y i ) \frac{\partial J}{\partial \theta_0} = \frac{1}{4} \sum_{i=1}^{4} (h(\theta) - y_i) θ0J=41i=14(h(θ)yi)
∂ J ∂ θ 1 = 1 4 ∑ i = 1 4 ( h ( θ ) − y i ) x i \frac{\partial J}{\partial \theta_1} = \frac{1}{4} \sum_{i=1}^{4} (h(\theta) - y_i) x_i θ1J=41i=14(h(θ)yi)xi

初始参数 θ 0 = 0 \theta_0 = 0 θ0=0 θ 1 = 0 \theta_1 = 0 θ1=0

  1. 对每个样本计算预测值 h ( θ ) h(\theta) h(θ)和误差:

h ( θ ) 1 = 0 + 0 × 1 = 0 误差 = 0 − 2 = − 2 h ( θ ) 2 = 0 + 0 × 2 = 0 误差 = 0 − 3 = − 3 h ( θ ) 3 = 0 + 0 × 3 = 0 误差 = 0 − 4 = − 4 h ( θ ) 4 = 0 + 0 × 4 = 0 误差 = 0 − 5 = − 5 \begin{align*} h(\theta)_{1} &= 0 + 0 \times 1 = 0 &\text{误差} &= 0 - 2 = -2 \\ h(\theta)_{2} &= 0 + 0 \times 2 = 0 &\text{误差} &= 0 - 3 = -3 \\ h(\theta)_{3} &= 0 + 0 \times 3 = 0 &\text{误差} &= 0 - 4 = -4 \\ h(\theta)_{4} &= 0 + 0 \times 4 = 0 &\text{误差} &= 0 - 5 = -5 \\ \end{align*} h(θ)1h(θ)2h(θ)3h(θ)4=0+0×1=0=0+0×2=0=0+0×3=0=0+0×4=0误差误差误差误差=02=2=03=3=04=4=05=5

  1. 计算梯度:

∂ J ∂ θ 0 = 1 4 ∑ i = 1 4 ( − 2 − 3 − 4 − 5 ) = 1 4 ( − 14 ) = − 3.5 \frac{\partial J}{\partial \theta_0} = \frac{1}{4} \sum_{i=1}^{4} (-2 - 3 - 4 - 5) = \frac{1}{4} (-14) = -3.5 θ0J=41i=14(2345)=41(14)=3.5

∂ J ∂ θ 1 = 1 4 ∑ i = 1 4 ( − 2 × 1 − 3 × 2 − 4 × 3 − 5 × 4 ) = 1 4 ( − 2 − 6 − 12 − 20 ) = 1 4 ( − 40 ) = − 10 \frac{\partial J}{\partial \theta_1} = \frac{1}{4} \sum_{i=1}^{4} (-2 \times 1 - 3 \times 2 - 4 \times 3 - 5 \times 4) = \frac{1}{4} (-2 - 6 - 12 - 20) = \frac{1}{4} (-40) = -10 θ1J=41i=14(2×13×24×35×4)=41(261220)=41(40)=10

  1. 更新参数:

θ 0 = θ 0 − α ∂ J ∂ θ 0 = 0 − 0.01 × ( − 3.5 ) = 0.035 \theta_0 = \theta_0 - \alpha \frac{\partial J}{\partial \theta_0} = 0 - 0.01 \times (-3.5) = 0.035 θ0=θ0αθ0J=00.01×(3.5)=0.035

θ 1 = θ 1 − α ∂ J ∂ θ 1 = 0 − 0.01 × ( − 10 ) = 0.1 \theta_1 = \theta_1 - \alpha \frac{\partial J}{\partial \theta_1} = 0 - 0.01 \times (-10) = 0.1 θ1=θ1αθ1J=00.01×(10)=0.1

小批量2

使用更新后的参数计算第二个小批量的梯度并更新参数:

  1. 对每个样本计算预测值 h ( θ ) h(\theta) h(θ)和误差:

h ( θ ) 5 = 0.035 + 0.1 × 5 = 0.535 误差 = 0.535 − 6 = − 5.465 h ( θ ) 6 = 0.035 + 0.1 × 6 = 0.635 误差 = 0.635 − 7 = − 6.365 h ( θ ) 7 = 0.035 + 0.1 × 7 = 0.735 误差 = 0.735 − 8 = − 7.265 h ( θ ) 8 = 0.035 + 0.1 × 8 = 0.835 误差 = 0.835 − 9 = − 8.165 \begin{align*} h(\theta)_{5} &= 0.035 + 0.1 \times 5 = 0.535 &\text{误差} &= 0.535 - 6 = -5.465 \\ h(\theta)_{6} &= 0.035 + 0.1 \times 6 = 0.635 &\text{误差} &= 0.635 - 7 = -6.365 \\ h(\theta)_{7} &= 0.035 + 0.1 \times 7 = 0.735 &\text{误差} &= 0.735 - 8 = -7.265 \\ h(\theta)_{8} &= 0.035 + 0.1 \times 8 = 0.835 &\text{误差} &= 0.835 - 9 = -8.165 \\ \end{align*} h(θ)5h(θ)6h(θ)7h(θ)8=0.035+0.1×5=0.535=0.035+0.1×6=0.635=0.035+0.1×7=0.735=0.035+0.1×8=0.835误差误差误差误差=0.5356=5.465=0.6357=6.365=0.7358=7.265=0.8359=8.165

  1. 计算梯度:

∂ J ∂ θ 0 = 1 4 ∑ i = 1 4 ( − 5.465 − 6.365 − 7.265 − 8.165 ) = 1 4 ( − 27.26 ) = − 6.815 \frac{\partial J}{\partial \theta_0} = \frac{1}{4} \sum_{i=1}^{4} (-5.465 - 6.365 - 7.265 - 8.165) = \frac{1}{4} (-27.26) = -6.815 θ0J=41i=14(5.4656.3657.2658.165)=41(27.26)=6.815

∂ J ∂ θ 1 = 1 4 ∑ i = 1 4 ( − 5.465 × 5 − 6.365 × 6 − 7.265 × 7 − 8.165 × 8 ) \frac{\partial J}{\partial \theta_1} = \frac{1}{4} \sum_{i=1}^{4} (-5.465 \times 5 - 6.365 \times 6 - 7.265 \times 7 - 8.165 \times 8) θ1J=41i=14(5.465×56.365×67.265×78.165×8)

= 1 4 ( − 27.325 − 38.19 − 50.855 − 65.32 ) = 1 4 ( − 181.69 ) = − 45.4225 = \frac{1}{4} (-27.325 - 38.19 - 50.855 - 65.32) = \frac{1}{4} (-181.69) = -45.4225 =41(27.32538.1950.85565.32)=41(181.69)=45.4225

  1. 更新参数:

θ 0 = θ 0 − α ∂ J ∂ θ 0 = 0.035 − 0.01 × ( − 6.815 ) = 0.035 + 0.06815 = 0.10315 \theta_0 = \theta_0 - \alpha \frac{\partial J}{\partial \theta_0} = 0.035 - 0.01 \times (-6.815) = 0.035 + 0.06815 = 0.10315 θ0=θ0αθ0J=0.0350.01×(6.815)=0.035+0.06815=0.10315

θ 1 = θ 1 − α ∂ J ∂ θ 1 = 0.1 − 0.01 × ( − 45.4225 ) = 0.1 + 0.454225 = 0.554225 \theta_1 = \theta_1 - \alpha \frac{\partial J}{\partial \theta_1} = 0.1 - 0.01 \times (-45.4225) = 0.1 + 0.454225 = 0.554225 θ1=θ1αθ1J=0.10.01×(45.4225)=0.1+0.454225=0.554225

多次迭代

继续对所有小批量重复上述计算和更新步骤,直到模型参数收敛。

总结

小批量梯度下降通过每次使用一个小批量的训练数据计算梯度并更新参数,结合了批量梯度下降和随机梯度下降的优点,提高了计算效率并保持了梯度更新的稳定性。通过具体数据示例,可以清楚地看到小批量梯度下降如何在每次迭代中逐步更新

  • 22
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值