赞
踩
深度学习中正则化是用来解决过拟合问题的,常见的正则化方法有L1正则、L2正则、BN、Dropout
区别:
- L1正则化:在损失函数中添加所有权重绝对值的和作为惩罚项,倾向于产生稀疏的权重矩阵,即很多权重会变成零。
- L2正则化:在损失函数中添加所有权重平方的和作为惩罚项,促使权重向零靠近但不会完全变为零,避免了过大的权重。
优势:
- L1:可以用于特征选择,因为它倾向于将不重要的特征权重降低到零。
- L2:有助于模型更加稳定,避免权重过大导致的模型不稳定或过拟合。
应用场景:
- L1:当特征数量远大于样本数量时,或需要特征选择时。
- L2:普遍适用,尤其当特征间相关性较低时。
- weight_decay = 0.01 # 权重系数
- regularization_loss = 0 # L1正则化的损失
-
- for param in model.parameters():
- # L1正则化的方式,参数的绝对值求和
- regularization_loss += torch.sum(torch.abs(param))
-
- origin_loss = criterion(input=output, target=label) # 计算原始损失
- loss = origin_loss + weight_decay * regularization_loss # 计算总损失
实现:
- Batch Normalization在每个批次的数据上对输入进行标准化,使得每层的输入具有稳定的均值和方差。
self.bn = nn.BatchNorm2d(num_features) #num_features为上层网络输出特征的通道数
影响:
- 加速训练过程,因为每一层的输入都具有稳定分布,有助于避免梯度消失或爆炸问题。
- 提高模型稳定性,减少对初始化的依赖。
- 可以视作一种弱正则化手段,有助于减少过拟合。
工作原理:
- Dropout在训练过程中随机“失活”一部分神经元,即将其输出设置为零,这样可以迫使网络学习更健壮的特征,减少对任何单一路径的依赖。
减少过拟合原因:
- 由于每次迭代都随机失活不同神经元,相当于训练了多个不同的网络,然后在测试时使用完全的模型进行预测,增加了模型的泛化能力。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。