深度学习基础-神经网络权重初始化

一、两个问题

假设3层神经网络,输入节点v0,第一层节点v1,v2,v3 第二层节点v4,v5 第三层节点v6。其中vi=f(ai),i=4,5,6 f为激活函数。

前向传播:
在这里插入图片描述

1. 全零初始化是否可以

一般情况不可以。当全零参数初始化时,除输入节点所有节点值均为0,根据上式除第一层梯度与输入值有关其余均为0.

LR等一层网络可以全零初始化, 网络梯度与输入值有关。仅全零初始化一层也不影响训练,但涉及两层及以上,从涉及层到输入层的梯度都为0,参数无法更新。

2. 参数全部相同初始化是否可以

不可以。若初始化为相同的参数,隐藏层所有节点输出相同,梯度也是相同的。相当于输入经过一个节点。

二、参数初始化方式

1. 预训练初始化

pretraining + finetuning加载已训练好的模型参数,进行下游任务的模型训练。

2. 随机初始化

2.1 random initialization

random initialization: np.random.randn(m,n)

随机产生符合正态分布的m×n维向量

弊端:随机会产生梯度消失,随着网络层次加深,由于链式求导法则,输出越来越接近0

2.2 Xavier initialization

tf.Variable(np.random.randn(node_in,node_out))/np.sqrt(node_in)

imageM 代表着输入输出维度即node_in,node_out

保证输入输出方差一致

2.3 He initialization

tf.Variable(np.random.randn(node_in,node_out))/np.sqrt(node_in/2)

适用于RELU激活函数,只有半区有效

3. 固定初始化

比如对于偏置(bias)通常用0初始化,LSTM遗忘门偏置通常为1或2,使时序上的梯度变大,对于ReLU神经元,偏置设为0.01,使得训练初期更容易激活。

参考链接

https://www.leiphone.com/category/ai/3qMp45aQtbxTdzmK.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值