深度学习11(调参设参+批标准化)

发布于:2025-07-11 ⋅ 阅读:(20) ⋅ 点赞:(0)

调参技巧

        对于调参,通常采用跟机器学习中介绍的网格搜索一致,让所有参数的可能组合在一起,得到N组结果。然后去测试每一组的效果去选择。
假设我们现在有两个参数     

α:0.1, 0.01, 0.001

β:0.8, 0.88. 0.9

        这样会有9种组合,而合理的参数设置为:
学习率a:0.0001、0.001、0.01、0.1,跨度稍微大一些。
算法参数8,0.999、0.9995、0.998等,尽可能的选择接近于1的值。
        注:而指数移动平均值参数:B从0.9增加到0.9005对结果几乎没有影响,而B从0.999 到 0.9995 对结果的影响会较大,因为是指数级增加。

        通常我们有这么多参数组合,每一个组合运行训练都需要很长时间,但是如果资源允许的话,可以同时并行训练多个参数模型,并观察效果。如果资源不允许的话,还是得一个模型一个模型的运行,并时刻观察损失的变化。所以对于这么多的超参数,调优是一件复杂的事情,怎么让这么多的超参数范围,工作效果还能达到更好训练变得更容易呢?

        就是接下来的批标准化


批标准化(Batch Normalization

        批标准化提出的背景:

        调参过程麻烦,训练过程太长。
        训练深度神经网络很复杂,因为在训练期间每层输入的分布发生变化,因为前一层的参数发生了变化。这通过要求较低的学习率和仔细的参数初始化来减慢训练速度,并且使得训练具有饱和非线性的模型变得非常困难。

        批标准化过程:

        一般被插入在激活函数之前,插入之后为:线性变换 → BN 层 → 激活函数。

        批标准化公式:

        \mu =\tfrac{1}{m}\sum_{i=1}^{n} z_i

        \sigma^2=\frac{1}{m} \sum_{i=1}^{n}(z_i - \mu ^2)

        Z_{norm} =\frac{z-\mu }{\sqrt{\sigma^2+\epsilon } }

        \tilde{Z} =\gamma Z_{norm} \beta

        其中ε是为了防止分母为0,取值10-8。这样使得所有的1层输入z为0,方差为1。但是一般不想让隐藏层单元总是含有平均值0和方差 1,认为也许隐藏层单元有了不同的分布会更有意义。

        其中,γ和β都是模型的学习参数(如同W和b一样),所以可以用各种梯度下降算法来更新y和B的值,如同更新神经网络的权重一样。如果各隐藏层的输入均值在靠近0的区域,即处于激活函数的线性区域,不利于训练非线性神经网络,从而得到效果较差的模型。因此,需要用y和 B对标准化后的结果做进一步处理,

为什么批标准化能使训练更简单:

        深层神经网络在训练时,每一层的输入分布会随着前一层参数更新而不断变化(即“内部协变量偏移”)。这迫使后续层需要不断适应新的数据分布,导致训练变慢。

        Batch Normalization的作用就是减小内部协变量偏移(Internal Covariate Shift) 所带来的影响让模型变得更加健壮,鲁棒性(Robustness)更强。即使输入的值改变了,由于 Batch Normalization 的作用,使得均值和方差保持固定(由每一层~和B决定),限制了在前层的参数更新对数值分布的影响程度,因此后层的学习变得更容易一些。Batch Normalization 减少了各层W和b之间的耦合性,让各层更加独立,实现自我训练学习的效果。


网站公告

今日签到

点亮在社区的每一天
去签到