四、神经网络——正则化方法
四、正则化方法
-
在深度学习中,所有能够缓解网络过拟合的方法都叫做正则化方法(越复杂的模型越容易发生过拟合)
-
在设计机器学习算法时希望在新样本上的泛化能力强。许多机器学习算法都采用相关的策略来减小测试误差,这些策略统称为正则化
-
神经网络的强大的表示能力经常遇到过拟合,所以需要使用不同形式的正则化策略
-
目前深度学习中使用较多的策略有范数惩罚,DropOut, 特殊的网络层等。
1.范数惩罚(L1, L2)
(1)L1正则化
会直接把高次项前面的系数变为0
-
定义:在损失函数中添加L1范数作为正则化项,公式为J(w)=MSE(w)+α∑i=1n∣wi∣J(w) = MSE(w)+\alpha \sum_{i = 1}^n|w_i|J(w)=MSE(w)+α∑i=1n∣wi∣
-
惩罚系数
-
- α\alphaα控制正则化强度,值越大惩罚力度越大
- 属于需要人工调整的超参数
-
权重影响
-
- 通过绝对值函数的梯度特性(x>0导数为1,x<0导数为-1)迫使权重趋向0
- 可能使不重要的特征权重精确等于0,实现特征筛选
-
应用场景
-
- 适用于需要特征选择的场景
- 加入线性回归后形成Lasso回归模型
-
优化过程
-
- 初始化权重后,正则化项的负梯度方向会持续推动权重向0靠近
- 当权重=0时梯度消失,优化停止
-
使用L1正则化的线性回归模型就是Lasso回归
(2)L2正则化(优先选择)
-
公式:J(w)=MSE(w)+α∑i=1nwi2J(w) = MSE(w)+\alpha \sum_{i = 1}^nw_i^2J(w)=MSE(w)+α∑i=1nwi2
-
- α\alphaα叫做惩罚系数,该值越大则权重调整幅度就越大,即表示对特征权重惩罚力度就越大
-
L2正则化会使得权重趋向于0,一般不等于0
-
使用L2正则化的线性回归模型是岭回归
2.DropOut正则化(随机失活)
- 在训练时候用,在预测的时候一定不能将其中某些层失活掉(即在测试过程中,随机失活不起作用)
- 在训练神经网络中模型参数较多,在数据量不足的情况下,很容易发生过拟合,DropOut(随机失活)是一种有效的正则化方法
- 在训练过程中,DropOut的实现是让神经元以超参数p的概率停止工作或者激活被置为0, 未被置为0的进行缩放,缩放比例为11−p\frac{1}{1-p}1−p1(实质上是增大比例)。训练过程可以认为是对完整的神经网络的一些子集进行训练,每次基于输入数据只更新子网络的参数
import torch
import torch.nn as nntorch.random.manual_seed(22)
input = torch.randn([1, 4])
layer = nn.Linear(in_features=4, out_features=5)
y = layer(input)
print(y)dropout = nn.Dropout(p = 0.75)
out = dropout(y)
print(out)
3.批量归一化(BN层)
- 在计算机视觉(CV)中使用较多
先对数据标准化,再对数据重构(缩放+平移):f(x)=λ⋅x−E(x)Var(x)+ϵ+βf(x) = \lambda \cdot \frac{x - E(x)}{\sqrt{Var(x)}+\epsilon}+\betaf(x)=λ⋅Var(x)+ϵx−E(x)+β
- λ\lambdaλ和β\betaβ是可学习的参数,它相当于对标准化后的值做了一个线性变换,λ\lambdaλ为系数,β\betaβ为偏置
- epsepseps通常指为1e−51e-51e−5,避免分母为000
- E(x)E(x)E(x)表示变量的均值
- Var(x)Var(x)Var(x)表示变量的方差