吴恩达Coursera深度学习(2-3)超参数调试和Batch Norm

转载博客:http://blog.csdn.net/Koala_Tree

Class 2:改善深层神经网络:超参数调试、正则化以及优化

Week 3:超参数调试和Batch Norm

目录

  • Class 2改善深层神经网络超参数调试正则化以及优化
  • Week 3超参数调试和Batch Norm
  • 目录
    • 1超参数调试处理
    • 2为超参数选择合适的范围
    • 3超参数调试实践Pandas vs Caviar
    • 4网络中激活值的归一化
    • 5在神经网络中融入Batch Norm
    • 6Batch Norm 起作用的原因
    • 7在测试数据上使用 Batch Norm
    • 8Softmax 回归
    • 9训练 Sotfmax 分类器

1、超参数调试处理

吴恩达Coursera深度学习(2-3)超参数调试和Batch Norm_第1张图片
吴恩达Coursera深度学习(2-3)超参数调试和Batch Norm_第2张图片

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

  • Scale均匀随机

在超参数选择的时候,一些超参数是在一个范围内进行均匀随机取值,如隐藏层神经元结点的个数、隐藏层的层数等。但是有一些超参数的选择做均匀随机取值是不合适的,这里需要按照一定的比例在不同的小范围内进行均匀随机取值,以学习率α的选择为例,在0.001,…,1范围内进行选择:
吴恩达Coursera深度学习(2-3)超参数调试和Batch Norm_第3张图片
如上图所示,如果在 0.001,…,1 的范围内进行进行均匀随机取值,则有90%的概率 选择范围在 0.1∼1 之间,而只有10%的概率才能选择到0.001∼0.1之间,显然是不合理的。

所以在选择的时候,在不同比例范围内进行均匀随机取值,如0.001∼0.001、0.001∼0.01、0.01∼0.1、0.1∼1 范围内选择。
吴恩达Coursera深度学习(2-3)超参数调试和Batch Norm_第4张图片

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

在超参数调试的实际操作中,我们需要根据我们现有的计算资源来决定以什么样的方式去调试超参数,进而对模型进行改进。下面是不同情况下的两种方式:
吴恩达Coursera深度学习(2-3)超参数调试和Batch Norm_第5张图片

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

4、网络中激活值的归一化

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

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

Batch Norm 的实现
吴恩达Coursera深度学习(2-3)超参数调试和Batch Norm_第6张图片

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

在深度神经网络中应用Batch Norm,这里以一个简单的神经网络为例,前向传播的计算流程如下图所示:
吴恩达Coursera深度学习(2-3)超参数调试和Batch Norm_第7张图片
吴恩达Coursera深度学习(2-3)超参数调试和Batch Norm_第8张图片

6、Batch Norm 起作用的原因

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

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

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

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

这是因为第一个训练集合中均是黑猫,而第二个训练集合中各色猫均有,虽然都是猫,但是很大程度上样本的分布情况是不同的,所以我们无法保证模型可以仅仅通过黑色猫的样本就可以完美的找到完整的决策边界。第二个样本集合相当于第一个样本的分布的改变,称为:Covariate shift。如下图所示:
吴恩达Coursera深度学习(2-3)超参数调试和Batch Norm_第9张图片
那么存在Covariate shift的问题如何应用在神经网络中?就是利用Batch Norm来实现。如下面的网络结构:

吴恩达Coursera深度学习(2-3)超参数调试和Batch Norm_第10张图片
网络的目的是通过不断的训练,最后输出一个更加接近于真实值的y^。现在以第2个隐藏层为输入来看:
吴恩达Coursera深度学习(2-3)超参数调试和Batch Norm_第11张图片
吴恩达Coursera深度学习(2-3)超参数调试和Batch Norm_第12张图片

7、在测试数据上使用 Batch Norm

吴恩达Coursera深度学习(2-3)超参数调试和Batch Norm_第13张图片
吴恩达Coursera深度学习(2-3)超参数调试和Batch Norm_第14张图片

8、Softmax 回归

在多分类问题中,有一种 logistic regression的一般形式,叫做Softmax regression。Softmax回归可以将多分类任务的输出转换为各个类别可能的概率,从而将最大的概率值所对应的类别作为输入样本的输出类别。

计算公式
下图是Softmax的公式以及一个简单的例子:
吴恩达Coursera深度学习(2-3)超参数调试和Batch Norm_第15张图片
可以看出Softmax通过向量z[L]计算出总和为1的四个概率。

在没有隐藏隐藏层的时候,直接对Softmax层输入样本的特点,则在不同数量的类别下,Sotfmax层的作用:
吴恩达Coursera深度学习(2-3)超参数调试和Batch Norm_第16张图片

9、训练 Sotfmax 分类器

理解 Sotfmax

为什么叫做Softmax?我们以前面的例子为例,由z[L]到a[L]的计算过程如下:
吴恩达Coursera深度学习(2-3)超参数调试和Batch Norm_第17张图片

通常我们判定模型的输出类别,是将输出的最大值对应的类别判定为该模型的类别,也就是说最大值为的位置1,其余位置为0,这也就是所谓的“hardmax”。而Sotfmax将模型判定的类别由原来的最大数字5,变为了一个最大的概率0.842,这相对于“hardmax”而言,输出更加“soft”而没有那么“hard”。

Sotfmax回归 将 logistic回归 从二分类问题推广到了多分类问题上。

Softmax 的Loss function
吴恩达Coursera深度学习(2-3)超参数调试和Batch Norm_第18张图片
也就是说,这里的损失函数的作用就是找到你训练集中的真实的类别,然后使得该类别相应的概率尽可能地高,这其实是最大似然估计的一种形式。

对应的Cost function如下:
吴恩达Coursera深度学习(2-3)超参数调试和Batch Norm_第19张图片

你可能感兴趣的:(Coursera深度学习)