优化算法篇

目录

1、Mini-batch 梯度下降(Mini-batch gradient descent)

2、指数加权平均数

3、动量梯度下降法(Gradient descent with Momentum)

4、RMSprop

5、Adam 优化算法(Adam optimization algorithm)

6、学习率衰减(Learning rate decay)


1、Mini-batch 梯度下降(Mini-batch gradient descent

  • 之前学过,向量化能够有效地对所有𝑚个样本进行计算,允许处理整个训练集, 而无需某个明确的公式。但是如果 m 很大的话,处理速度仍然很慢。所以使用Mini-batch 梯度下降优化算法可以使我们的神经网络运行更快
  • Mini-batch 梯度下降的思想:把训练集分割为小一点的子集训练,这些子集被取名为mini-batch,假设每一个子集中只有 1000 个样本,那么把其中的𝑥 (1)到𝑥(1000)取出来,将其称第一个子训练集,也叫做 mini-batch,然后你再取出接下来的 1000个样本,从𝑥 (1001)到𝑥 (2000),然后再取1000个样本,以此类推。把𝑥 (1)到𝑥 (1000)称为𝑋 {1},𝑥 (1001)𝑥 (2000)称为𝑋 {2},如果 你的训练样本一共有 500 万个,每个 mini-batch 都有 1000 个样本,也就是说,有 5000 个 mini-batch,即为𝑋 {5000}。同样对𝑌也要进行相同处理,你也要相应地拆分𝑌的训练集,所以这是𝑌 {1},然后从𝑦 (1001)到𝑦 (2000),这个叫𝑌 {2},一直到𝑌 {5000}

  • mini-batch的数量𝑡组成了𝑋 {𝑡}𝑌 {𝑡},这就是1000个训练样本,包含相应的输入输出对
  • 𝑋 {𝑡} 𝑌 {𝑡} 的维数:如果𝑋 {1}是一个有 1000 个样本的训练集,或者说是 1000 个样本的 𝑥
    值,所以维数应该是(𝑛𝑥 , 1000),𝑋 {2}的维数应该是(𝑛𝑥 , 1000),以此类推。因此所有的子集
    维数都是 (𝑛 𝑥 , 1000) ,而这些(𝑌 {𝑡})的维数都是(1,1000)
  • batch 梯度下降法指的是我们之前讲过的梯度下降法算法, 就是同时处理整个训练集,这个名字就是来源于能够同时看到整个 batch 训练集的样本被处理
  • 每次同时处理的单个的 mini-batch 𝑋 {𝑡} 𝑌 {𝑡} ,而不是同时处理全部的 𝑋 𝑌 训练集
  • Mini-batch 梯度下降的原理:在训练集上运行 mini-batch梯度下降法,你运行 for t=1……5000,因为我们有 5000 个各有 1000 个样本的组,在 for 循环里要做得基本就是对𝑋 {𝑡}和𝑌 {𝑡}执行一步梯度下降法。假设有一个拥有1000个样本的训练集,而且假设已经很熟悉一次性处理完的方法,要用向量化去几乎同时处理 1000个样本

  • 首先对输入也就是𝑋 {𝑡},执行前向传播,然后执行𝑧 [1] = 𝑊[1]𝑋 + 𝑏 [1],在处理第一个mini
    -batch,在处理 mini-batch 时它 变成了𝑋 {𝑡} ,即 𝑧 [1] = 𝑊 [1] 𝑋 {𝑡} + 𝑏 [1] ,然后执行𝐴 [
    1]𝑘 = 𝑔 [1] (𝑍 [1] ) ,之所以用大写的𝑍是因为这是一个向量内涵,以此类推,直到𝐴 [𝐿] = 𝑔 [𝐿] (𝑍 [𝐿] ),这就是预测值
  • 接下来你要计算损失成本函数 𝐽,因为子集规模是 1000
    这(𝐿(𝑦^ (𝑖) , 𝑦 (𝑖) ) )指的是来自于 mini-batch 𝑋 {𝑡} 𝑌 {𝑡} 中的样本 
    正则化的术语: 

  • 执行反向传播来计算𝐽 {𝑡} 的梯度,你只是使用𝑋 {𝑡} 𝑌 {𝑡},然后更新加权值,

  •  batch 梯度下降法,一次遍历训练集只能做一个梯度下降,使用 mini-batch 梯度下降法,一次遍历训练集,能做 5000 个梯度下降
  • 如果有一个丢失的训练集,mini-batch 梯度下降法比 batch 梯度下降法运行地更快,
    所以几乎每个研习深度学习的人在训练巨大的数据集时都会用到
  • mini-batch 的大小选择:如果选择mini-batch 的大小为 m 个样本,则即为 batch 梯度下降法。若是选择mini-batch 的大小为 1 个样本,即为叫做随机梯度下降法,每个样本都是独立的 mini-batch,当第一个 mini-batch,也就是𝑋 {1}和𝑌 {1},如果 mini-batch 大小为 1,它就是你的第一个训练样本,这就是你的第一个训练样本。接着再看第二个 mini-batch,也就是第二个训练样本,采取梯度下降步骤,然后是第三个训练样本,以此类推,一次只处理一个
  • mini-batch的选择方法:(1)、
    如果训练集较小,直接使用 batch 梯度下降法,样本集较小就没必要使用 mini-
    batch 梯度下降法,可以快速处理整个训练集,所以使用 batch 梯度下降法也很好,这里
    的少是说小于 2000 个样本,这样比较适合使用 batch 梯度下降法。不然,样本数目较大的 话,一般的 mini-batch 大小为 64 到 512,考虑到电脑内存设置和使用的方式,如果 mini- batch 大小是 2 的𝑛次方,代码会运行地快一些,64 就是 2 的 6 次方,以此类推,128 是 2 的 7 次方,256 是 2 的 8 次方,512 是 2 的 9 次方。因此,建议把mini-batch的大小直接设置为2的n次方 (2)、在mini-batch中要确保 𝑋 {𝑡} 𝑌 {𝑡} 要符合 CPU / GPU 内存,如果处理的 mini-batch CPU/ GPU 内存不相符,不管用什么方法处理数据,会注意到算法的表现急转直下,效果很差

2、指数加权平均数

  • 𝑣𝑡 = 𝛽𝑣𝑡−1 + (1 − 𝛽)𝜃𝑡 中的 𝑣𝑡 、 𝑣𝑡−1 、𝜃𝑡的区别
  • 𝑣𝑡:当前时刻的加权平均数值。这个值是根据上一时刻的加权平均数值𝑣𝑡−1和当前时刻的预测值𝜃𝑡加权得到的。𝑣𝑡反映了当前时刻的综合信息,包括了过去的加权平均数值和当前的预测值
  • 𝑣𝑡−1:上一时刻的加权平均数值。这个值是在上一时刻根据公式计算得到的加权平均数。𝑣𝑡−1代表了上一时刻的综合信息和预测
  • 𝜃𝑡:当前时刻的温度预测值或估计值。这个值是基于历史数据、模型或其他方法得到的对当前时刻温度预测。𝜃𝑡是根据过去的数据和模型进行计算或估计的温度值,用于预测当前时刻的温度
  • 指 数 加 权 平 均 的 偏 差 修 正:指数加权平均的偏差修正是为了消除由于初始条件对指数加权平均的偏差。由于指数加权平均是基于前一时刻的加权平均和当前时刻的观测值进行,因此初始时刻的加权平均可能会受到较大的影响,导致偏差。修正系数:𝑣𝑡/(1−𝛽^2)

3、动量梯度下降法(Gradient descent with Momentum

  • 基本的想法就是计算梯度的指数加权平均数,并利用该梯度更新你的权重
  • 运行速度几乎总是快于标准的梯度下降算法

4、RMSprop

  • 可以加速梯度下降
  • 在第 𝑡 次迭代中,该算法会照常计算当下 mini-batch 的微分,𝑑𝑊,𝑑𝑏
  • 指数加权平均数,用到新符号 𝑆 𝑑𝑊 ,而不是𝑣𝑑𝑊,因此 𝑆 𝑑𝑊 = 𝛽𝑆 𝑑𝑊 + (1 − 𝛽)𝑑𝑊^ 2,
    同 样𝑆 𝑑𝑏 = 𝛽𝑆 𝑑𝑏 + (1 − 𝛽)𝑑𝑏^ 2
  • 接着 RMSprop 会这样更新参数值,𝑊: = 𝑊 − 𝑎 *𝑑𝑊 /√𝑆𝑑𝑊 ,𝑏: = 𝑏 − 𝛼*𝑑𝑏/√𝑆𝑑𝑏,

5、Adam 优化算法(Adam optimization algorithm)

  • Adam 优化算法基本上就是将 Momentum RMSprop 结合在一起
  • 首先要初始化, 𝑣 𝑑𝑊 = 0 𝑆 𝑑𝑊 = 0 𝑣 𝑑𝑏 = 0 𝑆 𝑑𝑏 = 0 ,在第 𝑡 次迭 代中,要计算微分,用当前的 mini-batch 计算 𝑑𝑊 𝑑𝑏 ,一般会用 mini-batch 梯度下降法
  • 接下来计算 Momentum 指数加权平均数,所以 𝑣 𝑑𝑊 = 𝛽 1 𝑣 𝑑𝑊 + (1 − 𝛽 1 )𝑑𝑊 (使用 𝛽 1 , 这样就不会跟超参数𝛽 2 混淆,因为后面 RMSprop 要用到 𝛽 2)。同样 𝑣 𝑑𝑏 = 𝛽 1 𝑣 𝑑𝑏 + (1 − 𝛽 1 )𝑑𝑏
  • RMSprop 进行更新,即用不同的超参数 𝛽 2 𝑆 𝑑𝑊 = 𝛽 2 𝑆 𝑑𝑊 + (1 − 𝛽 2 )(𝑑𝑊) ^ 2 , 再说一次,这里是对整个微分𝑑𝑊 进行平方处理, 𝑆 𝑑𝑏 = 𝛽 2 𝑆 𝑑𝑏 + (1 − 𝛽 2 )(𝑑𝑏) ^ 2
  • 相当于 Momentum 更新了超参数 𝛽 1 RMSprop 更新了超参数 𝛽 2。一般使用 Adam 算法的时候,要计算偏差修正

  • Adam 算法结合了 Momentum RMSprop 梯度下降法,并且是一种极其常用的学
    习算法,被证明能有效适用于不同神经网络,适用于广泛的结构

6、学习率衰减(Learning rate decay)

  • 学习率衰减(Learning rate decay)是在训练神经网络中常用的一种策略。随着训练的进行,逐渐降低学习率可以帮助优化算法在训练的早期快速收敛,而在训练的后期更加精细地搜索最优解,从而提高模型的性能和稳定性
  • 学习率衰减是优化神经网络的重要策略之一,可以帮助提高模型的训练效果和泛化能力。不同的衰减方式和参数设置适用于不同的问题和模型,需要根据具体情况进行选择和调整
  • 学习率衰减可以通过以下几种方式实现

(1)、固定衰减:设置一个固定的衰减因子,例如每个固定的迭代步骤或每隔固定的迭代次数将学习率乘衰衰减因子。这种方式简单直接,但需要手动选择合适的衰减因子和衰减周期

(2)、基于指数衰减:学习率按指数函数进行衰减,例如每个固定的迭代步骤或每隔固定的迭代次数,将学习率乘以衰减因子,衰减因子越小,衰减越快。指数衰减可以通过以下公式实现:学习率 = 初始学习率 * 衰减因子 ^ (迭代步骤 / 衰减周期)

(3)、基于余弦退火(Cosine annealing):学习率按余弦函数进行衰减。在训练的前期使用较大的学习率,然后逐渐降低学习率到一个很小的值。这种方式在一些训练策略中被证明可以帮助模型跳出局部最小值并找到更好的全局最小值

(4)、基于验证集的动态衰减:使用验证集的性能指标作为衰减的标准,当验证集的性能不再提升时,降低学习率。这种方式可以根据模型在验证集上的表现来动态地调整学习率,以更好地适应不同阶段的训练过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Q渡劫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值