神经网络权重初始化

深度学习中的weight initialization对模型收敛速度和模型质量有重要影响!
在ReLU 中推荐使用Xavier Initialization的变种,暂且称之为He Initialization:
在这里插入图片描述
使用Batch Normalization Layer可以有效降低深度网络对weight初始化的依赖:
在这里插入图片描述

初始化为0的可行性?
答案是不可行。 为什么将所有W初始化为0是错误的呢?是因为如果所有的参数都是0,那么所有神经元的输出都将是相同的,那在back propagation的时候同一层内所有神经元的行为也是相同的 — gradient相同,weight update也相同。这显然是一个不可接受的结果。

random initialization
随机初始化是很多人目前经常使用的方法,然而这是有弊端的,一旦随机分布选择不当,就会导致网络优化陷入困境。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
这是y=wx+b的值比较大(好几十,因为矩阵乘后有累加效果,导致y比较大),经过tanh,多数分布在-1,1附近,传入下层作为x和下层的较大w乘后还是如此。所以一直徘徊在-1,1左右。

Xavier initialization

Xavier initialization可以解决上面的问题!其初始化方式也并不复杂。Xavier初始化的基本思想是保持输入和输出的方差一致,这样就避免了所有输出值都趋向于0。注意,为了问题的简便,Xavier初始化的推导过程是基于线性函数的,但是它在一些非线性神经元中也很有效。让我们试一下:
(node_in)输入神经元数量
W = tf.Variable(np.random.randn(node_in, node_out)) / np.sqrt(node_in)
在这里插入图片描述

意义:避免上一层传来的y经过和较大的w乘后变的很大

He initialization
在这里插入图片描述

Batch Normalization Layer

意义:强制将上一层的y和w乘完之后,做一次Gaussian Normalization和线性变换。
Batch Normalization是一种巧妙而粗暴的方法来削弱bad initialization的影响,
我们想要的是在非线性activation之前,输出值应该有比较好的分布(例如高斯分布),以便于back propagation时计算gradient,更新weight。Batch Normalization将输出值强行做一次Gaussian Normalization和线性变换:
在这里插入图片描述
在这里插入图片描述
参考链接:
雷锋网 https://www.leiphone.com/news/201703/3qMp45aQtbxTdzmK.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值