目录
博客:blog.shinelee.me | 博客园 | CSDN
书接上回,全0、常数、过大、过小的权重初始化都是不好的,那我们需要什么样的初始化?
权重的随机初始化过程可以看成是从某个概率分布随机采样的过程,常用的分布有高斯分布、均匀分布等,对权重期望和方差的控制可转化为概率分布的参数控制,权重初始化问题也就变成了概率分布的参数设置问题。
在上回中,我们知道反向传播过程同时受到权重矩阵和激活函数的影响,那么,在激活函数不同以及每层超参数配置不同(输入输出数量)的情况下,权重初始化该做怎样的适配?这里,将各家的研究成果汇总如下,
其中,扇入fan_infan_in和扇出fan_out分别为当前全连接层的输入和输出数量,更准确地说,1个输出神经元与fan_in个输入神经元有连接(the number of connections feeding into the node),1个输入神经元与fan_out个输出神经元有连接(the number of connections flowing out of the node),如下图所示(来自链接),
对于卷积层而言,其权重为n个c×h×w大小的卷积核,则一个输出神经元与c×h×w个输入神经元有连接,即fan_in=c×h×wfan_in=c×h×w,一个输入神经元与n×h×w个输出神经元有连接,即fan_out=n×h×w
使用Xavier和He初始化,在激活函数为ReLU的情况下,test error下降对比如下,22层的网络,He的初始化下降更快,30层的网络,Xavier不下降,但是He正常下降。
对于PReLU激活函数,负向部分为\(f(x) = ax\),如下右所示,
尽管He在paper中说单独使用fan_in或fan_out哪个都可以,但是,在Caffe的实现中,还是提供了两者平均值的方式,如下所示,当然默认是使用fan_in。
至此,对深度神经网络权重初始化方法的介绍已告一段落。虽然因为BN层的提出,权重初始化可能已不再那么紧要。但是,对经典权重初始化方法经过一番剖析后,相信对神经网络运行机制的理解也会更加深刻。
以上。