网络优化与正则化学习

完整的xmind脑图
本文的参考书《神经网络与深度学习》PDF

1、网络优化

1.1、高维变量的非凸优化

  • 低维空间的非凸优化问题问题主要是存在一些局部最优点

    • 基于梯度下降的优化方法会陷入局部最优点,因此在低维空间中非凸优化问题的主要难点是如何选择初始化参数和逃离局部最优点
    • 局部最小值要求在每一维度上都是最小值
  • 在高维空间中,非凸优化难点在于如何逃离鞍点

    在这里插入图片描述

    • 鞍点的梯度为0,在一些维度上是最高点,一些维度上是最低点
    • 基于梯度下降的优化方法很难从鞍点中逃离,可通过梯度方向上引入随机性,可以有效地逃离鞍点
  • 平坦最小值

    • 导致损失函数在局部最小解附近通常是一个平坦的区域

      • 在这里插入图片描述

      • 当模型收到一个平坦最小值时,其鲁棒性会更好,即微小的参数变动不会剧烈影响模型能力

      • 模型收到一个尖锐的局部最小值时,其鲁棒性会比较差

      • 具有良好泛化能力的模型应该是鲁棒的。

      • 在训练神经网络时,我们通常没有必要找到全局最小值,这反而可能导致过拟合

1.2、神经网络优化的改善方法

  • 使用更有效的优化算法来提高梯度下降优化方法的效率和稳定性。比如:动态学习调整、梯度估计修正

  • 使用更好的参数初始化方法、数据预处理方法来提高优化效率

  • 修改网络结构来得到更好的优化地形,比如使用ReLU激活函数、残差连接、逐层归一化

    • 优化地形:在高维空间中损失函数的曲面形状。好的优化地形通常比较平滑
  • 使用更好的超参数优化方法

2、优化算法

(1)调整学习率,使得优化更稳定,(2)梯度估计修正,优化训练速度

2.1小批量梯度下降(MBGD)

  • 每次迭代时,我们都随机选取一小部分训练样本来计算梯度并更新参数。

  • 既可以兼顾随机梯度下降法的优点,也可以提高训练效率

  • 影响因素

    • (1)批量大小
    • (2)学习率
    • (3)梯度估计

2.2随机梯度下降法

  • 随机梯度下降法(SGD)

    • 每次迭代时只采集一个样本,计算这个样本损失函数的梯度并更新参数
  • 批量梯度下降法(BGD)

    • 批量梯度下降法在每次迭代时都需要计算每个样本上损失函数的梯度并求和
    • 当训练样本数N很大时,空间复杂度比较高,每次迭代的计算开销也很大

2.3批量大小选择

  • 批量大小不影响随机梯度得期望,但是会影响随机梯度的方差。

    • 批量大小越大,随机梯度方差越小,引入的噪声也越小,训练也越稳定,因此可以设置较大的学习率
  • 线性缩放规则

    • 使学习率随着批量大小的增大而增大
    • 适用于批量大小比较小的时候,当批量大小非常大,线性缩放规则会使训练不稳定
  • 批量大小和模型泛化能力之间的关系

    • 批量越大,越有可能收敛到尖锐最小值
    • 批量越小,越有可能收敛到平坦最小值

