BN与神经网络调优(二)

简介: BN与神经网络调优(二)

2.4.2.1 批标准化公式


所以假设对于上图第二个四个神经元隐层。记做Z^{[l]}Z[l],那么这一层会涉及多个z,所以我们默认用z^{[l]}_{[i]}z[i][l],为了简单显示去掉了ll层这个标识,所以对于标准化中的平均值,以及方差


\mu = \frac{1}{m} \sum_i z^{(i)}μ=m1∑iz(i)
\sigma^2 = \frac{1}{m} \sum_i {(z_i - \mu)}^2σ2=m1∑i(zi−μ)2
z_{norm}^{(i)} = \frac{z^{(i)} - \mu}{\sqrt{\sigma^2 + \epsilon}}znorm(i)=√σ2+ϵz(i)−μ


其中\epsilonϵ是为了防止分母为0,取值10^{-8}10−8。这样使得所有的l层输入z^{[l]}_{[i]}z[i][l]为 0,方差为 1。但是原文的作者不想让隐藏层单元总是含有平均值 0 和方差 1,他认为也许隐藏层单元有了不同的分布会更有意义。因此,我们会增加这样的甲酸


\tilde z^{(i)} = \gamma z^{(i)}_{norm} + \betaz~(i)=γznorm(i)+β


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


  • 为什么要使用这样两个参数


如果各隐藏层的输入均值在靠近0的区域,即处于激活函数的线性区域,不利于训练非线性神经网络,从而得到效果较差的模型。因此,需要用 γ 和 β 对标准化后的结果做进一步处理。


2.4.2.2 过程图


image.png


每一层中都会有两个参数\beta, \gammaβ,γ。


注:原论文的公式图


image.png


2.4.2.2 为什么批标准化能够是优化过程变得简单


我们之前在原文中标记了一个问题叫做叫做"internal covariate shift"。这个词翻译叫做协变量偏移,但是并不是很好理解。那么有一个解释叫做 在网络当中数据的分布会随着不同数据集改变 。这是网络中存在的问题。那我们一起来看一下数据本身分布是在这里会有什么问题。


image.png


也就是说如果我们在训练集中的数据分布如左图,那么网络当中学习到的分布状况也就是左图。那对于给定一个测试集中的数据,分布不一样。这个网络可能就不能准确去区分。这种情况下,一般要对模型进行重新训练。


Batch Normalization的作用就是减小Internal Covariate Shift 所带来的影响,让模型变得更加健壮,鲁棒性(Robustness)更强。即使输入的值改变了,由于 Batch Normalization 的作用,使得均值和方差保持固定(由每一层\gammaγ和\betaβ决定),限制了在前层的参数更新对数值分布的影响程度,因此后层的学习变得更容易一些。Batch Normalization 减少了各层 W 和 b 之间的耦合性,让各层更加独立,实现自我训练学习的效果


2.4.2.3 BN总结


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


2.4.3 总结



掌握基本的超参数以及调参技巧

掌握BN的原理以及作用


目录
相关文章
|
4月前
|
运维 监控 数据可视化
Linux系统调优详解(六)——网络状态查看命令nload
Linux系统调优详解(六)——网络状态查看命令nload
120 5
|
12月前
|
Cloud Native 编译器 芯片
倚天平台业务访存及网络延时性能调优实践
本文主要内容是业务在倚天平台上的性能调优实践,重点基于芯片的 NUMA 特性和一些其他硬件特性,进行访存和网络延时方面的性能调优方法介绍。
|
16天前
|
监控 网络协议 Linux
在Linux中,如何进行网络调优?
在Linux中,如何进行网络调优?
|
2月前
|
负载均衡 Linux
网络相关的调优
网络相关的调优
24 11
|
2月前
|
Linux 开发工具
CPU-IO-网络-内核参数的调优
CPU-IO-网络-内核参数的调优
60 7
|
16天前
|
监控 网络协议 算法
在Linux中,如何进行网络性能调优?
在Linux中,如何进行网络性能调优?
|
4月前
|
负载均衡 监控 网络协议
网络相关的调优(三)
【4月更文挑战第6天】 网卡绑定(Bonding)**技术是将多块物理网卡虚拟成一个网卡,以提供**负载均衡**或**冗余**,增加网络连接的带宽和可靠性。当其中一块网卡出现故障时,网络连接不会中断,确保服务连续性。
51 7
|
4月前
|
缓存 BI Linux
CPU-IO-网络-内核参数的调优(一)
【4月更文挑战第3天】本文介绍了Linux系统中调整CPU资源使用的两种方法。一是通过`nice`和`renice`命令改变进程优先级,影响进程对CPU的占用。`nice`用于设置新进程的优先级,例如将`vim`的优先级设为-5,而`renice`用于改变已运行进程的优先级。二是使用`taskset`设置进程的CPU亲和力,指定进程在特定CPU上运行,如将`vim`限制在CPU0上执行。此外,通过`vmstat`工具监控系统状态,分析CPU利用率、内存使用、IO活动和上下文切换,帮助找出系统瓶颈。
73 1
|
4月前
|
存储 算法 前端开发
R语言中贝叶斯网络(BN)、动态贝叶斯网络、线性模型分析错颌畸形数据
R语言中贝叶斯网络(BN)、动态贝叶斯网络、线性模型分析错颌畸形数据
|
4月前
|
机器学习/深度学习 人工智能 算法
【BN层】基础回顾:带你认识神经网络中常见的BN层
【BN层】基础回顾:带你认识神经网络中常见的BN层
496 0

热门文章

最新文章

下一篇
DDNS