吴恩达deep learning ai 笔记总结(1-3) 神经网络与深度学习-浅层神经网络

神经网络与深度学习-浅层神经网络

神经网络概述

神经网络概述

计算神经网络的输出

多样本向量化

向量化实现

激活函数

为什么需要非线性激活函数

激活函数的导数

神经网络的梯度下降

直观理解反向传播

随机初始化

  • 神经网络模型中的参数权重W是不能全部初始化为零的,原因如下:
    如果在初始时,两个隐藏神经元的参数设置为相同的大小,那么两个隐藏神经元正向传播时对输出单元的影响也是相同的,通过反向梯度下降去进会得到同样的梯度大小,所以在经过多次迭代后,两个隐藏层单位仍然是对称的。无论设置多少个隐藏单元,其最终的影响都是相同的,那么多个隐藏神经元就没有了意义。

    所以,在初始化的时候,W参数要进行随机初始化,b则不存在对称性的 问题它可以设置为0。

    举例来说明:若一个浅层神经网络包含两个输入,隐藏层包含两个神经元,如果2个权重都初始化为零,即:
    在这里插入图片描述
    这样使得隐藏层第一个神经元的输出等于第二个神经元的输出,即正向传播a相同;经过反向传播推导,Z相同,dW也相同。因此,这样的结果是隐藏层两个神经元对应的权重行向量W每次迭代更新都会得到完全相同的结果,完全对称。这样隐藏层设置多个神经元就没有任何意义了。
    在这里插入图片描述
    我们把这种权重W全部初始化为零带来的问题称为symmetry breaking problem。解决方法也很简单,就是将W进行随机初始化(b可初始化为零)。

W_1 = np.random.randn((2,2))*0.01
b_1 = np.zero((2,1))
W_2 = np.random.randn((1,2))*0.01
b_2 = 0

这里我们将W乘以0.01的目的是尽量使得权重W初始化比较小的值。之所以让W比较小,是因为如果使用sigmoid函数或者tanh函数作为激活函数的话,W比较小,得到的|z|也比较小(靠近零点),而零点区域的梯度比较大,这样能大大提高梯度下降算法的更新速度,尽快找到全局最优解。如果W较大,得到的|z|也比较大,附近曲线平缓,梯度较小,训练过程会慢很多。

当然,如果激活函数是ReLU或者Leaky ReLU函数,则不需要考虑这个问题。但是,如果输出层是sigmoid函数,则对应的权重W最好初始化到比较小的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kxwang_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值