1.11 神经网络的权重初始化(Weight Initialization for Deep Networks)

深度神经网络模型中,以单个神经元为例,该层(ll)的输入个数为nn,其输出为:

z=w1x1+w2x2++wnxnz=w_1x_1+w_2x_2+\cdots+w_nx_n
a=g(z)a=g(z)

忽略了常数项b

为了让zz不会过大或者过小,ww应该越小才好。方法是在初始化ww时,令其方差为1n\frac{1}{n}

激活函数是tanhtanh相应的python伪代码为:

w[l] = np.random.randn(n[l],n[l-1])*np.sqrt(1/n[l-1])

如果激活函数是ReLUReLU,权重ww的初始化一般令其方差为2n\frac{2}{n}

w[l] = np.random.randn(n[l],n[l-1])*np.sqrt(2/n[l-1])

另外一种初始化ww的方法,令其方差为2n[l1]+n[l]\frac{2}{n^{[l-1]}+n^{[l]}}

w[l] = np.random.randn(n[l],n[l-1])*np.sqrt(2/(n[l-1] + n[l]))

Last updated