当前位置: 首页 > 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.dtcms.com/a/275032.html

相关文章:

  • Operation Blackout 2025 Phantom Check hayabusa+ControlSet001+VirtualBox
  • 【笔记】训练步骤代码解析
  • docker安装Consul笔记
  • Java(7.11 设计模式学习)
  • PLC框架-1.3- 汇川PN伺服(3号报文)
  • 多种人脸处理方案——人脸裁剪
  • Webview 中可用的 VS Code 方法
  • G1 垃圾回收算法详解
  • 【TCP/IP】16. 简单网络管理协议
  • 天晟科技携手万表平台,共同推动RWA项目发展
  • 从「小公司人事」到「HRBP」:选对工具,比转岗更能解决成长焦虑
  • Java大厂面试故事:谢飞机的互联网音视频场景技术面试全纪录(Spring Boot、MyBatis、Kafka、Redis、AI等)
  • kubernetes单机部署踩坑笔记
  • DIDCTF-蓝帽杯
  • 谷歌云代理商:谷歌云TPU/GPU如何加速您的AI模型训练和推理
  • 【数据结构与算法】206.反转链表(LeetCode)
  • C++:非类型模板参数,模板特化以及模板的分离编译
  • 实现将文本数据(input_text)转换为input_embeddings的操作
  • 《从依赖纠缠到接口协作:ASP.NET Core注入式开发指南》
  • Vue 表单开发优化实践:如何优雅地合并 `data()` 与 `resetForm()` 中的重复对象
  • Sigma-Aldrich 细胞培养实验方案 | 通过Hoechst DNA染色检测细胞的支原体污染
  • 拔高原理篇
  • 奇哥面试记:SpringBoot整合RabbitMQ与高级特性,一不小心吊打面试官
  • java底层的native和沙箱安全机制
  • Lecture #19 : Multi-Version Concurrency Control
  • 深入理解JVM的垃圾收集(GC)机制
  • Next知识框架、SSR、SSG和ISR知识框架梳理
  • c++——运算符的重载
  • 鸿蒙开发之ArkTS常量与变量的命名规则
  • 面向对象编程