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

【学习笔记】深度学习-过拟合解决方案

过拟合概念

在这里插入图片描述
欠拟合:一般是在训练、验证、测试集上表现都不佳。
过拟合:在训练集上表现不错,但在验证集和测试集上表现不佳,主要是因为学习到了训练数据的噪声和细节(样本之间的方差大,参数的方差也大)。

过拟合常伴随着大权重
以一个最简单的神经元为例:
在这里插入图片描述
要让输出 𝑎对输入 𝑥 的微小变化非常敏感(即对每一个训练样本都严格拟合),就要让 𝑧 对 𝑥的变化幅度更大;实现这种敏感的方式就是让 权重 𝑤𝑖足够大。

方法一 L2正则化

公式

在原损失函数中加入权重参数的平方和作为惩罚项:
在这里插入图片描述
其中:
Loss(𝑤,𝑏):原始损失(如交叉熵、MSE 等)
𝜆/2𝑚∑𝑤𝑖²:L2 正则项
𝜆:正则化强度(超参数)
𝑚:样本数

原理

在反向传播时,计算对某个wi的梯度,得到dw为:
在这里插入图片描述

如果wi特别大,则其梯度也会特别大,更新参数时,根据公式
wi = wi - αwi,wi减小的也会更多,将参数拉向原点
故L2正则化可以防止某个参数过大,即某个特征的权重过大
相当于给模型加了“平滑性”约束,使得模型不容易学习噪声。

方法二 Dropout(丢弃神经元)

原理

在训练时,以概率 𝑝随机“屏蔽”(设为 0)神经元的激活值,使网络结构每次都不一样
在这里插入图片描述

作用

每次训练只依赖部分神经元,强迫网络不能过度依赖某些路径;

实现方式

假设有0.8的概率保留结点,即keep_prob = 0.8

D = np.random.rand(A.shape[0], A.shape[1]) < keep_prob ## 生成掩码
"""
np.random.rand(...)会生成一个和激活矩阵 A 同样形状的矩阵,里面的每个值是从 [0, 1) 之间均匀分布中随机抽取的。
< keep_prob —— 阈值过滤,会返回一个布尔矩阵,值小于 0.8 的位置变为 True,大于等于 0.8 的变为 False
如 array([[True, True, False],[True, False, True]])
"""
A = A * D ## 被丢弃的位置为 False,对应 A 值乘 0
A = A / keep_prob ## 保证剩下的期望值不变

效果

强化模型的鲁棒性和泛化能力
每次丢弃神经元等于训练了一个不同的子模型。训练过程中,模型好比在“投票平均”多个结构。

方法三 扩充数据

当数据和预算都足够时,可以采集更多的训练集,这也是最本质的解决方案
当数据和预算不足时,可以通过图像旋转、裁剪、翻转,人为扩充训练集,防止模型记住训练图像

方法四 早停

验证集损失停止下降则终止训练,防止训练太久对训练集过拟合

相关文章:

  • 基于Halcon深度学习之分类
  • 【bpmn.js 使用总结】最简单实现Palette
  • 在Mathematica中实现Newton-Raphson迭代
  • 从零打造AI面试系统全栈开发
  • 生成JavaDoc文档
  • [Java 基础]运算符,将盒子套起来
  • Qiskit:量子计算模拟器
  • 01-python爬虫-第一个爬虫程序
  • VueUse:组合式API实用函数全集
  • Spring Boot 自动配置原理:从入门到精通
  • 视频监控管理平台EasyCVR安防小知识:监控摄像头异响问题排查与处理
  • 嵌入式学习 D31:系统编程--Framebuf帧缓冲
  • 使用 Version Catalogs统一配置版本 (Gradle 7.0+ 特性)
  • Windows 优化及推荐工具
  • llama.cpp:纯 C/C++ 实现的大语言模型推理引擎详解一
  • Kerberos面试内容整理-在 Linux/Windows 中的 Kerberos 实践
  • 2025 Java面试大全技术文章(面试题2)
  • 文生图模型的dev、fast、full版本的区别
  • 移动端H5输入框调起手机软键盘,导致底部固定定位被顶起解决方法
  • 计算机基础知识(第三篇)
  • 太原网站公司/找谁做百度关键词排名
  • 国内网站建设/信息流优化师简历模板
  • 深圳设计网站培训班/网站快速排名服务
  • 免费做推广的网站/厦门搜索引擎优化
  • 一个网站多个域名 seo/搜索引擎网站优化和推广方案
  • 网络销售网站外包/百度信息流怎么做效果好