随机初始化(Random+Initialization)

当你训练神经网络时,权重随机初始化是很重要的。

对于逻辑回归,把权重初始化为0当然也是可以的。

但是对于一个神经网络,如果你把权重或者参数都初始化为0,那么梯度下降将不会起作用。

让我们看看这是为什么?

有两个输入特征,n([0])=2,2个隐藏层单元n([1])就等于2。 因此与一个隐藏层相关的矩阵,或者说W([1])是2*2的矩阵,假设把它初始化为0的2*2矩阵,b([1])也等于 [0 0]^T,把偏置项b初始化为0是合理的,但是把w初始化为0就有问题了。

那这个问题如果按照这样初始化的话,你总是会发现a_1^([1]) 和 a_2([1])相等,这个激活单元和这个激活单元就会一样。因为两个隐含单元计算同样的函数,当你做反向传播计算时,这会导致dz_1([1]) 和 dz_2([1])也会一样,对称这些隐含单元会初始化得一样,这样输出的权值也会一模一样,由此W([2])等于[0 0];


如果你这样初始化这个神经网络,那么这两个隐含单元就会完全一样,因此他们完全对称,也就意味着计算同样的函数,并且肯定的是最终经过每次训练的迭代,这两个隐含单元仍然是同一个函数,令人困惑。

dW会是一个这样的矩阵,每一行有同样的值因此我们做权重更新

把权重W([1])⟹W([1])-adW每次迭代后的W^([1]),第一行等于第二行。

由此可以推导,如果你把权重都初始化为0,

那么由于隐含单元开始计算同一个函数,所有的隐含单元就会对输出单元有同样的影响。

一次迭代后同样的表达式结果仍然是相同的,即隐含单元仍是对称的。

通过推导,两次、三次、无论多少次迭代,不管你训练网络多长时间,隐含单元仍然计算的是同样的函数。

因此这种情况下超过1个隐含单元也没什么意义,因为他们计算同样的东西。当然更大的网络,比如你有3个特征,还有相当多的隐含单元。

如果你要初始化成0,由于所有的隐含单元都是对称的,无论你运行梯度下降多久,他们一直计算同样的函数。这没有任何帮助,因为你想要两个不同的隐含单元计算不同的函数,

这个问题的解决方法就是随机初始化参数。

你应该这么做:

把W^([1])设为np.random.randn(2,2)(生成高斯分布),通常再乘上一个小的数,比如0.01,这样把它初始化为很小的随机数。

然后b没有这个对称的问题(叫做symmetry breaking problem),所以可以把 b 初始化为0,因为只要随机初始化W你就有不同的隐含单元计算不同的东西,因此不会有symmetry breaking问题了。相似的,对于W([2])你可以随机初始化,b([2])可以初始化为0。

W^[1] =np.random.randn(2,2) * 0.01 ,
b^([1])=np.zeros((2,1))
W^([2])=np.random.randn(2,2) * 0.01 , b^([2])=0

你也许会疑惑,这个常数从哪里来,为什么是0.01,而不是100或者1000。

我们通常倾向于初始化为很小的随机数。因为如果你用tanh或者sigmoid激活函数,或者说只在输出层有一个Sigmoid,如果(数值)波动太大,

当你计算激活值时z([1])=W([1]) x+b^([1]) , a([1])=σ(z([1]))=g^([1]) (z^([1]))

如果W很大,z就会很大。z的一些值a就会很大或者很小,因此这种情况下你很可能停在tanh/sigmoid函数的平坦的地方(见下图),


这些地方梯度很小也就意味着梯度下降会很慢,因此学习也就很慢。

回顾一下:

如果w很大,那么你很可能最终停在(甚至在训练刚刚开始的时候)z很大的值,这会造成tanh/Sigmoid激活函数饱和在龟速的学习上,

如果你没有sigmoid/tanh激活函数在你整个的神经网络里,就不成问题。

但如果你做二分类并且你的输出单元是Sigmoid函数,那么你不会想让初始参数太大,因此这就是为什么乘上0.01或者其他一些小数是合理的尝试。对于w^([2])一样,就是np.random.randn((1,2)),我猜会是乘以0.01。

事实上有时有比0.01更好的常数,当你训练一个只有一层隐藏层的网络时(相对浅的神经网络,没有太多的隐藏层),设为0.01可能也可以。

但当你训练一个非常非常深的神经网络,你可能会选择一个不同于的常数而不是0.01。

那么如何设置常数呢?这个等下一章深度学习网络时再做进一步说明!

点击关注,持续更新中……