2.4学习率的调整

  • 2.4.1学习率衰减(学习率退火)

    • 分段常数衰减(阶梯衰减)

      • 即每经过T1,T2,…Tm次迭代将学习率衰减为原来的a1,a2,…,am倍,其中Tm和am<1,Tm和am为根据经验设置的超参数
    • 逆时衰减

      • 在这里插入图片描述
    • 指数衰减

      • 在这里插入图片描述
    • 自然指数衰减

      • 在这里插入图片描述
    • 余弦衰减

      • 在这里插入图片描述
  • 2.4.2 学习率预热

    • 为了提高训练的稳定性,在最初几轮迭代中,采用比较小的学习率,等梯度下降到一定程度后在恢复到初始学习率

    • 逐渐预热

      • 在这里插入图片描述

      • 假设预热的迭代次数为𝑇′,初始学习率为𝛼0,在预热过程中,每次更新的学习率如上图。当预热过程结束,再选择一种学习率衰减方法来逐渐降低学习率.

  • 2.4.3周期性学习率调整

    • 当参数处于尖锐最小值附近时,增大学习率有助于逃离尖锐最小值

      • 当参数处于平坦最小值附近时,增大学习率依然有可能在该平坦最小值的吸引域
    • 循环学习率

      • 即让学习率在一个区间内周期性地增大和缩小

      • 可以使用线性缩放来调整学习率,成为三角循环学习率

      • 公式p160

        • 在这里插入图片描述
    • 带热重启的随机梯度下降

      • 利用热重启的方式来替代学习率衰减的方法

      • 学习率每隔一定周期后重新初始化为某个预先设定值,然后逐渐衰减。

      • 每次重启后模型参数不是从头开始优化,而是从重启前的参数基础上继续优化

        • 公式p161

          • 在这里插入图片描述
  • 2.4.4 AdaGrad算法

    • 它根据自变量在每个维度的梯度值得大小来调整各个维度上得学习率,从而避免统一的学习率难以适应所有维度得问题

    • 在这里插入图片描述

    • 如果目标函数有关自变量中某个元素的偏导数一直比较大,那么该元素的学习率将下降较快

      • 反之,如果目标函数有关自变量中的某个元素的偏导数一直都较小,那么该元素的学习率将下降较慢
    • 学习率在迭代早期下降比较快且当前解依然不佳时,AdaGrad算法在迭代后期由于学习率国小,可能比较难找到一个有用的解

  • 2.4.5 RMSprop算法

    • AdaGrad算法的状态变量St是截至时间步t所有小批量随机梯度gt按元素平方和

      • RMSprop算法将这些梯度按元素平方做指数加权移动平均。
      • 具体来说给定超参数0<=r<1,RMSprop算法在时间步>0计算
    • 在这里插入图片描述

  • 2.4.6 AdaDelta算法

    • AdaDelta算法没有学习率这一超参数
    • 在这里插入图片描述

2.5 梯度估计修正

  • 随机梯度下降方法中每次迭代的梯度估计和整个训练集上的最优梯度并不一致,具有一定的随机性

  • 一种有效地缓解梯度估计随机性的方式是通过使用最近一段时间内的平均梯度来代替当前时刻的随机梯度来作为参数更新的方向,从而提高优化速度

  • 2.5.1 动量法

    • 用之前积累动量来替代真正的梯度

    • 在这里插入图片描述

    • 当某个参数在最近一段时间内的方向不一致时,其真实的参数更新幅度变小

      • 相反,在最近一段时间内的梯度方向都一致时,其真实的参数更新幅度变大,其加速作用
  • 2.5.2 Nesterov加速梯度

    • 在这里插入图片描述
  • 2.5.3 Adam算法

    • Adam算法在RMSprop算法基础上对小批量随机梯度做了指数加权移动平均

    • Adam算法使用了动量变量和RMSProp算法中小批量随机梯度按元素平方的指数加权移动平均变量St,并在时间步0将他们中每个元素初始化为0

    • 在这里插入图片描述

    • 在这里插入图片描述

  • 2.5.4 梯度截断

    • 在基于梯度下降的优化过程中,如果梯度突然增大,用大的梯度更新参数反而会导致其远离最优点。

      • 为了避免这种情况,当梯度的模大于一定阈值时,就对梯度进行截断,称为梯度截断
    • 梯度截断是一种比较简单的启发方式,把梯度的模限定在一个区间,当梯度的模小于或大于这个区间时就进行截断

      • 截断可分为:

        • 按值截断

          • 在第 𝑡 次迭代时,梯度为 𝒈𝑡,给定一个区间 [𝑎, 𝑏],如果一个参数数的梯度小于𝑎时,就将其设为𝑎;如果大于𝑏时,就将其设为𝑏.

          • 在这里插入图片描述

        • 按模截断

          • 按模截断是将梯度的模截断到一个给定的截断阈值𝑏.
          • 在这里插入图片描述

2.6 优化算法小结

  • 在这里插入图片描述

3、参数初始化

当使用梯度下降发来进行优化网络参数时,参数初始值的选取十分关键,关系到网络的优化效率和泛化能力。

3.1 预训练初始化

  • 预训练初始化通常会提升模型泛化能力的一种解释是预训练任务起到一定的正则化
  • 不同的参数初始化值会收敛到不同的局部最优解
  • 通常情况下,一个已经在大规模数据上训练过的模型可以提供一个好的参数初始值,这种初始化方法称为预训练初始化
  • 预训练模型在目标任务上的学习过程也称为精调

