[深度学习]训练神经网路——深度调参

文章目录

  • 激活函数使用
    • sigmoid-tanh-ReLU( ReLU,LeakyReLU,ELU ) - MaxOut<类似relu以及诡异华中参数学习.>
    • 建议
  • 数据预处理(Data Preprocessing)
  • 权重初始化
    • 权重初始化研究——所有层激活输出,随着层数越深,激活数值越趋向于零
    • tanh() 和 ReLU() 激活权重初始化方法<相应的论文给出了方法>
    • 更多适合的权重初始化研究论文
  • BatchNormalization(批量标准化)--对比LN\IN\GN
    • 批量标准化--BN
    • LayerNorm + InstanceNorm + GroupNorm
    • 总结 -- 四种使用方法对比 + 使用情况

在课堂上学习cs231n的知识,外加上对于神的调参的学习甚少。(平时只是在学习算法和网络;用的时候才看一看)


所以在此将站在“巨人”的肩膀上,看一看调参的经验都有哪些。方便拓展下思维和为后来提高训练精度、突破训练瓶颈做好准备/
[深度学习]训练神经网路——深度调参_第1张图片

激活函数使用

sigmoid-tanh-ReLU( ReLU,LeakyReLU,ELU ) - MaxOut<类似relu以及诡异华中参数学习.>

  • 如标题所示,介绍了 激活函数一步步的发展过程(因为出现了什么问题,继而提出了什么解决方案和激活函数)。提高了多少性能,优点是什么、存在的问题又是什么等。


建议

[深度学习]训练神经网路——深度调参_第2张图片


数据预处理(Data Preprocessing)

  • 首先介绍零均值归一化
  • 然后介绍降维
  • 最后进行总结 – 给出相应的建议.

[深度学习]训练神经网路——深度调参_第3张图片

权重初始化

权重初始化研究——所有层激活输出,随着层数越深,激活数值越趋向于零

激活无修饰权重初始化:
[深度学习]训练神经网路——深度调参_第4张图片

tanh() 和 ReLU() 激活权重初始化方法<相应的论文给出了方法>

更多适合的权重初始化研究论文

[深度学习]训练神经网路——深度调参_第5张图片

BatchNormalization(批量标准化)–对比LN\IN\GN

批量标准化–BN

[深度学习]训练神经网路——深度调参_第6张图片


  • 可以看到,由标准化的x得到第二层的输入h1的时候,经历了如下的步骤:
    1、第一层的权重项w 和 输入x想成,得到s1
    2、对s1进行0-1均值方差标准化,得到s2
    3、设置两个参数γ 和 β ,计算γ * s2 + β 得到s3。注意,这里的γ 和 β是网络要学习的变量。
    4、将s3经过激活函数激活之后得到h1

  • 优点:
    (1) 加速收敛速度
    (2) 在一定程度上防止梯度爆炸

  • 缺点:
    (1) 依赖于batch size
    (2) 只对批输入的数据有效。eg:训练集
    (3) 对于处理序列化数据无效,因为序列数据间存在一定关系,另外要计算一个维度上的标准化不合理。


具体来看有以下几个方面:


[深度学习]训练神经网路——深度调参_第7张图片

LayerNorm + InstanceNorm + GroupNorm

注意区分:BN和LN ,参考: BatchNormalization、LayerNormalization、InstanceNorm、GroupNorm、SwitchableNorm总结

  • 直观区别:
    [深度学习]训练神经网路——深度调参_第8张图片
    batch是“竖”着来的,各个维度做归一化,所以与batch size有关系。
    layer是“横”着来的,对一个样本,不同的神经元neuron间做归一化。

    显示了同一层的神经元的情况。假设这个mini-batch一共有N个样本,则Batch Normalization是对每一个维度进行归一。而Layer Normalization对于单个的样本就可以处理。

    bn和ln都可以比较好的抑制梯度消失和梯度爆炸的情况。

  • BN和LN主要区别为:

  1. LN中同层神经元输入拥有相同的均值和方差,不同的输入样本有不同的均值和方差;
  2. BN中则针对不同神经元输入计算均值和方差,同一个batch中的输入拥有相同的均值和方差。

所以,LN不依赖于batch的大小和输入sequence的深度,因此可以用于batchsize为1和RNN中对边长的输入sequence的normalize操作。

  • IN针对图像迁移、图像风格化
    BN注重对每个batch进行归一化,保证数据分布一致,因为判别模型中结果取决于数据整体分布。

    但是图像风格化中,生成结果主要依赖于某个图像实例,所以对整个batch归一化不适合图像风格化中,因而对HW做归一化。可以加速模型收敛,并且保持每个图像实例之间的独立。

  • GN
    主要是针对Batch Normalization对小batchsize效果差,GN将channel方向分group,然后每个group内做归一化,算(C//G)HW的均值,这样与batchsize无关,不受其约束。

  • 具体来看:


[深度学习]训练神经网路——深度调参_第9张图片

总结 – 四种使用方法对比 + 使用情况

归一化层,目前主要有这几个方法,Batch Normalization(2015年)、Layer Normalization(2016年)、Instance Normalization(2017年)、Group Normalization(2018年)Switchable Normalization(2018年);

将输入的图像shape记为[N, C, H, W],这几个方法主要的区别就是在,

  • batchNorm是在batch上,对NHW做归一化,对小batchsize效果不好;
  • layerNorm在通道方向上,对CHW归一化,主要对RNN作用明显;
  • instanceNorm在图像像素上,对HW做归一化,用在风格化迁移;
  • GroupNorm将channel分组,然后再做归一化;

[深度学习]训练神经网路——深度调参_第10张图片

你可能感兴趣的:(深度学习,#,预处理,笔记)