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

重磅干货,第一时间送达

本文转自:磐创AI

【导读】神经网络的初始化是训练流程的重要基础环节,会对模型的性能、收敛性、收敛速度等产生重要的影响。本文是deeplearning.ai的一篇技术博客,文章指出,对初始化值的大小选取不当,  可能造成梯度爆炸或梯度消失等问题,并提出了针对性的解决方法。

初始化会对深度神经网络模型的训练时间和收敛性产生重大影响。简单的初始化方法可以加速训练,但使用这些方法需要注意小心常见的陷阱。本文将解释如何有效地对神经网络参数进行初始化。

有效的初始化对构建模型至关重要

要构建机器学习算法,通常要定义一个体系结构(例如逻辑回归,支持向量机,神经网络)并对其进行训练来学习参数。下面是训练神经网络的一些常见流程:

初始化参数

选择优化算法

然后重复以下步骤:

1、向前传播输入

2、计算成本函数

3、使用反向传播计算与参数相关的成本梯度

4、根据优化算法,利用梯度更新每个参数

然后,给定一个新的数据点,使用模型来预测其类型。

初始化值太大\太小会导致梯度爆炸或梯度消失

初始化这一步对于模型的最终性能至关重要,需要采用正确的方法。比如对于下面的三层神经网络。可以尝试使用不同的方法初始化此网络,并观察对学习的影响。

在优化循环的每次迭代(前向,成本,后向,更新)中,我们观察到当从输出层向输入层移动时,反向传播的梯度要么被放大,要么被最小化。

假设所有激活函数都是线性的(恒等函数)。则输出激活为:

其中 L=10 ,且W[1]、W[2]…W[L-1]都是2*2矩阵,因为从第1层到L-1层都是2个神经元,接收2个输入。为了方便分析,如果假设W[1]=W[2]=…=W[L-1]=W,那么输出预测为

如果初始化值太大或太小会造成什么结果?

情况1:初始化值过大会导致梯度爆炸

如果每个权重的初始化值都比单位矩阵稍大,即:

可简化表示为

且a[l]的值随l值呈指数级增长。当这些激活用于向后传播时,会导致梯度爆炸。也就是说,与参数相关的成本梯度太大。这导致成本围绕其最小值振荡。

初始化值太大导致成本围绕其最小值震荡

情况2:初始化值过小会导致梯度消失

类似地,如果每个权重的初始化值都比单位矩阵稍小,即:

可简化表示为

且a[l]的值随l值减少呈指数级下降。当这些激活用于后向传播时,可能会导致梯度消失。也就是说,与参数相关的成本梯度太小。这会导致成本在达到最小值之前收敛。

初始化值太小导致模型过早收敛

总而言之,使用大小不合适的值对权重进行将导致神经网络的发散或训练速度下降。虽然我们用的是简单的对称权重矩阵来说明梯度爆炸/消失的问题,但这一现象可以推广到任何不合适的初始化值。

如何确定合适的初始化值

为了防止以上问题的出现,我们可以坚持以下经验原则:

1.激活的平均值应为零。

2.激活的方差应该在每一层保持不变。

在这两个假设下,反向传播的梯度信号不应该在任何层中乘以太小或太大的值。梯度应该可以移动到输入层,而不会爆炸或消失。

更具体地说,对于层l,其前向传播是:

我们想让下式成立:

确保均值为零,并保持每层输入方差值不变,可以保证信号不会爆炸或消失。该方法既适用于前向传播(用于激活),也适用于向后传播(用于关于激活的成本梯度)。这里建议使用Xavier初始化(或其派生初始化方法),对于每个层l,有:

层l中的所有权重均自正态分布中随机挑选,其中均值 μ=0 ,方差E= 1/( n[l−1]),其中n[l−1] 是第l-1层网络中的神经元数量。偏差已初始化为零。

下图说明了Xavier初始化对五层全连接神经网络的影响。数据集为MNIST中选取的10000个手写数字,分类结果的红色方框表示错误分类,蓝色表示正确分类。

结果显示,Xavier初始化的模型性能显著高于uniform和标准正态分布(从上至下分别为uniform、标准正态分布、Xavier)。

结论

在实践中,使用Xavier初始化的机器学习工程师会将权重初始化为N(0,1/( n[l−1]))或N(0,2/(n[l-1]+n[1])),其中后一个分布的方差是n[l-1]和n[1]的调和平均。

Xavier初始化可以与tanh激活一起使用。此外,还有大量其他初始化方法。例如,如果你正在使用ReLU,则通常的初始化是He初始化,其初始化权重通过乘以Xavier初始化的方差2来初始化。虽然这种初始化证明稍微复杂一些,但其思路与tanh是相同的。

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

