目录
一:神经网络调优
参数调优也称为超参数调优
1.算法层面:
学习率
,
:Adam优化算法的超参数,常设为0.9,0.999,10^(-8)
:正则化网络参数
2.网络层面
hidden units:个隐藏层神经元个数
layers:神经网络层数
二:调参技巧:
对于调参,通常跟机器学习中介绍的网格搜索一致,让所有的参数可能组和在一起,得到N组结果。然后去测试每一组的效果去选择
比如现在由两个参数:a:0.1,0.01,0.001。
b:0.8,0.88,0.9
这样会由9种组合:[0.1,0.8], [0.1,0.88], [0.1,0.9]......
2.合理的参数设置:
学习率:0.0001,0.001,0.01,0.1,跨度稍微大一点
算法参数:0.999,0.9995,0.998等,尽可能的选择接近于1的值
3.运行:
通常外面有那么多的参数组合,每一个组合运行训练都需要很长时间,但是如果资源允许的话,可以同时并行的训练多个参数模型
三:批标准化(Batch Normalizetion)
之前说过,我们对输入的特征X使用了标准化处理。标准化后的优化得到了加速,那么对于深层网络呢?
深层网络当中不止是初始的特征输入,而到了隐藏层也有输出结果,所以我们是否能够对隐层的输入进行标准化,注意这里不是结果激活函数之后的输入
1.批标准化公式:
假设对于上图第二个,第四个神经元隐层。记作Z(l),那么这一层会涉及多个Z,标准化的平均值和方差:
其中是为了防止分母为0取整很小,这样使得所有的l层输入的平均值为0,方差为1。但是不想让隐层单元总是含有平均值0和方差1,所有要增加计算:
其中,和
都是模型的学习参数(如同W和b一样),所以可以用各种梯度下降算法来更新
和
的值,如同更新神经网络的权重一样
为什么要使用这两个参数:如果各个隐层的输入均为在靠近0区域,即处于激活函数的线性区域,不利于训练非线性神经网络,从而得到效果较差的模型,因此,需要用和
对标准化后的结果做进一步的处理。
2.过程图:
每一层中都有两个参数 和
3.为什么标准化能够是优化过程变得简单:
我们训练集中的数据如左图,那么学习后得到的分别也就是左图。那么在右图测试集中的数据,分布不一样,整个网络科技就不能去正确分布了,这种情况下一般要对模型进行重新训练
Batch Normalization 也起到了微弱的正则化效果,但是不要将它作为正则化手段,而是加速学习的方法。它主要解决的还是反向传播过程中的梯度问题(梯度爆炸和消失)
Batch Normalization论文地址:https://arxiv.org/abs/1502.03167