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

文章目录

  • 梯度下降的变化
    • 1. SGD随机梯度下降
    • 2. Momentum
    • 3. Adagrad
    • 4. RMSprop
    • 5. 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)