深度学习 | (6) 关于神经网络参数初始化为全0的思考

原文地址

为什么神经网络参数不能全部初始化为全0?

最近试了一个小实验,发现当神经网络参数全部初始化为全0的时候(这样最省力嘛),效果并不好,后来和请教了ybb并且网上查阅了一些资料,记录一下自己的笔记和总结,欢迎大家指错交流~

假设我们现在需要初始化的神经网络如下所示:
在这里插入图片描述
我们初始化权值为:
在这里插入图片描述
其中W1代表输入层到隐藏层的权值矩阵,W2代表隐藏层到输出层的权值矩阵。

假设网络的输入为[x1,x2,x3],然后通过网络的正向传播,可以得出:
在这里插入图片描述
由于:
在这里插入图片描述
我们可以知道: z 4 = z 5 = 0 z_4=z_5=0 z4=z5=0

从上面可以知道,此时隐藏层的值是相同的,然后经过激活函数f后,得到的a4,a5仍然是相同的,如下:
在这里插入图片描述

最终网络的输出为:
在这里插入图片描述
此时,假设我们的真实输出为y,则均方误差损失函数可以表示为:
在这里插入图片描述

到了这里,此时又应该到我们伟大的BP反向传播算法出场了!我们需要反向更新权值,它使得预测的输出值与真实值越来越靠近。

这里假设我们的读者已经知道了BP反向传播的过程,可以参看通俗理解神经网络BP传播算法 - 知乎专栏。

可以知道,通过反向传播后,结点4,5的梯度改变是一样的,假设都是 Δ w \Delta w Δw,那么此时结点4与结点6之间的参数,与结点5与结点6之间的参数变为了,如下:
在这里插入图片描述

由上式可以看出,新的参数相同了!!!!

同理可以得出输入层与隐藏层之间的参数更新都是一样的,得出更新之后的参数:
在这里插入图片描述
都是相同的!然后不管进行多少轮正向传播以及反向传播,每俩层之间的参数都是一样的。

换句话说,本来我们希望不同的结点学习到不同的参数,但是由于参数相同以及输出值都一样,不同的结点根本无法学到不同的特征!这样就失去了网络学习特征的意义了。

隐藏层以及其它层的多个结点,其实仅仅相当于一个结点!!如下图表示:
在这里插入图片描述
即每层的各个节点具有对称性。

这样总结来看:w初始化全为0,很可能直接导致模型失效,无法收敛。

因此可以对w初始化为随机值解决(在cnn中,w的随机化,也是为了使得同一层的多个filter,初始w不同,可以学到不同的特征,如果都是0或某个值,由于计算方式相同,可能达不到学习不同特征的目的)

参数随机初始化,可以打破这种(隐藏单元)对称性,使网络学习到不同的特征。

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值