- Xavier初始化:
- 条件:正向传播时,激活值的方差保持不变;反向传播时,关于状态值的梯度的方差保持不变。
- 初始化方法:
W ∼ U [ − 6 n i + n i + 1 , 6 n i + n i + 1 ] W\sim U[-\frac{\sqrt6}{\sqrt{n_i+n_{i+1}}},\frac{\sqrt6}{\sqrt{n_i+n_{i+1}}}] W∼U[−ni+ni+16,ni+ni+16] - 假设激活函数关于0对称,且主要针对于全连接神经网络。适用于tanh和softsign
- 论文地址:Understanding the difficulty of training deep feedforward neural networks
- 参考资料:
深度学习之参数初始化(一)——Xavier初始化
- He初始化:
- 条件:正向传播时,状态值的方差保持不变;反向传播时,关于激活值的梯度的方差保持不变。
- 适用于ReLU的初始化方法:
W ∼ N [ 0 , 2 n i ^ ] W\sim N[0,\sqrt{\frac{2}{\hat{n_i}}}] W∼N[0,ni^2] - 适用于Leaky ReLU的初始化方法:
W ∼ N [ 0 , 2 ( 1 + α 2 ) n i ^ ] W\sim N[0,\sqrt{\frac{2}{(1+\alpha^2)\hat{n_i}}}] W∼N[0,(1+α2)ni^2]
n i ^ = h i ∗ w i ∗ d i \hat{n_i}=h_i*w_i*d_i ni^=hi∗wi∗di
其中, h i h_i hi、 w i w_i wi分别表示卷积层中卷积核的高和宽,而 d i d_i di当前层卷积核的个数。- 疑问:在论文里,当前层卷积核个数 d i d_{i} di与当前层输出通道个数 o u t i out_{i} outi(下一层输入通道个数 i n i + 1 in_{i+1} ini+1)是一致的,即 d i = o u t i − 1 = i n i + 1 d_{i}=out_{i-1}=in_{i+1} di=outi−1=ini+1。但是在tensorflow的实现中, d i = i n i ∗ o u t i d_{i}=in_{i}*out_{i} di=ini∗outi。在用tensorflow实现He初始化时,应该以哪个为准?(个人倾向前者)
- 论文地址:Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification
- 参考资料:
深度学习之参数初始化(二)——Kaiming初始化
He初始化论文阅读笔记与实现