吴恩达深度学习笔记(21)-神经网络的权重初始化为什么要随机初始化?相关推荐

  1. 吴恩达深度学习笔记——卷积神经网络(Convolutional Neural Networks)

    深度学习笔记导航 前言 传送门 卷积神经网络(Convolutional Neural Networks) 卷积神经网络基础(Foundations of Convolutional Neural N ...

  2. 吴恩达深度学习笔记——卷积神经网络(CNN)

    目录 一.计算机视觉(Computer vision) 二.边缘检测示例(Edge detection example) 三.更多的边缘检测内容(More edge detection) 四.Padd ...

  3. 吴恩达深度学习笔记(四)

    吴恩达深度学习笔记(四) 卷积神经网络CNN-第二版 卷积神经网络 深度卷积网络:实例探究 目标检测 特殊应用:人脸识别和神经风格转换 卷积神经网络编程作业 卷积神经网络CNN-第二版 卷积神经网络 ...

  4. 吴恩达深度学习笔记——神经网络与深度学习(Neural Networks and Deep Learning)

    文章目录 前言 传送门 神经网络与深度学习(Neural Networks and Deep Learning) 绪论 梯度下降法与二分逻辑回归(Gradient Descend and Logist ...

  5. 吴恩达深度学习 | (18) 卷积神经网络专项课程第二周学习笔记

    课程视频 第二周PPT汇总 吴恩达深度学习专项课程共分为五个部分,本篇博客将介绍第四部分卷积神经网络专项的第二周课程:深度卷积网络:实例探究. 目录 1. 为什么要进行实例探究 2. 经典网络 3. ...

  6. 吴恩达深度学习笔记——结构化机器学习项目(Structuring Machine Learning Projects)

    深度学习笔记导航 前言 传送门 结构化机器学习项目(Machine Learning Strategy) 机器学习策略概述 正交化(orthogonalization) 评价指标 数字评估指标的单一性 ...

  7. 吴恩达深度学习笔记1-Course1-Week1【深度学习概论】

    2018.5.7 吴恩达深度学习视频教程网址 网易云课堂:https://mooc.study.163.com/smartSpec/detail/1001319001.htm Coursera:htt ...

  8. 799页!吴恩达深度学习笔记.PDF

    吴恩达深度学习课程,是公认的最优秀的深度学习课程之一,目前没有教材,只有视频,本文提供完整笔记下载,这本笔记非常适合和深度学习入门. 0.导语 黄海广博士和同学将吴恩达老师深度学习视频课程做了完整的笔 ...

  9. 吴恩达深度学习笔记- lesson4 卷积神经网络

    文章目录 Week 1 卷积神经网络基础 4.1.1 计算机视觉(Computer vision) 4.1.2 边缘检测示例(Edge detection example) 4.1.3 更多边缘检测内 ...

最新文章

  1. 弹性碰撞后速度方向_$1.1.1 弹性碰撞经典例题1——力学及运动学
  2. [转载]AxureRP 7.0部件详解(一)
  3. 计算机网络第6章(应用层)
  4. 前端学习(2658):vue3优化
  5. 【CodeForces - 1051B】Relatively Prime Pairs (构造,思维,素数,水题)
  6. Python面试题-交换两个数字的三种方法
  7. Ruby中带有示例的Hash.key?(value)方法
  8. 中lisp文件_关于 Emacs 中的变量你需要知道的事情 | Linux 中国
  9. java 鼠标动眼睛动_js动画_看着鼠标移动的眼球_眼睛_跟着随鼠标移动
  10. 将Java EE单体应用打造成微服务
  11. GPS模块坐标偏差很大?
  12. 学习QT之位置相关函数
  13. MFC中TXT文件读写
  14. element表格动态合并多列
  15. windows10更新服务器修改,Windows 10彻底关闭自动更新(Windows Update和Windows Update Medic Service)...
  16. 一款易用的视频云是如何迅速积累客户的?
  17. 3D Dirichlet Free-Form Deformation(三维Dirichlet自由变形)
  18. oracle distinct 多个,oracle distinct多字段去重
  19. RabbitMQ开发工具包
  20. python学习-Dya13-函数

热门文章

  1. oracle系列软件,oracle软件系列下载地址
  2. 安卓13:Android Studio Button组件默认样式为蓝紫色,无法更改
  3. 元宇宙六大技术全景图
  4. 管理学中常用的激励理论
  5. 【解决方案】智慧煤矿:加速智能化布局,AI助力煤炭产业转型升级
  6. 2019 下半年 Flutter 实现的性能优化 | 英雄榜
  7. Python培训班一般学费是多少?
  8. python输入生日输出星座_python输入日期输出星座?
  9. R语言实战笔记--第十五章 处理缺失数据
  10. 【C++/数据结构】先序遍历+中序遍历构建二叉树