点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

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

还是原来的写作风格,通过一个具体例子,在讲例子的过程中,通俗解释要讲的知识点。见下!

假设我们现在需要初始化的神经网络如下所示:

我们初始化权值为

其中W1代表输入层到隐藏层的权值矩阵,W2代表隐藏层到输出层的权值矩阵。

假设网络的输入为[x1,x2,x3],然后通过网络的正向传播,可以得出:

由于

我们可以知道:

从上面可以知道,此时隐藏层的值是相同的,然后经过激活函数f后,得到的a4,a5仍然是相同的,如下:

最终网络的输出为:

此时,假设我们的真实输出为y,则均方误差损失函数可以表示为:

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

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

可以知道,通过反向传播后,结点4,5的梯度改变是一样的,假设都是,那么此时结点4与结点6之间的参数,与结点5与结点6之间的参数变为了,如下:

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

同理可以得出输入层与隐藏层之间的参数更新都是一样的,得出更新之后的参数

都是相同的!然后不管进行多少轮正向传播以及反向传播,每俩层之间的参数都是一样的。

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

隐藏层与其它层多个结点,其实仅仅相当于一个结点!!如下图表示:

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

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

小白团队出品:零基础精通语义分割↓↓↓下载1:OpenCV-Contrib扩展模块中文版教程在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。交流群欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

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

  1. C语言数组初始化为非0值

    问题描述: C语言编程中,定义好数组后,通常建议将它初始化在使用.实际中,一般初始化为0, 只需在定义后,加上花括号,里面放个零,不管数组有多长,都可以全部初始化为0,比如 char a[20]={0 ...

  2. c如何将数组初始化为0?

    转载自:http://www.cnblogs.com/programnote/p/4719078.html 如何将数组初始化为全0? C语言中,声明数组的语句: int arr[100]; 这样声明得 ...

  3. Pytorch学习之神经网络参数管理

    这里记录一下pytorch神经网络参数管理方法(参数访问.参数初始化.参数绑定),方便自己和需要的朋友学习.查阅. 目录 一.参数访问 1.1 访问指定层的指定参数 1.2 访问某一层或整个网络的所有 ...

  4. 卷积神经网络参数优化策略(一)

    前言 最近卷积神经网络(CNN)很火热,它在图像分类领域的卓越表现引起了大家的广泛关注.本文总结和摘录了Michael Nielsen的那本Neural Network and Deep Learni ...

  5. 入门机器学习(八)--神经网络参数的反向传播算法

    1. 代价函数(Cost Function) 假设我们拥有一个如下图所示的神经网络,一共有四层,分别是一层输入层,两层隐藏层,一层输出层.下面定义几个变量的意义: m:训练样本的个数,共有m个样本 L ...

  6. Tensorflow保存神经网络参数有妙招:Saver和Restore

    摘要:这篇文章将讲解TensorFlow如何保存变量和神经网络参数,通过Saver保存神经网络,再通过Restore调用训练好的神经网络. 本文分享自华为云社区<[Python人工智能] 十一. ...

  7. 神经网络参数量和计算量,神经网络是参数模型吗

    神经网络参数如何确定 神经网络各个网络参数设定原则:①.网络节点 网络输入层神经元节点数就是系统的特征因子(自变量)个数,输出层神经元节点数就是系统目标个数.隐层节点选按经验选取,一般设为输入层节点数 ...

  8. 数组,结构体初始化为0

    一直以为 int a[256]={0};是把a的所有元素初始化为0,int a[256]={1};是把a所有的元素初始化为1. 调试的时查看内存发现不是那么一回事,翻了一下<The C++ Pr ...

  9. 【阿里云课程】神经网络:从生物学机制到全连接神经网络的局限性

    大家好,继续更新有三AI与阿里天池联合推出的深度学习系列课程,本次更新内容为第4课中的两节,介绍如下. 第1节:神经网络(上) 第1节课内容为:神经网络的上篇,简单介绍神经网络的生物学理论机制以及背后 ...

最新文章

  1. SQL Server Integration Services 包的开发与部署初探
  2. 什么是 TypeScript 的 Module Augmentation
  3. mysql默认时间怎么不同步_MYSQL 更新时间自动同步与创建时间默认值共存问题
  4. 【转】Cache Buffer Chain 第二篇
  5. Python 爬取张国荣最火的 8 首歌,60000 评论看完泪奔!
  6. 三星i9158刷机教程
  7. Git正解 脱水版 【7. Git命令】
  8. Chrome 安装有道画词取义插件
  9. 【无捆绑,可修改主页】系统之家 win7 32位64位极度纯净版系统(每月更新)
  10. 东方联盟创始人郭盛华:互联网守护神的传奇故事
  11. centos 搭建 SVN
  12. 设计一个正方形类,其中包括边长一个属性,包括构造函数,析构函数,求面积的成员函数和求周长的成员函数,通过正方形类定义2个正方形对象,并求建设一个下图所示的活动场地的费用。(用户输入中间草坪场地的边长)
  13. 博客园:CSS HTML
  14. QT随机放1个1和七个2_才知道,1个橙子放2个鸡蛋,只要拌一拌,出锅孩子吃了提高免疫力|橙子|鸡蛋|蒸蛋|食盐|白糖...
  15. win10计算机文件夹隐藏,Win10怎么隐藏文件夹_Win10怎么隐藏此电脑的文件夹-192路由网...
  16. 腾讯位置服务教你轻松搞定微信发送位置功能
  17. UGUI源码分析:开关组件Toggle与ToggleGroup
  18. linux怎么找宝塔地址,宝塔Linux面板安全入口地址忘了(方法一)
  19. Golang实现并发版网络爬虫:斗鱼直播颜值区直播封面图片爬取并保存文件
  20. 财务视角下的BI价值——把握客户需求,助推业财融合

热门文章

  1. c语言指针,return以及函数返回值
  2. 我们将迎来廉价智能手机时代
  3. 劳动合同试用期规定多久
  4. event.srcElement.parentElement用法演示
  5. 论文精读:R-CNN:Rich feature hierarchies for accurate object detection and semantic segmentation...
  6. myeclipse编辑新字母就会覆盖掉后面的字母解决方法
  7. oppo r17听筒测试软件,OPPO R17 Rro深度测评:始于颜值,忠于性能
  8. kali 安装 evil-winrm 遇到的问题
  9. Unity接入Bugly+符号表待上传
  10. android 点9图制作方法