初始化

深度学习中的参数初始化非常重要:

  • 初始点的选取有时候能决定算法是否收敛

  • 当收敛时,初始点可以决定学习收敛的速度、是否收敛到一个代价高或者低的点

  • 初始化也影响泛化

  • 初始参数需要破坏不同神经元之间的对称性,如果初始化成一样的值,整个神经网络就会变成确定性的算法,具有相同输入的神经元前向传播和梯度更新就都变得一模一样的。

初始化的参数主要有W权重、bias偏置。

W 权重

在实践中,经常将权重初始化为高斯分布,或者均匀分布。

高斯分布或者均匀分布的选择并没有太大的区别。但是初始化分布的“大小”(scale)对优化结果和泛化能力有极大的影响。

均匀分布:uniform initialization

高斯分布:normal initialization

需要设置的参数是均值(mean)和标准差(stddev)。

一般情况下,均值设为0。标准差会有不同:

  • 设置标准差为0.01或者0.001:会带来因标准差过小导致的前向传播时信号丢失。

  • Xavier Initialization:m个输入,n个输出。只要满足均值是0,标准差是sqrt(1/m)或sqrt(2/(m+n))分布的都叫做Xavier Initialization。

  • MSRA Initialization:属于xavier的变种,对于Relu 的激活函数而言推荐使用stddev=sqrt(2/m)。

正交初始化:orthogonal initialization

稀疏初始化:sparse initialization

使每一层初始化恰好有k个非0权重。

无监督训练初始化

使用相同的数据集,用unsupervisor的方式(比如RBM,AE)训练出来的参数初始化supervisor的模型

有监督训练初始化

在相关任务上,用supervisor的方式预训练参数。

不相关任务上,supervisor的预训练也可以得到一个比初始化更快收敛的初始值。

bias偏置

一般情况下,偏置总设为0。

当然,也有非0的情况。

Reference