BN与神经网络调优(一)

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

学习目标



  • 目标


  • 知道常用的一些神经网络超参数
  • 知道BN层的意义以及数学原理


  • 应用



2.4.1 神经网络调优



我们经常会涉及到参数的调优,也称之为超参数调优。目前我们从第二部分中讲过的超参数有


  • 算法层面:


  • 学习率\alphaα


  • \beta1,\beta2, \epsilonβ1,β2,ϵ: Adam 优化算法的超参数,常设为 0.9、0.999、10^{-8}10−8


  • \lambdaλ:正则化网络参数,


  • 网络层面:


  • hidden units:各隐藏层神经元个数


  • layers:神经网络层数


2.4.1.1 调参技巧


对于调参,通常采用跟机器学习中介绍的网格搜索一致,让所有参数的可能组合在一起,得到N组结果。然后去测试每一组的效果去选择。


假设我们现在有两个参数


\alphaα: 0.1,0.01,0.001,\betaβ:0.8,0.88,0.9


这样会有9种组合,[0.1, 0.8], [0.1, 0.88], [0.1, 0.9]…….


  • 合理的参数设置
  • 学习率\alphaα:0.0001、0.001、0.01、0.1,跨度稍微大一些。
  • 算法参数\betaβ, 0.999、0.9995、0.998等,尽可能的选择接近于1的值


注:而指数移动平均值参数:β 从 0.9 (相当于近10天的影响)增加到 0.9005 对结果(1/(1-β))几乎没有影响,而 β 从 0.999 到 0.9995 对结果的影响会较大,因为是指数级增加。通过介绍过的式子理解S_{100} = 0.1Y_{100} + 0.1 * 0.9Y_{99} + 0.1 * {(0.9)}^2Y_{98} + ...S100=0.1Y100+0.1∗0.9Y99+0.1∗(0.9)2Y98+...


2.4.1.2 运行


通常我们有这么多参数组合,每一个组合运行训练都需要很长时间,但是如果资源允许的话,可以同时并行的训练多个参数模型,并观察效果。如果资源不允许的话,还是得一个模型一个模型的运行,并时刻观察损失的变化


所以对于这么多的超参数,调优是一件复杂的事情,怎么让这么多的超参数范围,工作效果还能达到更好,训练变得更容易呢?


2.4.2 批标准化(Batch Normalization)



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


其中最开头介绍是这样的:


20200622203558899.png


训练深度神经网络很复杂,因为在训练期间每层输入的分布发生变化,因为前一层的参数发生了变化。这通过要求较低的学习率和仔细的参数初始化来减慢训练速度,并且使得训练具有饱和非线性的模型变得非常困难。我们将这种现象称为** 内部协变量偏移** ,并通过 **标准化层** 输入来解决问题。我们的方法的优势在于使标准化成为模型体系结构的一部分,并为每个培训小批量执行标准化。批量标准化允许我们使用更高的学习率并且不太关心初始化。它还可以充当调节器,在某些情况下可以消除对Dropout的需求。应用于最先进的图像分类模型,批量标准化实现了相同的精度,培训步骤减少了14倍,并且显着地超过了原始模型。使用批量标准化网络的集合,我们改进了ImageNet分类的最佳发布结果:达到4.9%的前5个验证错误(和4.8%的测试错误),超出了人类评估者的准确性。


首先我们还是回到之前,我们对输入特征 X 使用了标准化处理。标准化化后的优化得到了加速。


对于深层网络呢?我们接下来看一下这个公式,这是向量的表示。表示每Mini-batch有m个样本。


  • m个样本的向量表示


Z^{[L]} = W^{[L]}A^{[L-1]}+b^{[L]}Z[L]=W[L]A[L−1]+b[L]
A^{[L]}=g^{[L]}(Z^{[L]})A[L]=g[L](Z[L])
输入A^{[L-1]}A[L−1], 输出A^{[L]}A[L]


深层网络当中不止是初始的特征输入,而到了隐藏层也有输出结果,所以我们是否能够对隐层的输入Z^{[L]}Z[L]进行标准化,注意这里不是经过激活函数之后的A^{[L]}A[L]



image.png

目录
相关文章
|
运维 监控 数据可视化
Linux系统调优详解(六)——网络状态查看命令nload
Linux系统调优详解(六)——网络状态查看命令nload
436 5
|
Cloud Native 编译器 芯片
倚天平台业务访存及网络延时性能调优实践
本文主要内容是业务在倚天平台上的性能调优实践,重点基于芯片的 NUMA 特性和一些其他硬件特性,进行访存和网络延时方面的性能调优方法介绍。
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
1192 7
|
监控 网络协议 Linux
在Linux中,如何进行网络调优?
在Linux中,如何进行网络调优?
|
负载均衡 Linux
网络相关的调优
网络相关的调优
131 11
|
Linux 开发工具
CPU-IO-网络-内核参数的调优
CPU-IO-网络-内核参数的调优
203 7
|
监控 网络协议 算法
在Linux中,如何进行网络性能调优?
在Linux中,如何进行网络性能调优?
|
负载均衡 监控 网络协议
网络相关的调优(三)
【4月更文挑战第6天】 网卡绑定(Bonding)**技术是将多块物理网卡虚拟成一个网卡,以提供**负载均衡**或**冗余**,增加网络连接的带宽和可靠性。当其中一块网卡出现故障时,网络连接不会中断,确保服务连续性。
268 7
|
缓存 BI Linux
CPU-IO-网络-内核参数的调优(一)
【4月更文挑战第3天】本文介绍了Linux系统中调整CPU资源使用的两种方法。一是通过`nice`和`renice`命令改变进程优先级,影响进程对CPU的占用。`nice`用于设置新进程的优先级,例如将`vim`的优先级设为-5,而`renice`用于改变已运行进程的优先级。二是使用`taskset`设置进程的CPU亲和力,指定进程在特定CPU上运行,如将`vim`限制在CPU0上执行。此外,通过`vmstat`工具监控系统状态,分析CPU利用率、内存使用、IO活动和上下文切换,帮助找出系统瓶颈。
344 1
|
运维 Linux
Linux系统调优详解(七)——网络状态查看命令nethogs
Linux系统调优详解(七)——网络状态查看命令nethogs
296 1

热门文章

最新文章