当前位置: 首页 > news >正文

四、神经网络——正则化方法

四、正则化方法

  • 在深度学习中,所有能够缓解网络过拟合的方法都叫做正则化方法(越复杂的模型越容易发生过拟合)

  • 在设计机器学习算法时希望在新样本上的泛化能力强。许多机器学习算法都采用相关的策略来减小测试误差,这些策略统称为正则化

  • 神经网络的强大的表示能力经常遇到过拟合,所以需要使用不同形式的正则化策略

  • 目前深度学习中使用较多的策略有范数惩罚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=1nwi

  • 惩罚系数

    • α\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}1p1(实质上是增大比例)。训练过程可以认为是对完整的神经网络的一些子集进行训练,每次基于输入数据只更新子网络的参数
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)+ϵxE(x)+β

  • λ\lambdaλβ\betaβ是可学习的参数,它相当于对标准化后的值做了一个线性变换λ\lambdaλ为系数,β\betaβ为偏置
  • epsepseps通常指为1e−51e-51e5,避免分母为000
  • E(x)E(x)E(x)表示变量的均值
  • Var(x)Var(x)Var(x)表示变量的方差
http://www.lryc.cn/news/585715.html

相关文章:

  • VLM-R1 + GRPO 算法完整复现全过程日志
  • Linux修炼:权限
  • SpringCloud【OpenFeign】
  • 学习日记-spring-day46-7.11
  • 伺服驱动控制CANopen协议
  • 网络编程(基本概念)
  • 【C++篇】二叉树进阶(上篇):二叉搜索树
  • TCP详解——流量控制、滑动窗口
  • mysql的性能优化:组提交、数据页复用、全表扫描优化、刷脏页
  • 【JMeter】调试方法
  • 论容器化 | 分析Go和Rust做医疗的后端服务
  • Express实现定时任务
  • 飞算科技正在撬动各行业数字化转型的深层变革
  • ch06 部分题目思路
  • OpenCV实现感知哈希(Perceptual Hash)算法的类cv::img_hash::PHash
  • 深入探究编程拷贝
  • 基于Java Spring Boot开发的旅游景区智能管理系统 计算机毕业设计源码32487
  • 4万亿英伟达,凭什么?
  • 【Linux应用】Ubuntu20.04 aarch64开发板一键安装ROS2(清华源)
  • PandaCoder重大产品更新-引入Jenkinsfile文件支持
  • mysql的LIMIT 用法
  • 【AI大模型】超越RAG的搜索革命!分层框架让AI像专家团队一样深度思考
  • Java教程:JavaWeb ---MySQL高级
  • 隆重介绍 Xget for Chrome:您的终极下载加速器
  • linux kernel struct regmap_config结构详解
  • 【Quest开发】快速添加可手指触摸按钮
  • 3 OneNET-调试器模拟上报数据
  • Visual Studio Code 的 settings.json 配置指南
  • HarmonyOS NEXT端云一体化开发初体验
  • 世俱杯直播数据源通过反汇编获取到