目录
1 超参数调试处理
1 选择超参数
在神经网络中要调试的超参数有很多,包括学习因子 ,动态梯度下降因子
,Adam算法参数
,神经网络层数,隐藏层神经元个数,学习因子衰减参数,mini-batch参数等。一般来说学习因子是最重要的参数,动态梯度下降因子,各隐藏层神经元个数和mini-batch参数排在第二,然后是神经网络层数和学习因子衰减参数。
要如何选择和调试超参数?这个问题在传统机器学习中,一般对每个参数等距离选择任意个数的点,然后分别使用不同的点对应的参数组合进行训练,根据验证集上的表现来决定最优参数。但是在深度神经网络领域,均匀间隔取点的方法就不可取了,比较好的方法是进行随机选取
随机化选择参数的目的是尽量选择更多的参数组合,以上每个超参数可以有25个选择情况,更有可能取到最优的组合。
这种方法还有一种好处就是对于重要性较高的超参数,比如 而言,采取随机取样我们能有更多的选择,在均匀取样的情况下就只有5个供选择的参数。
在进行随机取样后,有可能出现某个区域的参数取样后表现更好的情况,此时应该进行一次更细的采样,再获得更优的参数。
2 超参数的范围
对于取值为正整数的超参数而言,每次变化的尺度是相同的,都是1,此时可以进行随机均匀采样,但是对于一些范围包含很小数字的超参数,比如学习因子 ,采样方法就不再适宜了,比如范围
如果使用均匀随机采样的话,90%的可能在[0.0,1]之间,但实际上我们可能更希望取值在[0.0001,0.1] 之间,应该在这个范围内更加细分处理。
我们选择的细分方法是将线性尺度转化为对数尺度,然后在对数尺度下进行均匀采样。如下图所示
除了学习因子外,动量梯度因子 的取样也应当采取这种方式。
2 Batch正则化
1 归一化网络的激活函数
我们学习过标准化输入可以提高训练输入,方法是对训练集数据进行归一化操作,即将原始数据减去均值 然后除以方差
,但是对于神经网络而言,这仅仅处理了输入层的输入,没有对隐藏层的输入进行处理,该如何对这些输入进行处理呢。
其实对于神经网络而言,每个隐藏层的输入都是其上一层的输出,对于每层的输出进行标准化处理从这个层面上而言,同样可以提高每层参数的训练速度和准确度,这种标准化处理就是Batch Normalization。
Batch Normalization对于第l层的输入做如下标准化处理,这里统一使用l表示:
这里的m是单个mini-batch包含的样本个数, 是为了防止分母为零的情况,这样就有效保证了所有输入的均值为零方差为一。
但是大部分情况下并不希望所有输入的均值都为零,方差都为一,因为从激活函数的角度考虑,这会是输出都在激活函数的线性趋于,不利于训练非线性神经网络,从实际角度而言,这也不太合理,因此要进行进一步处理:
上式中都是学习参数,可以通过算法求得,他们的作用是使输入的均值和方差为人一直,调整齐可以获得任意的均值和方差。
在学习了对隐藏层神经元进行Batch归一化后,我们要将其应用到整个神经网络中,对于L层神经网络,具体流程如下
由于归一化操作里包含了去均值操作,可以消去常数项b来简化运算,其余的参数可以通过之前学习的梯度下降算法求取。
2 Batch归一化为什么有效
Batch归一化不仅可以提高训练速度,还可以使权重W的更新更稳健,特别是在深度神经网络中,使前面的W对后面的W影响更小 。
在神经网络的训练中可能会出现这样一种情况:训练样本标签绝大部分都相同,导致该样本集不具有一般性,这会导致训练效果很差,这种情况被称之为covariate shift。
在神经网络中covariate shift会导致模型预测效果变差,而Batch归一化的作用就是减轻这种影响,让模型变得更健壮,模型的泛用性更强。
从另一个角度来说,Batch归一化可以起到正则化的效果,因为其对每个mini-batch都进行了归一化操作,同时添加噪声 ,效果类似于Dropout。
3 测试中的Batch归一化
训练过程中我们通常对一整个mini-batch进行操作,但是测试中,如果要对单个样本进行操作应当如何处理?
首先要明确,对于仅仅一个样本而言,求均值和方差是没有意义的,因此我们要对方差和均值进行估计来获得参数,这里我们采取前面提的道德指数加权平均来预测单个样本的均值和方差。
具体做法很简单,对于第l层,先计算出所有的样本在该层的均值和方差,然后用指数加权平均的方式求得单个样本的均值和方差,最后计算出别的参数。
3 Softmax回归
1 Softmax模型
目前我们学习的都是二分类问题,这种情况下神经网络的输出层只有一个神经元,表示输出预测是正类的概率,对于多分类问题,我们用C表示种类个数,输出层中就有C个神经元,即 ,其中神经元的输出依次对应于属于该类的概率,为了处理多分类问题提出了Softmax回归模型
并且输出层神经元满足 ,且所有的输出维度为(C,1)
2 训练一个softmax分类器
softmax分类器的训练与二分类问题有所不同,比方说C=4,某个样本的预测输出和真实输出如下所示:
很明显可以看出预测效果不佳。设损失函数为:
当j=2时=1,其他情况下真实输出都是零,因此输出可以简化为:
这也符合之前的定义,m个样本的代价函数为:
softmax分类的反向传播的过程与二分类类似:
对于m个样本有