目录
一 神经网络初始化
当使用梯度下降法来进行优化网络参数时,参数初始值的选取十分关键,关系到网络的优化效率和泛化能力.不同的参数初始值会收敛到不同的局部最优解.虽然这些局部最优解在训练集上的损失比较接近,但是它们的泛化能力差异很大.一个好的初始值会使得网络收敛到一个泛化能力高的局部最优解。
二 神经网络初始化方法
预训练分类 | 细分 | 方法 | 其他 |
预训练初始化 | 一个已经在大规模数据上训练过的模型可以提供一个好的参数初始值。 | ||
固定值初始化 | 对于一些特殊的参数,我们可以根据经验用一个特殊的固定值来进行初始化。 比如偏置(Bias)通常用 0 来初始化,但是有时可以设置某些经验值以提高优化效率.在 LSTM 网络的遗忘门中,偏置通常初始化为 1 或2,使得时序上的梯度变大。对于使用ReLU的神经元,有时也可以将偏置设为0.01,使得 ReLU 神经元在训练初期更容易激活,从而获得一定的梯度来进行误差反向传播。 |
可用来初始化偏置(bias) | |
随机初始化 | 固定值初始化会导致网络对称现象。 三类常用的随机初始化方法:基于固定方差的参数初始化、基于方差缩放的参数初始化和正交初始化方法. |
||
基于固定方差的参数初始化 |
高斯分布初始化 | 使用一个高斯分布 |
|
均匀分布初始化 | |||
基于方差缩放的参数初始化: 初始化根据每层的神经元数量来自动计算初始化参数方差。均值和方差不偏移 |
Xavier(Glorot) : 权重与前一层中单元数平方根成反比。 输出和输出可以保持正态分布且方差相近 |
初始化一个深度网络时,为了缓解梯度消失或爆炸问题,我们尽可能保持每个神经元的输入和输出的方差一致,根据神经元的连接数量来自适应地调整初始化分布的方差,这类方法称为方差缩放(Variance Scaling)。 | Logistic、Tanh |
He初始化(Kaiming / msra初始化) 保证半数神经元失活的情况下对输出方差影响最小 |
当第l层使用relu激活函数时,通常有一半神经元输出为0,因此其分布的方差也接近使用恒等函数时的一半。 其中Ml-1是 l-1层神经元个数 |
relu | |
正交初始化 |
1、 用均值为0、方差为1的高斯分布初始化一个矩阵。 根据正交矩阵的性质,这个线性网络在信息的前向传播和反向传播中,都具有范数保持性,从而可以避免在训练时就出现梯度消失和梯度爆炸。 |
三 神经网络初始化相关问题
1 什么是神经网络对称性?
就导致了网络进入了对称状态,所谓对称就是相对于某层hidden layer来讲,其中的所有neural都是一模一样的,这样我们的网络就不能学到更多的特征了(假想我们的CNN的深层有512个hidden unit,如果这512个单元的值都是一样的,不是白学了么。)
2 为什么要用残差连接呢?
A:因为残差连接打破了网络的对称性/对称状态,提升了网络的表征能力。#
因为随着网络深度的增加,权重矩阵退化,网络退化。每个层中只有少量隐藏单元对不同的输入改变它们的激活值,而大部分的隐藏单元对不同的输入都是相同的反应。
虽然是一个很高维的矩阵,但是大部分维度却没有信息,表达能力没有看起来那么强大,表达能力低。
参考文献:
深度学习系列三——优化篇之参数初始化,数据预处理,逐层归一化(BN+LN+WN+GN),超参数优化_珞沫的博客-CSDN博客_逐层初始化