3.2 随机初始化

  • 在线性模型的训练中,我们一般将参数全部初始化为0,但是这在神经网络中会存在一些问题。

    • 如果参数都为0,在第一遍前向计算时,所有的隐藏层神经元的激活值都相同
    • 在反向传播时,所有权重的更新也都相同,这样会导致隐藏层神经元没有区分性
    • 这种现象称为对称权重。为了打破这个平衡,比较好的方式对每个参数都随机初始化,使得不同神经元之间的区分性更好
  • 3.2.1 基于固定方差的参数初始化

    • 一种最简单的随机初始化方法是从一个固定均值(通常为0)和方差 𝜎²的 分布中采样来生成参数的初始值。

    • 基于固定方差的参数初始化方法主要有以下两种

      • (1)高斯分布初始化

        • 使用一个高斯分布𝒩(0, 𝜎²)对每个参数进行随机初始化.
      • (2)均匀分布初始化

        • 在一个给定的区间[-r,r]内采用均匀分布来初始化
      • 在基于古丁方差的随机初始化方法中,比较关键的是如何设置方差σ²。

        • 如果参数范围取的太小,一是会导致神经元的输出过小,经过多层之后信号慢慢消失
        • 二是还会使得Sigmoid型函数丢失非线性的能力。
  • 3.2.2 基于方差缩放的参数初始化

    • 方差缩放

      • 初始化深度网络时,为了缓解梯度消失或爆炸问题,我们尽可能保持每个神经元的输入和输出的方差一致,根据神经元的连接数量来自适应地调整初始化分布的方差
    • 3.2.2.1 Xavier初始化

    • 3.2.2.2 He初始化

    • 在这里插入图片描述

  • 3.2.3 正交初始化

    • 正交初始化的具体实现过程可以分为两步

      • (1) 用均值为0,方差为1的高斯分布初始化一个矩阵
      • (2)将这个矩阵用奇异值分解得到两个正交矩阵,并使用其中之一作为权重矩阵
    • 当在非线性神经网络中应用正交初始化时,通常需要将正交矩阵乘以一个缩放系数ρ

3.3 固定值初始化

  • 对于一些特殊的参数,可以根据经验用一个特殊的固定值来进行初始化。

    • 比如偏置(Bias)通常用0来初始化,但是有时可以设置某些经验以提高优化效率。
  • 在LSTM网络的遗忘门在,偏置通常初始化为1或2,使得时序上的梯度变大

  • 对于使用ReLU的神经元,有时偏置设为0.01,使得ReLU神经元在训练初期更容易激活,从而获得一定的梯度来进行误差反向传播。

4、数据预处理

如果一个机器学习算法在缩放全部或部分特征后不影响他的学习和预测,我们就称为该算法具有尺度不变性

  • 比如线性分类器是尺度不变性,而邻近分类器就是尺度敏感的

归一化方法泛指把数据特征转换为相同尺度的方法

  • 最小最大值归一化

    • 是一种非常简单的归一化方法,通过缩放将每一个特征的取值范围归一到[0,1]或[-1,1]之间
  • 标准化

    • 也叫做Z值归一化,来源于统计上的标准分数。将每一个维特征都调整为均值为0,方差为1.
  • 白化

    • 是一种重要的预处理方法,用来降低输入数据特征之间的冗余性。输入数据经过百花处理后,特征之间的相关性较低,并且所有特征具有相同的方差

5、逐层归一化

逐层归一化可以有效提高训练效率的原因有

  • (1)更好的尺度不变性

    • 把每个神经层的输入分布都归一化为标准正太分布,可以使得每个神经层对其输入具有更好得尺度不变性,
  • (2)更平滑得优化地形

    • 逐层归一化一方面可以使得大部分神经层得输入处于不饱和区域,从而让梯度变大,避免梯度消失问题
    • 另一方面还可以使得神经网络得优化地形更加平滑,以及使梯度变得更加稳定,从而允许我们使用更大的学习率

尺度不变性可以使得我们更加高效地进行参数初始化以及超参数选择

5.1 批量归一化

  • 具体看书《神经网络与深度学习》p175
  • 批量归一化是对一个中间层的单个神经元进行归一化操作,因此要求小批量样本的数量不能太小,否则难以计算单个神经元的统计系统

5.2 层归一化

  • 具体看书《神经网络与深度学习》p177
  • 是和批量归一化非常类似的方法,和批量归一化不同的是,层归一化是对一个中间层的所有神经元进行归一化

5.3 权重归一化

  • 对神经网络的连接权重进行归一化,通过在参数化方法,将连接权重分解为长度和方向上两种参数
  • 由于在神经网络中权重经常是共享的,权重数量往往比神经元数量少,因此权重归一化的开销会比较小

5.4 局部相应归一化

  • 通常用于基于卷积的图像处理上

6、超参数优化

