图像处理中的权值初始化问题

举例,例如我们初始化的权重全为0,那么反向传播计算都是相同梯度等等,所以这不是最好的方式。

所以我们用很小的随机数来代替,例如比较常见的方法:从标准差为0.01的高斯式中随机抽取w=0.01np.random.randn(D,H)

但是随着神经网络层数的增加,对权值的敏感度增加,这种方式就会变得效果不好(可以参考CS231n中的举例实例,选用的激活函数是tanh)

然后就是Xavier初始化,其是在前一种方法上的改进,w=np.random.randn(fan_in,fan_out)/np.sqrt(fan_in))相较于前一种0.01的方式这一种显得更加靠谱,xavier权重初始化要求 输入的方差=输出的方差,使得信号在经过多层神经元后保持在合理的范围(不至于太小或太大)。Xavier初始化可以帮助减少梯度弥散问题, 使得信号在神经网络中可以传递得更深。。

虽然Xavier能在tanh激活函数中有效,但将其运用到Relu激活函数中并不奏效,而且输出结果的方差下降会更快,因为Relu不满足0对称。所以在此基础上有了2015年何凯明提出的MSRA初始化方法w=np.random.randn(fan_in,fan_out)/np.sqrt(fan_in/2),因为Relu的方差减半,加个因数2.

Tensorflow中如何选择合适的初始化方法?

如果使用sigmoid和tanh等关于0对称且为线性(或近似线性)的激活函数,最好使用xavier初始化;

如果使用relu和Prelu激活函数,则最好使用He Initialization(MSRA)。

https://blog.csdn.net/zgcr654321/article/details/84899645

猜你喜欢

转载自blog.csdn.net/qq_18147197/article/details/87904745