Pytorch——梯度下降的变化,数据预处理,权重初始化,防止过拟合

Fronde ·
更新时间:2024-09-21
· 943 次阅读

文章目录梯度下降的变化1. SGD随机梯度下降2. Momentum3. Adagrad4. RMSprop5. Adam数据预处理1. 中心化2. 标准化3. PCA主成分分析4. 白噪声权重初始化1. 随机初始化2. 稀疏初始化3. 初始化偏置(bias)4. 批标准化(Batch Noemalization)防止过拟合1. 正则化2. Dropout 梯度下降的变化 1. SGD随机梯度下降

每次使用一批(batch)数据进行梯度的计算,而不是计算全部的梯度

2. Momentum

SGD的同时,增加动量(momentum),帮助梯度跳出局部最小点

3. Adagrad

自适应学习率(adaptive),学习率每次计算出的梯度影响
缺点:某些情况下一直递减的学习率并不好,这样会造成学习过早结束

4. RMSprop

Adagrad的改进

5. Adam

RMSprop与动量Momentum的结合

数据预处理 1. 中心化

数据预处理中最常见的处理方法:每个特征维度都减去相应的均值实现中心化
这样使得数据变成0均值,即数据移动到坐标轴的0点位置,以坐标轴中心为中心点。
(尤其是图像数据)

2. 标准化

中心化之后,还要让数据不同的特征维度都有着相同的规模

除以标准差 让每个特征维度的最大值和最小值按比例缩放到-1~1之间
故:让数据有相同的范围 3. PCA主成分分析

中心化之后,将数据投影到一个特征空间,我们能够取得一些较大的、主要的特征向量来降低维度,去掉一些没有方差的维度。

4. 白噪声

首先会跟PCA一样,将数据投影到一个特征空间,然后每个维度除以特征值以标准化数据
(PCA和白噪声用的少)

权重初始化 1. 随机初始化

我们希望权重初始化的时候尽可能靠近0,但是不能全部为0
可以初始化权重为一些靠近0的随机数,神经元最开始都是随机的、唯一的,所以在跟新的时候也是作为独立的部分,最后一起合成在神经网络中。

2. 稀疏初始化

将权重全部初始化为0,然后为了打破对称性在里面随机挑选一些参数附上随机值
(用的少)

3. 初始化偏置(bias)

bias的初始化通常为0,因为权重已经打破了对称性

4. 批标准化(Batch Noemalization)

通常应用到全连接层后面,非线性层前面,同时还可以加快网络的收敛速度。
(常用)

防止过拟合 1. 正则化 L2正则化: 对于权重过大的部分进行惩罚(常用) L1正则化 2. Dropout

训练网络的时候依概率P保留每个神经元,也就是说每次训练的时候,对一些神经元置0

训练:随机的部分神经元没有参与到网络的训练 预测:所有全部的神经元都参与

(实际应用中L2正则化搭配Dropout防止过拟合


作者:我是小杨我就这样



数据预处理 pytorch 过拟合 梯度下降 数据 梯度 权重 初始化

需要 登录 后方可回复, 如果你还没有账号请 注册新账号