[深度学习] 权值初始化 xavier和he_normal

本文探讨了深度学习中权重初始化的重要性,分析了Xavier和He_normal两种初始化方法的原理,旨在解决深层神经网络训练初期的梯度消失和饱和问题。通过实验对比,展示了不同初始化方式对模型训练速度和效果的影响,尤其是在ResNet训练MNIST数据集时,He_normal表现出更好的性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、概述与应用

(1)论文

    xavier论文:《Understanding the difficulty of training deep feedforward neural networks》

    he_normal论文:《Delving Deep into Rectifiers:Surpassing Human-Level Performance on ImageNet Classification》

(2)Tensorflow API,initializer:

     tf.keras.initializers.he_normal()

     tf.contrib.layers.xavier_initializer()

二、xavier原理

(0) 公式推导

核心:

前向传播时,对于某一层输入x,输出y,如何初始化w使得 x与y的分布一致?

y = sigma(xi * wi) + b , i= 1~n,表示n个神经元。

另外这个论文假设激活函数梯度为1,即没有激活函数

要使得 D(y) = D(x),即w初始化后,输出的方差与输入方差一致:

D(y) = D(xi) = D(sigmal(xi*wi))

                   = n * D(xi * wi)         // 此处根据公式 D(A+B) = D(A) + D(B)的到

                   = n * D(xi) * D(wi)    // 根据公式:

### UNet 模型中的权重初始化方法 对于UNet这类复杂的神经网络模型,在训练过程中采用合适的权重初始化策略至关重要。这不仅能加速收敛过程,还可以有效防止梯度消失等问题的发生。 #### 随机正态分布初始化 一种常见的做法是从高斯分布中抽取初始权重值[^2]。具体而言,这些数值通常具有零均值单位方差的特点。这种方法有助于打破对称性并促进不同单元之间的区分学习能力。 ```python import tensorflow as tf def initialize_weights(shape, dtype=None): return tf.random.normal(shape, mean=0.0, stddev=1.0, dtype=dtype) unet_model = create_unet() for layer in unet_model.layers: if isinstance(layer, (tf.keras.layers.Conv2D)): layer.kernel_initializer = initialize_weights ``` #### Xavier/Glorot 初始化 另一种广泛使用的方案是由Xavier Glorot提出的均匀或正态分布方式来设定各层连接权值[^3]。这种方式考虑到了输入输出节点数量的影响,从而使得每一层的信息传递更加稳定。 ```python from keras.initializers import glorot_uniform unet_model = create_unet(kernel_initializer=glorot_uniform()) ``` #### He 正态/均匀初始化 当激活函数为ReLU及其变体时,He初始化被认为是一个更好的选择。该方法通过调整缩放因子以适应非线性变换特性,进而改善深层架构下的性能表现。 ```python from keras.initializers import he_normal unet_model = create_unet(kernel_initializer=he_normal()) ``` 综上所述,针对UNet模型的具体应用场景以及所选用的损失函数等因素综合考量后选取最适宜的权重初始化手段是非常必要的。实践中可以尝试多种不同的初始化方法,并观察其对最终效果产生的影响。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值