3超参数调试、batch正则化、程序框架

原文:https://zhuanlan.zhihu.com/p/30146018

1、超参数调试处理

  • 在机器学习领域,超参数比较少的情况下,我们之前利用设置网格点的方式来调试超参数;
  • 但在深度学习领域,超参数较多的情况下,不是设置规则的网格点,而是随机选择点进行调试。这样做是因为在我们处理问题的时候,是无法知道哪个超参数是更重要的,所以随机的方式去测试超参数点的性能,更为合理,这样可以探究更超参数的潜在价值。

2、为超参数选择合适范围

Scale均匀随机

在超参数选择的时候,一些超参数是在一个范围内进行均匀随机取值,如隐藏层神经元结点的个数、隐藏层的层数等。但是有一些超参数的选择做均匀随机取值是不合适的,这里需要按照一定的比例在不同的小范围内进行均匀随机取值,以学习率 α 的选择为例,在 0.001,…1 范围内进行选择:

如上图所示,如果在 0.001,…1 的范围内进行进行均匀随机取值,则有90%的概率 选择范围在 0.1,…1 之间,而只有10%的概率才能选择到 0.001,…1 之间,显然是不合理的。

所以在选择的时候,在不同比例范围内进行均匀随机取值,如 0.001,…0.0010.001,…0.010.01,…0.10.1,…1 范围内选择。

代码实现

r = -4 * np.random.rand()     # r in [-4,0]
learning_rate = 10 ** r      # 10^{r}

一般地,如果在 之间的范围内进行按比例的选择,则 r∈[a,b] ,

同样,在使用指数加权平均的时候,超参数 β 也需要用上面这种方向进行选择。

3、超参数调试实践–Pandas vs. Caviar

在超参数调试的实际操作中,我们需要根据我们现有的计算资源来决定以什么样的方式去调试超参数,进而对模型进行改进。下面是不同情况下的两种方式:

  • 在计算资源有限的情况下,使用第一种,仅调试一个模型,每天不断优化;
  • 在计算资源充足的情况下,使用第二种,同时并行调试多个模型,选取其中最好的模型。

网络中激活值的归一化

在Logistic Regression 中,将输入特征进行归一化,可以加速模型的训练。那么对于更深层次的神经网络,我们是否可以归一化隐藏层的输出 a[l] 或者经过激活函数前的 z[l] ,以便加速神经网络的训练过程?答案是肯定的。

常用的方式是将隐藏层的经过激活函数前的 z[l] 进行归一化。

Batch Norm的实现

5、在圣经网络中融入Batch Norm

6、Batch Norm起作用原因

First Reason

首先Batch Norm 可以加速神经网络训练的原因和输入层的输入特征进行归一化,从而改变Cost function的形状,使得每一次梯度下降都可以更快的接近函数的最小值点,从而加速模型训练过程的原理是有相同的道理。

只是Batch Norm 不是单纯的将输入的特征进行归一化,而是将各个隐藏层的激活函数的激活值进行的归一化,并调整到另外的分布。

Second Reason

Batch Norm 可以加速神经网络训练的另外一个原因是它可以使权重比网络更滞后或者更深层。

下面是一个判别是否是猫的分类问题,假设第一训练样本的集合中的猫均是黑猫,而第二个训练样本集合中的猫是各种颜色的猫。如果我们将第二个训练样本直接输入到用第一个训练样本集合训练出的模型进行分类判别,那么我们在很大程度上是无法保证能够得到很好的判别结果。

这是因为第一个训练集合中均是黑猫,而第二个训练集合中各色猫均有,虽然都是猫,但是很大程度上样本的分布情况是不同的,所以我们无法保证模型可以仅仅通过黑色猫的样本就可以完美的找到完整的决策边界。第二个样本集合相当于第一个样本的分布的改变,称为:Covariate shift。如下图所示:

那么存在Covariate shift的问题如何应用在神经网络中?就是利用Batch Norm来实现。如下面的网络结构:

网络的目的是通过不断的训练,最后输出一个更加接近于真实值的 y_hat 。现在以第2个隐藏层为输入来看:

Batch Norm 正则化效果

Batch Norm还有轻微的正则化效果。

这是因为在使用Mini-batch梯度下降的时候,每次计算均值和偏差都是在一个Mini-batch上进行计算,而不是在整个数据样集上。这样就在均值和偏差上带来一些比较小的噪声。那么用均值和偏差计算得到的也将会加入一定的噪声。

所以和Dropout相似,其在每个隐藏层的激活值上加入了一些噪声,(这里因为Dropout以一定的概率给神经元乘上0或者1)。所以和Dropout相似,Batch Norm 也有轻微的正则化效果。

这里引入一个小的细节就是,如果使用Batch Norm ,那么使用大的Mini-batch如256,相比使用小的Mini-batch如64,会引入跟少的噪声,那么就会减少正则化的效果。

7、在测试数据上使用batch norm

8、Softmax回归

例如要识别这一组图片中的四个类别,即多分类问题,就要用到Softmax回归。

Softmax回归可以将多分类任务的输出转换为各个类别可能的概率,从而将最大的概率值所对应的类别作为输入样本的输出类别。

例:

可以看出Softmax通过向量 z[l] 计算出总和为1的四个概率。最后会输出概率最大的那一类

9、训练Softmax分类器

Loss Function:


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 2470290795@qq.com

文章标题:3超参数调试、batch正则化、程序框架

文章字数:1.6k

本文作者:runze

发布时间:2020-02-18, 09:03:51

最后更新:2020-02-23, 08:30:33

原始链接:http://yoursite.com/2020/02/18/%E5%90%B4%E6%81%A9%E8%BE%BE%20%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/02%E6%94%B9%E5%96%84%E6%B7%B1%E5%B1%82%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C%EF%BC%9A%E8%B6%85%E5%8F%82%E6%95%B0%E8%B0%83%E8%AF%95%E3%80%81%E6%AD%A3%E5%88%99%E5%8C%96%E4%BB%A5%E5%8F%8A%E4%BC%98%E5%8C%96/3%E8%B6%85%E5%8F%82%E6%95%B0%E8%B0%83%E8%AF%95%E3%80%81batch%E6%AD%A3%E5%88%99%E5%8C%96%E3%80%81%E7%A8%8B%E5%BA%8F%E6%A1%86%E6%9E%B6/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