BN于神经网络调优

目录

一:神经网络调优

1.算法层面:

2.网络层面

二:调参技巧:

2.合理的参数设置:

3.运行:

三:批标准化(Batch Normalizetion)

1.批标准化公式:

2.过程图:

3.为什么标准化能够是优化过程变得简单:


一:神经网络调优

参数调优也称为超参数调优

1.算法层面:

学习率\alpha

\beta 1\beta 2\epsilon:Adam优化算法的超参数,常设为0.9,0.999,10^(-8)

\lambda:正则化网络参数

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,标准化的平均值和方差:

其中\epsilon是为了防止分母为0取整很小,这样使得所有的l层输入的平均值为0,方差为1。但是不想让隐层单元总是含有平均值0和方差1,所有要增加计算:

其中,\gamma\beta都是模型的学习参数(如同W和b一样),所以可以用各种梯度下降算法来更新 \gamma\beta的值,如同更新神经网络的权重一样

为什么要使用这两个参数:如果各个隐层的输入均为在靠近0区域,即处于激活函数的线性区域,不利于训练非线性神经网络,从而得到效果较差的模型,因此,需要用\gamma\beta对标准化后的结果做进一步的处理。

2.过程图:

每一层中都有两个参数 \gamma\beta

3.为什么标准化能够是优化过程变得简单:

我们训练集中的数据如左图,那么学习后得到的分别也就是左图。那么在右图测试集中的数据,分布不一样,整个网络科技就不能去正确分布了,这种情况下一般要对模型进行重新训练

Batch Normalization 也起到了微弱的正则化效果,但是不要将它作为正则化手段,而是加速学习的方法。它主要解决的还是反向传播过程中的梯度问题(梯度爆炸和消失)

Batch Normalization论文地址:https://arxiv.org/abs/1502.03167

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值