深度神经网络权重初始化

机器算法验证 机器学习 神经网络 深度学习
2022-03-29 07:02:50

鉴于困难的学习任务(例如高维、固有的数据复杂性),深度神经网络变得难以训练。为了缓解许多问题,可以:

  1. 规范化 && 精选质量数据
  2. 选择不同的训练算法(例如 RMSprop 而不是梯度下降)
  3. 选择一个更陡峭的梯度成本函数(例如交叉熵而不是 MSE)
  4. 使用不同的网络结构(例如卷积层而不是前馈)

我听说有一些聪明的方法可以初始化更好的权重。例如,您可以更好地选择震级:Glorot and Bengio (2010)

  • 对于 sigmoid 单元:使用Uniform (-r, r)采样r=6ñ一世n+ñ
  • 或双曲正切单位:使用Uniform (-r, r)采样r=46ñ一世n+ñ

有没有更好的初始化权重的一致方法?

4个回答

据我所知,您给出的两个公式几乎是标准初始化。前段时间我做了一篇文献综述,请查看我的链接答案。

最近,为了这个唯一目的,引入了批量标准化。请在这里找到论文

论文“All you need is a good init”是一篇关于深度学习中的 init 的相对较新的好文章。我喜欢它的地方在于:

  1. 它对 init 方法进行了简短而有效的文献调查,包括参考资料。
  2. 它在 cifar10 上没有太多花里胡哨,取得了非常好的效果。

权重初始化取决于正在使用的激活函数。Xavier 和 Bengio (2010) 基于激活是线性的假设推导出了一种初始化权重的方法。他们的方法得出以下公式:

Wü[-6n一世+n一世+1,6n一世+n一世+1]

对于使用均匀分布初始化的权重,其中n一世代表扇入n一世+1代表扇出.

He, Kaiming, et al.(2015) 使用了一种推导方法,考虑使用 ReLUs 作为激活函数,得到一个权重初始化公式:

Wlñ(0,2nl).

对于使用高斯分布初始化的权重,其标准差 (std) 为2nl

在此处阅读更全面的系列文章,涵盖权重初始化背后的数学