营销型企业网站案例分析,x浏览器,邯郸企业建站,wordpress页面制作深度学习中的参数初始化主要是指初始化神经网络中的权重和偏置。权重和偏置通常分开初始化#xff0c;偏置通常初始化为零或较小的常数值。 没有一种万能的初始化技术#xff0c;因为最佳初始化可能因具体架构和要解决的问题而异。因此#xff0c;尝试不同的初始化技术以了解… 深度学习中的参数初始化主要是指初始化神经网络中的权重和偏置。权重和偏置通常分开初始化偏置通常初始化为零或较小的常数值。 没有一种万能的初始化技术因为最佳初始化可能因具体架构和要解决的问题而异。因此尝试不同的初始化技术以了解哪种技术最适合给定任务通常是一个好主意。 如果没有一个有用的权值初始化训练网络可能会导致收敛速度非常慢或无法收敛。 梯度消失和梯度爆炸(vanishing and exploding gradients)适当的权重初始化对于防止梯度消失和梯度爆炸至关重要。 1.梯度消失梯度变得越来越小权重更新很小权重几乎保持不变导致收敛速度变慢在最坏的情况下可能会导致网络完全停止收敛学习过程停滞。 2.梯度爆炸梯度可能会呈指数增长导致不成比例的大量更新并导致学习过程发散(divergence)。 参数初始化方法 1.零初始化将所有权重和偏置(weights and biases)初始化为0。这在深度学习中通常不使用因为它会导致梯度对称(symmetry)从而导致所有神经元在训练期间学习相同的特征。所有神经元中的所有激活都是相同的因此所有计算都是相同的这使得相关模型成为线性模型(linear model)。当用0初始化时偏置不会产生任何影响。 2.常数初始化用常数值初始化权重和偏置。任何常数初始化方案的性能都会很差与零初始化类似。如果神经网络中的神经元的权重被初始化为相同的值它们将在训练期间学习相同的特征。 3.随机初始化从均匀或正态分布(uniform or normal distribution)中随机初始化权重和偏置。这是深度学习中最常用的技术。改进了对称性破坏(symmetry-breaking)过程即如果两个隐藏神经元具有相同的输入和相同的激活函数则它们必须具有不同的初始参数并提供了更高的精度。这种方法可以防止对输入参数学习相同的特征。选择适当的初始化值对于高效训练是必要的。初始化过大会导致梯度爆炸(梯度太大)。初始化太小会导致梯度消失(梯度太小)。随机为权重分配值可能会出现过拟合、梯度消失、梯度爆炸等问题。 4.Xavier/Glorot初始化使用均值为0、方差为sqrt(1/n)的正态分布或均匀分布初始化权重其中n是前一层的神经元数量。权重(例如激活的方差)在每一层上都是相同的缓解梯度爆炸和消失问题。用于Sigmoid、Tanh激活函数。 5.He/Kaiming初始化使用均值为0、方差为sqrt(2/n)的正态分布或均匀分布初始化权重其中n是前一层的神经元数量。保留了激活函数(例如ReLU激活)的非线性。防止出现值过小或过大等问题缓解梯度爆炸和消失问题。用于ReLU激活函数。 6.正交初始化使用正交矩阵(orthogonal matrix)初始化权重这在反向传播期间保留梯度范数(gradient norm)。 7.均匀初始化使用均匀分布(uniform distribution)初始化权重。 总结 1.权重初始化的原则权重不应相对过小或过大、权重不应相同、权重应具有良好的方差。 2.对复杂数据集使用权重初始化技术非常重要。权重初始化在复杂数据的训练中起着重要作用尤其是在使用基于启发式(heuristic)的方法时如Xavier、He这些方法是通过激活函数的某些属性设计的。在权重初始化较小的情况下神经元的输入将很小从而导致激活函数的非线性损失。否则在权重初始化较大的情况下神经元的输入将很大从而导致激活函数饱和。选择合适的权重初始化方法将有助于获得更好的深度学习模型性能。此外良好的权重初始化有助于基于梯度的方法快速收敛。 3.选择合适的权重初始化方法是一个悬而未决的问题。Xavier初始化方法在可微激活函数(如Sigmoid)的情况下提供了良好的结果。He初始化方法在ReLU等不可微激活函数的情况下提供了良好的效果。大多数情况下DNN模型都是基于ReLU激活函数的。因此在DNN的情况下最好使用He方法进行权重初始化。 4.通过迁移学习(transfer learning)你不是从随机初始化的权重开始而是使用从以前的网络保存的权重作为新实验的初始权重(即微调预先训练的网络)。 注以上整理的内容主要来自 1. https://medium.com 2. https://www.geeksforgeeks.org 3. https://arxiv.org/pdf/2102.07004 PyTorch中参数初始化函数的实现在torch/nn/init.py 支持的参数初始化函数有uniform_(uniform distribution)、normal_(normal distribution)、trunc_normal_(truncated normal distribution)、constant_、ones_(scalar value 1)、zeros_(scalar value 0)、eye_(identity matrix)、dirac_(Dirac delta function)、xavier_uniform_(Xavier uniform distribution)、xavier_normal_(Xavier normal distribution)、kaiming_uniform_(Kaiming uniform distribution)、kaiming_normal_(Kaiming normal distribution)、orthogonal_((semi) orthogonal matrix)、sparse_(sparse matrix)。 PyTorch根据层的类型使用不同的默认权重和偏置初始化方法。 GitHubhttps://github.com/fengbingchun/NN_Test