将所有θ权重初始化为零并不适用于神经网络。当我们反向传播,所有节点将更新为相同的值反复。我们可以为我们的Θ矩阵随机初始化使用以下方法我们的砝码:
因此,我们初始化每个 在[−ϵ,ϵ]。使用上述公式保证我们得到期望的约束。同样的程序适用于所有的Θ的。下面是一些工作的代码,你可以使用实验。
If the dimensions of Theta1 is 10x11, Theta2 is 10x11 and Theta3 is 1x11.
Theta1 = rand(10,11) * (2 * INIT_EPSILON) - INIT_EPSILON;
Theta2 = rand(10,11) * (2 * INIT_EPSILON) - INIT_EPSILON;Theta3 = rand(1,11) * (2 * INIT_EPSILON) - INIT_EPSILON;
rand(x,y)只是matlab的函数,它将在0到1之间初始化一个随机实数矩阵。
(注:以上所用的ε与梯度检验中的ε无关)