常见的超参数有以下三类

  • (1) 网络结构包括神经元之间的连接关系、层数、每层的神经元数量、激活函数的类型等
  • (2)优化参数,包括优化方法、学习率、小批量的样本数量
  • (3) 正则化系数

超参数优化存在的困难

  • (1)超参数优化是一个组合优化问题,无法像一般参数那样通过梯度下降方法来优化,也没有一种通用有效的优化方法
  • (2)评估一组超参数配置的时间代价高,导致一些优化方法在超参数优化中难以应用

6.1 网格搜索

  • 一种通过尝试所有超参数的组合来寻址合适一组超参数配置的方法
  • 网格搜索根据这些超参数的不同组合分别训练一个模型,然后测试这些模型在开发集上的性能,选取一组性能最好的配置

6.2 随机搜索

  • 一种在实践中比较有效的改进方法是对超参数进行随机组合,然后选取一个性能最好的配置。

6.3贝叶斯优化

  • 贝叶斯优化是一种自适应的超参数优化方法,根据当前已经实验的超参数组合,来预测下一个可能带来最大收益的组合
  • 一种比较常用的贝叶斯优化方法为时序模型优化 具体看书p180

6.4 动态资源分配 p181

  • 最优臂问题,即在给定有限的机会次数下,如何玩这些赌博机并找到收益最大臂

  • 动态资源分配的关键是将有限的资源分配给更有可能带来收益的超参数组合.一种有效方法是逐次减半,将超参数优化看作一种非随机的最优臂问题.

  • 在逐次减半方法中,尝试的超参数配置数量𝑁 十分关键

    • 如果𝑁 越大,得到最佳配置的机会也越大,但每组配置分到的资源就越少,这样早期的评估结果可能不准确.
    • 反之,如果 𝑁 越小,每组超参数配置的评估会越准确,但有可能无法得到最优的配置
    • 因此如何设置N是平衡“利用-探索“的一个关键因素。一种改进的方法是HyperBand方法,通过尝试不同的N来选取最优参数

6.5 神经架构搜索

  • 是一个新的比较有前景的研究方向,通过神经网络自动实现网络架构的设计。
  • 一个神经网络的架构可以用一个变长的字符串来描述.利用元学习的思想,神经架构搜索利用一个控制器来生成另一个子网络的架构描述
  • 控制器可以由一个循环神经网络来实现.控制器的训练可以通过强化学习来完成,其奖励信号为生成的子网络在开发集上的准确率

## 7 、网络正则化 p183

正则化是一类通过限制模型复杂度,从而避免过拟合,提高泛化能力的方法,比如引入约束、增加先验、提前停止等

7.1 ℓ1 和ℓ2 正则化

  • 一种折中的正则化方法是同时加入ℓ1 和ℓ2 正则化 ,称为弹性网络正则化
  • 在这里插入图片描述

7.2 权重衰减

  • 在这里插入图片描述

7.3提前停止

  • 提前停止对于深度神经网络来说是一种简单有效的正则化方法.
  • 由于深度神经网络的拟合能力非常强,因此比较容易在训练集上过拟合.
  • 使用梯度下降法进行优化时,我们可以使用一个和训练集独立的样本集合,称为验证集,并用验证集上的错误来代替期望错误.当验证集上的错误率不再下降,就停止迭代.

7.4 丢弃发(dropout)

7.5 数据增强

  • (1) 旋转(Rotation):将图像按顺时针或逆时针方向随机旋转一定角度.
  • (2) 翻转(Flip):将图像沿水平或垂直方向随机翻转一定角度.
  • (3) 缩放(Zoom In/Out):将图像放大或缩小一定比例.
  • (4) 平移(Shift):将图像沿水平或垂直方法平移一定步长.
  • (5) 加噪声(Noise):加入随机噪声.

7.6 标签平滑

  • 在数据增强中,我们可以给样本特征加入随机噪声来避免过拟合.同样,我们也可以给样本的标签引入一定的噪声.
  • 假设训练数据集中有一些样本的标签是被错误标注的,那么最小化这些样本上的损失函数会导致过拟合
  • 一种改善的正则化方法是标签平滑,即在输出标签中添加噪声来避免模型过拟合

8、优化问题

神经网络的损失函数是一个非凸优化问题,找到全局最优解比较困难
参数非常多,训练数据大
存在梯度消失和梯度爆炸的问题,导致基于梯度的优化方法经常失效

9、泛化问题

由于深度神经网络的复杂度比较高,并且拟合能力很强,很容易在训练集上产生过拟合。
因此,通过一定的正则化来改进网络的泛化能力
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值