美文网首页
六.网络参数初始化

六.网络参数初始化

作者: 愿风去了 | 来源:发表于2018-11-06 21:49 被阅读16次

俗话说“万事开头难”,放在卷积神经网络训练中也是如此。

神经网络模型一般依靠随机梯度下降法进行模型训练和参数更新,网络的最终性能与收敛得到的最优解直接相关,而收敛效果实际上又很大程度取决于网络参数最开始的初始化

理想的网络参数初始化使模型训练事半功倍,相反,糟糕的初始化方案不仅会影响网络收敛甚至会导致“梯度弥散”或“爆炸”致使训练失败。

举个例子,如网络使用sigmoid函数作为非线性激活函数,若参数初始化为过大值,前向运算 经过 sigmoid函数后的输出结果几乎全为0或1的二值,而导致在反向运算时的对应梯度全部 为0。这时便发生了“梯度弥散”现象。无独有偶,不理想的初始化对于 RELU 函数也会产生问题。 若使用了糟糕的参数初始化,前向运算时的输出结果会有可能全部为负,经过 RELU  函数后此部分变为全 0,在反向运算时则毫无响应。这便是RELU函数的“死区”现象。

那么,网络参数初始化都有哪些方案?

全零初始化

虽然能保证参数期望值为0,但是参数全为 0时网络不同神经元的输出必然相同,相同输出则导致梯度更新完全一样,这样便会令更新后的参数仍然保持一样的状态。换句话说,如若参数进行了全零初始化,那么网络神经元将毫无能力对此做出改变,从而无法进行模型训练。

随机初始化

将参数值随机设定为接近 0的一个很小的随机数(有正有负)。在实际应用中,随机参数服从高斯分布(即正态分布)或均匀分布都是较有效的初始化方式。

其中的高斯分布为均值为 0,方差为1的标准高斯分布。

Problem:

上述做法仍会带来一个问题,即网络输出数据分布的方差会随着输入神经元个数改变,原因如下:

为解决这一问题,会在初始化的同时加上对方差大小的规范化,这便是著名的“Xavier参数初始化方法”。

如:

高斯分布参数初始化 Xavier参数初始化方法

实验对比发现此初始化方法的网络相比未做方差规范化的版本有更快的收敛速率。

但是,以上方法未考虑激活函数对输入的影响!

未考虑非线性映射函数对输入 s 的影响,因为使用如 RELU函数等非线性映射函数后,输出数据的期望往往不再为0,因此Xavier方法解决的问题并不完全符合要求。

在2015年,He等人提出了改进——将非线性映射造成的影响考虑进参数初始化中,提出了原本Xavier方法中方差规范化的分母应为而不是\sqrt{(n)}

实验证明He方法比Xavier方法有更好的收敛效果。

其他初始化方法

除了直接随机初始化网络参数,一种简便易行且十分有效的方式则是利用预训练模型——将预训练模型的参数作为新任务上模型的参数初始化。

小结

§ 网络参数初始化的优劣极大程度决定了网络的最终性能;

§ 比较推荐的网络初始化方式为He方法,将参数初始化为服从高斯分布或均匀分布的较小随机数,同时对参数方差需施加规范化;

§ 借助预训练模型中参数作为新任务参数初始化的方式是一种简便易行且十分有效的模型参数初始化方法。

相关文章

  • 六.网络参数初始化

    俗话说“万事开头难”,放在卷积神经网络训练中也是如此。 神经网络模型一般依靠随机梯度下降法进行模型训练和参数更新,...

  • Day 3: 参数初始化

    神经网络参数初始化 神经网络的参数主要是权重(weights):W, 和偏置项(bias):b 1) 0初始化 不...

  • 初始化网络参数

    为什么要给网络参数赋初值 既然网络参数通过训练得到,那么其初值是否重要?设置初值不佳是否只影响收敛速度而不影响模型...

  • Kafka2.0消费者客户端源码分析

    1 KafkaConsumer 构造器 初始化参数配置。 初始化消费者网络客户端ConsumerNetworkCl...

  • 栈式自编码器的无监督逐层贪婪预训练(greedy layer-w

    对于深层模型的训练,通常采用BP算法来更新网络参数。但是需要对网络参数进行很小心的初始化,以免网络陷入局部最小点。...

  • resnet,densenet的反向传播详解

    resnet,densenet的反向传播详解 正常网络的反向传播 , , , , 初始化网络参数,给个初始值,经过...

  • JavaWeb

    初始化参数 全局初始化参数 定义在web.xml中 获得全局初始化参数的方法: 初始化参数(局部变量) 在3.0之...

  • Swift 初始化

    初始化 init() 初始化形式参数 形式参数和实际参数标签和无实际参数 可选值类型 指定初始化器和便捷初始化器 ...

  • PyTorch设置随机数种子使结果可复现

    原理 在神经网络中,参数默认是进行随机初始化的。不同的初始化参数往往会导致不同的结果。 当得到比较好的结果时我们通...

  • 2020-09-27 权重初始化

    在开始训练网络之前,还需要初始化网络的参数。 1、全零初始化 把这些权重的初始值都设为0这个做法错误的。因为如果网...

网友评论

      本文标题:六.网络参数初始化

      本文链接:https://www.haomeiwen.com/subject/qnkztqtx.html