调试处理(随机采样、非格网、由粗到细)及超参数
深度学习中涉及大量超参数,如下所示
在不知道哪个参数更为重要的情况下,机器学习参数较少,可以利用网络化的参数取值试验,但是深度学习参数较多的情况下,更适合用随机取值的方法
关注到某参数效果更好,可以采用由粗到细的方法。
正确定的采样尺度:
在超参数选择的时候,一些超参数是在一个范围内进行均匀随机取值,如隐藏层神经元结点的个数、隐藏层的层数等。但是有一些超参数的选择做均匀随机取值是不合适的,这里需要按照一定的比例在不同的小范围内进行均匀随机取值。
确定超参数的两种方法:
- 有大量数据,但是计算能力低,调试一个模型,每天不断优化
- 有计算能力,同时训练大量模型
正则化网络的激活函数:
批量归一化(batch norm):使得超参数的搜索问题更加容易,神经网络对超参数的选择更加鲁棒,有更大的超参数范围可以工作,更容易训练很深的网络,
常用的方式是将隐藏层的经过激活函数前的z进行归一化。
将批量归一化添加进神经网络
批量归一化为什么有作用
- 可以加速神经网络训练的原因和输入层的输入特征进行归一化,从而改变Cost function的形状,使得每一次梯度下降都可以更快的接近函数的最小值点,从而加速模型训练过程的原理是有相同的道理
- 使得神经网络中较晚或者较深的权重,对早期层神经网络权重的变化更具鲁棒性
- 有轻微的正则化作用
模型在左侧数据集上效果很好,右侧不一定,,虽然都是猫,但是很大程度上样本的分布情况是不同的,所以我们无法保证模型可以仅仅通过黑色猫的样本就可以完美的找到完整的决策边界。第二个样本集合相当于第一个样本的分布的改变,称为:Covariate shift(协变量偏移)。
以深度神经网络为例,虽然第三层的输入可能随着前两层参数的变化而变换,归一化减少了输入值变化的问题。减弱了早期层参数必须做的和后续参数必须做的之间的耦合,允许网络中的每一层独立学习。
正则化效果的原因:
测试时的批量归一化:
在测试的时候,我们需要对每一个测试样本进行预测,无法计算均值和方差。通常的方法就是在我们训练的过程中,对于训练集使用指数加权平均,当训练结束的时候,得到指数加权平均后的均值,这些值直接用于Batch Norm公式的计算,用以对测试样本进行预测。
softmax回归
可以判断出一个或者多个类别,而不是两个类别。
如下图,输出层表示是个类别,输出层的激活函数是一个新的激活函数。
在没有隐藏隐藏层的时候,直接对Softmax层输入样本的特点,则在不同数量的类别下,Sotfmax层的作用:
训练一个softmax分类器:
softmax激活函数g():
逻辑回归实际是softmax分类中c=2的简化形式。
训练具有softmax输出层的神经网络:
网络的损失函数: