深度学习-初始化权重矩阵

1.初始化权重矩阵为0

没有梯度传播,因为隐层节点之后的所有数值均为0。多层神经网络表现的跟线性模型一样,不可取!

2.随机初始化权重矩阵

(1)标准正态分布

   np.random.rand(size_l,size_l-1)

   可能导致梯度下降或者梯度爆炸的问题

(2)启发式来根据非线性激活函数初始化权重

   ---梯度下降

    对于深度网络来说,对于任何激活函数,梯度将随着反向传播期间每层向后移动变得越来越小。梯度变小,权重更新缓慢,网络收敛速度变慢。甚至可能阻止网络进一步训练!

  ---梯度爆炸

    与梯度下降相反,对于任何激活函数,梯度变化越来越大,可能导致网络跳过最优值或者在附近波动,而永远无法收敛。

       解决方法:启发式方法

  对于激活函数ReLu:

    W[l] = np.random.rand(size_l,size_l-1)*np.sqrt(2/size_l-1)

  对于激活函数tanh(又称为Xavier初始化):

    W[l] = np.random.rand(size_l,size_l-1)*np.sqrt(1/size_l-1)

  其他形式的启发式方法:

    W[l] = np.random.rand(size_l,size_l-1)*np.sqrt(1/(size_l-1+size_l))

  

猜你喜欢

转载自www.cnblogs.com/logo-88/p/8951333.html