超参数调试和Batch正则化

1. 调试处理

超参数调试和Batch正则化
学习速率是最重要的超参数。
超参数调试和Batch正则化
网格法,参数少的时候可以使用。
超参数调试和Batch正则化
参数多的时候就不好使了。
超参数调试和Batch正则化
先随机取值,然后使用这种粗糙到精细的策略。

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

超参数调试和Batch正则化
超参数调试和Batch正则化
有些情况不能用均匀取值,比如学习率从0.0001到1之间,均匀取值的结果就是0.1到1之间,包含90%的可能性。使用对数标尺来搜索超参数更为合理。
一般实在10a和10b之间均匀取值。
超参数调试和Batch正则化
β取值不好搞,换个思路,1-β。
原理:β接近1的时候,结果的灵敏度会变化。

3. 超参数调试实践

超参数调试和Batch正则化
超参数调试和Batch正则化
两种调试模型参数的方法供君选用。

4.Batch归一化

参考阅读:
归一化详解

4.1 归一化网络的**函数

超参数调试和Batch正则化
上图是对一个有三维度的数据输入,一个logistic模型的标准化。
超参数调试和Batch正则化
对于深层神经网络来说,我们真正归一化的是每一层的z而不是a,可以帮助我们更有效的训练下一层的w和b。
超参数调试和Batch正则化
上图为计算方法,先将每层z值减去均值再除以标准差,为了数值稳定(防止σ=0),加一个ε。
这样我们得到是一个均值为0方差为1的正态分布。
为了让不同的隐藏单元有不同的分布,我们计算一个新值:
超参数调试和Batch正则化
其中有两个超参数,需要用Adam来更新。
可以通过这两个参数合理构建其他平均值和方差的隐藏单元值。
直观上的理解:我们输入层的数据可能是正态分布,但是我们神经网络的隐藏层输出数据分布可能是其他非标准正态分布。
例子:sigmoid**函数,如果均值为零,相当于频繁是用其函数的线性部分。

4.2 将Batch Norm拟合进神经网络

4.3 Batch Norm为什么奏效

直观上的理解:
归一化输入特征和隐藏单元的值,使其范围类似,加速学习。

超参数调试和Batch正则化
Covariate shift问题:数据分布变了,需要重新学习x到y的映射。
直觉上的理解1:
减弱了前层参数的作用和后层参数的作用之间的联系,使得网络每层都可以自己学习。
直觉上的理解2:
可以有轻微的正则化效果。(给每一层的输出值增加了一些噪音)
超参数调试和Batch正则化

4.4 测试时的Batch Norm

在测试的时候一般会一个个处理样本,所以需要指数加权平均来估算均值和方差。
超参数调试和Batch正则化

8. Softmax回归

对于多分类问题,有一种logistic回归的一般形式,叫做softmax回归。
超参数调试和Batch正则化
三分类问题有四个类别。
超参数调试和Batch正则化
这里注意一下,softmax层有两个操作比较重要,一个是去e的幂数,然后归一化。
超参数调试和Batch正则化
超参数调试和Batch正则化
输入的着色是基于每个类别输出概率最高的那个。

9. 训练一个Softmax分类器

输出层的**函数是softmax函数:
超参数调试和Batch正则化
超参数调试和Batch正则化
C=2,softmax变回了logistic回归。
下面看下如何训练:
超参数调试和Batch正则化
首先定义一个损失函数。这个损失函数使得真实分类那一项最大化,此乃最大似然估计的一种形式。
超参数调试和Batch正则化
然后进行梯度下降算法。

10. 深度学习框架

11. TensorFlow