一文看懂神经网络初始化!相关推荐

  1. 一文看懂神经网络初始化!吴恩达Deeplearning.ai最新干货

      新智元报道   来源:deeplearning.ai 编辑:大明 [新智元导读]神经网络的初始化是训练流程的重要基础环节,会对模型的性能.收敛性.收敛速度等产生重要的影响.本文是deeplearn ...

  2. 一文看懂神经网络中的梯度下降原理 图像说明

    本文是一篇关于深度学习优化方法--梯度下降的介绍性文章.作者通过长长的博文,简单介绍了梯度下降的概念.优势以及两大挑战.文中还配有大量生动形象的三维图像,有兴趣的亲了解一下? 从很大程度上来说,深度学 ...

  3. 一文读懂神经网络初始化!吴恩达Deeplearning.ai最新干货

    来源:新智元 本文约3000字,建议阅读5分钟. 本文是deeplearning.ai的一篇技术博客,对初始化值的大小选取不当,可能造成梯度爆炸或梯度消失等问题,并提出了针对性的解决方法. 神经网络的 ...

  4. 神经网络通俗指南:一文看懂神经网络工作原理

    现在谈人工智能已经绕不开"神经网络"这个词了.人造神经网络粗线条地模拟人脑,使得计算机能够从数据中学习. 机器学习这一强大的分支结束了 AI 的寒冬,迎来了人工智能的新时代.简而言 ...

  5. 一文看懂NLP神经网络发展历史中最重要的8个里程碑!

    一文看懂NLP神经网络发展历史中最重要的8个里程碑! https://mp.weixin.qq.com/s/gNZiiEfsQjlF9tArNDIt5Q 作者|Sebastian Ruder 译者|小 ...

  6. 一文看懂卷积神经网络-CNN(基本原理+独特价值+实际应用)

    http://blog.itpub.net/29829936/viewspace-2648775/ 2019-06-25 21:31:18 卷积神经网络 – CNN 最擅长的就是图片的处理.它受到人类 ...

  7. 【深度学习理论】一文看懂卷积神经网络

    [深度学习理论]一文看懂卷积神经网络 https://mp.weixin.qq.com/s/wzpMtMFkVDDH6scVcAdhlA 选自Medium 作者: Pranjal Yadav 经机器之 ...

  8. 一文看懂卷积神经网络CNN的核心

    在之前,我总结了关于计算机神经网络与梯度下降的核心,详见下文链接 : 一文看懂计算机神经网络与梯度下降 本文主要会对图像相关的机器学习中最为重要的网络,卷积神经网络作个人的理解分析. 1. 为什么要使 ...

  9. 【一文看懂】深度神经网络加速和压缩新进展年度报告

    郑板桥在<赠君谋父子>一诗中曾写道, "删繁就简三秋树,领异标新二月花." 这句诗讲的是,在画作最易流于枝蔓的兰竹时,要去掉其繁杂使之趋于简明如"三秋之树&q ...

最新文章

  1. WiFi是SD-WAN的良好组合,但不是必备选择
  2. Learning ImageMagick 4: 批处理
  3. python官方网站地址-哪里能找到 Python 视频教程地址?
  4. android做一个坦克大战小游戏_一个 ECharts 做的猜数小游戏
  5. 知乎首页 粒子效果 动态背景
  6. Android之基于xmpp openfire smack开发之Android客户端开发[3]
  7. 2.1 进行误差分析
  8. 单片机电源自动切换电路,mos双电源自动切换电路,电池与usb供电自动切换电路
  9. 套接字socket 的地址族和类型、工作原理、创建过程
  10. bzoj 2555: SubString
  11. 不加群提取群成员_QQ群引流推广怎么做
  12. java 抽象工厂 类图_Java设计模式——抽象工厂模式
  13. python强制关闭文件_正在强制删除文件。Python,Windows
  14. 数字验证正则表达式大全
  15. css视差滑动(阅读网站案例)
  16. NLS_LANG与NLS_LANGUAGE的区别
  17. C#,ASP.NAT基于腾讯服务器实现自动发送邮件功能的几种方法及遇到的坑
  18. 服务器账号登录失败怎么回事,远程连接云服务器登录失败是什么原因
  19. QT 中控件缩放比列设置
  20. 编写一个移动的游戏背景(含素材视频教程)

热门文章

  1. 那个曾经为美国NASA开发火星大脑的AI公司,现在和华为合作了
  2. Uber AI实验室总结「神经进化」研究:如何利用遗传算法优化网络?
  3. Nacos实现原理详解
  4. 如何给女朋友解释为什么Java里面的String对象是不可变的?
  5. MQ 消息中间件梳理
  6. 现在,Serverless 真的已经成熟了吗?
  7. 一次Dubbo拥堵的分析
  8. MyBatis 框架下 SQL 注入攻击的 3 种方式,真是防不胜防!
  9. 深入理解Ribbon之源码解析
  10. DCIC 2021数据挖掘新赛题开放!