pytorch深度学习笔记17

目录

摘要

1.参数初始化

常数初始化

秩初始化

正态分布初始化

均匀分布初始化

Xavier初始化(Glorot初始化)

He初始化(Kaiming初始化)

2.正则化

[Batch Normalization批量标准化](#Batch Normalization批量标准化)

权值衰减

Dropout随机失活


摘要

本周继续学习尚硅谷深度学习教程,学习内容是参数初始化的相关方法和正则化相关内容

1.参数初始化

参数初始化方案的选择在神经网络学习中起着举足轻重的作用,它对保持数值稳定性至关重要。此外,这些初始化方案的选择可以与激活函数的选择有趣的结合在一起。我们选择哪个激活函数以及如何初始化参数,可以决定优化算法收敛的速度有多快;糟糕选择可能会导致我们在训练时遇到梯度爆炸或梯度消失。

常数初始化

所有权重参数初始化为一个常数,即

这里J 为全1矩阵,k为初始化的常数。

注意:将权重初始值设为0将无法正确进行学习。严格地说,不能将权重初始值设成一样的值。因为这意味着反向传播时权重全部都会进行相同的更新,被更新为相同的值(对称的值)。这使得神经网络拥有许多不同的权重的意义丧失了。为了防止"权重均一化"(瓦解权重的对称结构),必须随机生成初始值。

秩初始化

权重参数初始化为单位矩阵,即

这里I为单位矩阵,即主对角线上元素为1,其它元素为0。

正态分布初始化

权重参数按指定均值μ 与标准差σ 正态分布初始化。因为不能直接将权重初始化为相同的常数,所以需要对参数进行随机初始化。最常见的随机分布就是 正态分布 (也叫 高斯分布),记作 X ~ N (μ , σ2)。

其概率密度函数为:

均匀分布初始化

权重参数在指定区间内均匀分布初始化。均匀分布一般记作 X ~ U (a , b)。

其概率密度函数为:

Xavier初始化(Glorot初始化)

Xavier初始化根据输入和输出的神经元数量调整权重的初始范围,确保每一层的输出方差与输入方差相近。

Xavier正态分布初始化:均值为0,标准差为的正态分布

Xavier均匀分布初始化:区间[,]内均匀分布

其中表示输入数,表示输出数

Xavier初始化参数适用于Sigmoid和Tanh等激活函数,能有效缓解梯度消失或爆炸问题。

He初始化(Kaiming初始化)

He初始化根据输入的神经元数量调整权重的初始范围。

He正态分布初始化:均值为0,标准差为的正态分布。

He均匀分布初始化:区间[,]内均匀分布。

其中表示输入数。

He初始化参数主要适用于ReLU及其变体(如Leaky ReLU)激活函数。

2.正则化

机器学习的问题中,过拟合 是一个很常见的问题。

过拟合指的是能较好拟合训练数据,但不能很好地拟合不包含在训练数据中的其他数据。机器学习的目标是提高泛化能力,希望即便是不包含在训练数据里的未观测数据,模型也可以进行正确的预测。因此可以通过 正则化 方法来抑制过拟合。

常用的正则化方法有Batch Normalization、权值衰减、Dropout、早停法等。

Batch Normalization批量标准化

Batch Normalization最重要的目的,其实是调整各层的激活值分布使其拥有适当的广度,BN层通常放在线性层(全连接层/卷积层)之后,激活函数之前。它有着以下优点:

  • 可以使学习快速进行(允许更高的学习率)
  • 不那么依赖初始值(对于初始值不用那么神经质)
  • 抑制过拟合(降低Dropout等的必要性)

Batch Normalization会先对数据进行标准化,再对数据进行缩放和平移:

下图为Batch Normalization的计算图:

权值衰减

通过在学习的过程中对大的权重进行"惩罚",可以有效地抑制过拟合,这种方法被称为 权值衰减。因为很多过拟合产生的原因,就是权重参数取值过大。

一般会对损失函数加上一个权重的范数;最常见的就是 L2 范数的平方:

惩罚项求导之后得到 ;所以在求权重梯度时,需要为之前误差反向传播法的结果,再加上

Dropout随机失活

Dropout(随机失活,暂退法)是一种在学习的过程中随机关闭神经元的方法。

训练时以概率随机关闭神经元,迫使网络不依赖特定神经元,增强鲁棒性,同时未被关闭的神经元的输出值以的比例进行缩放,以保持期望值不变;而测试时通常不使用Dropout,即所有神经元保持激活状态并且不进行缩放。

Dropout会有隐式集成的效果(每次迭代训练不同的子网络,测试时近似集成效果)。

Dropout在全连接层和卷积层均适用,尤其对大规模网络效果显著。Dropout通常放在激活函数之后,线性层(全连接层/卷积层)之前。

相关推荐
棒棒的皮皮1 小时前
【深度学习】YOLO 进阶提升之算法改进(新型骨干网络 / 特征融合方法 / 损失函数设计)
深度学习·算法·yolo·计算机视觉
大山同学1 小时前
深度学习任务分类之图像超分辨率
人工智能·深度学习·分类
丝斯20111 小时前
AI学习笔记整理(53)——大模型之Agent 智能体开发
人工智能·笔记·学习
jay神1 小时前
车牌识别与定位数据集-CCPD2020
人工智能·深度学习·机器学习
名为沙丁鱼的猫7292 小时前
【并行化】提升智能体效率的关键设计模式,同时执行独立任务缩短响应时间
人工智能·深度学习·机器学习·自然语言处理·nlp
居7然10 小时前
ChatGPT是怎么学会接龙的?
深度学习·语言模型·chatgpt·性能优化·transformer
梨子串桃子_10 小时前
推荐系统学习笔记 | PyTorch学习笔记
pytorch·笔记·python·学习·算法
${王小剑}12 小时前
深度学习损失函数
人工智能·深度学习
laplace012312 小时前
# 第六章 agent框架开发实践 - 学习笔记
人工智能·笔记·学习·语言模型·agent