0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何有效地对神经网络参数进行初始化

DPVg_AI_era 来源:lq 2019-05-15 08:59 次阅读

神经网络的初始化是训练流程的重要基础环节,会对模型的性能、收敛性、收敛速度等产生重要的影响。本文是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是相同的。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4562

    浏览量

    98646
  • 函数
    +关注

    关注

    3

    文章

    3859

    浏览量

    61297
  • 机器学习
    +关注

    关注

    66

    文章

    8095

    浏览量

    130519

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

文章出处:【微信号:AI_era,微信公众号:新智元】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    MATLAB神经网络工具箱函数

    递归网络newelm 创建一Elman递归网络2. 网络应用函数sim 仿真一个神经网络init 初始化一个
    发表于 09-22 16:10

    机器学习神经网络参数的代价函数

    吴恩达机器学习笔记之神经网络参数的反向传播算法
    发表于 05-22 15:11

    卷积神经网络如何使用

    卷积神经网络(CNN)究竟是什么,鉴于神经网络在工程上经历了曲折的历史,您为什么还会在意它呢? 对于这些非常中肯的问题,我们似乎可以给出相对简明的答案。
    发表于 07-17 07:21

    【案例分享】基于BP算法的前馈神经网络

    }或o koko_{k})的误差神经元偏倚的变化量:ΔΘ ΔΘ Delta Theta=学习步长η ηeta × ×imes 乘以神经元的误差BP神经网络算法过程网络
    发表于 07-21 04:00

    【案例分享】ART神经网络与SOM神经网络

    今天学习了两个神经网络,分别是自适应谐振(ART)神经网络与自组织映射(SOM)神经网络。整体感觉不是很难,只不过一些最基础的概念容易理解不清。首先ART神经网络是竞争学习的一个代表,
    发表于 07-21 04:30

    CMSIS-NN神经网络内核助力微控制器效率提升

    目前,在许多需要在本地进行数据分析的“永远在线”的物联网边缘设备中,神经网络正在变得越来越普及,主要是因为可以有效地同时减少数据传输导致的延时和功耗。 而谈到针对物联网边缘设备上的神经网络
    发表于 07-23 08:08

    改善深层神经网络--超参数优化、batch正则和程序框架 学习总结

    《深度学习工程师-吴恩达》02改善深层神经网络--超参数优化、batch正则和程序框架 学习总结
    发表于 06-16 14:52

    怎么解决人工神经网络并行数据处理的问题

    本文提出了一个基于FPGA 的信息处理的实例:一个简单的人工神经网络应用Verilog 语言描述,该数据流采用模块的程序设计,并考虑了模块间数据传输信号同 步的问题,有效地解决了人工神经网络
    发表于 05-06 07:22

    如何构建神经网络

    原文链接:http://tecdat.cn/?p=5725 神经网络是一种基于现有数据创建预测的计算系统。如何构建神经网络神经网络包括:输入层:根据现有数据获取输入的层隐藏层:使用反向传播优化输入变量权重的层,以提高模型的预测
    发表于 07-12 08:02

    基于BP神经网络的PID控制

    神经网络可以建立参数Kp,Ki,Kd自整定的PID控制器。基于BP神经网络的PID控制系统结构框图如下图所示:控制器由两部分组成:经典增量式PID控制器;BP神经网络...
    发表于 09-07 07:43

    卷积神经网络模型发展及应用

    propagation algorithm,BP)[22]。BP 算法采用 Sigmoid 进行非线性映射,有效解决了 非线性分类和学习的问题,掀起了神经网络第二次 研究高潮。BP 网络
    发表于 08-02 10:39

    如何进行高效的时序图神经网络的训练

    现有的图数据规模极大,导致时序图神经网络的训练需要格外长的时间,因此使用多GPU进行训练变得成为尤为重要,如何有效地将多GPU用于时序图神经网络训练成为一个非常重要的研究议题。本文提供
    发表于 09-28 10:37

    BP神经网络的税收预测

    针对传统税收预测模型精度较低的问题,提出一种将Adaboost算法和BP神经网络相结合进行税收预测的方法。该方法首先对历年税收数据进行预处理并初始化测试数据分布权值;然后
    发表于 02-27 16:51 0次下载
    BP<b class='flag-5'>神经网络</b>的税收预测

    神经网络如何正确初始化?

    初始化对训练深度神经网络的收敛性有重要影响。
    的头像 发表于 05-17 16:32 7754次阅读
    <b class='flag-5'>神经网络</b>如何正确<b class='flag-5'>初始化</b>?

    教大家怎么选择神经网络的超参数

    minibatch 的大小, 输出神经元的编码方式, 代价函数的选择, 权重初始化的方法, 神经元激活函数的种类, 参加训练模型数据的规模 这些都是可以影响神经网络学习速度和最后分类
    的头像 发表于 06-19 14:49 3189次阅读
    教大家怎么选择<b class='flag-5'>神经网络</b>的超<b class='flag-5'>参数</b>