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

深度学习-正则化

在这里插入图片描述

文章目录

为什么需要正则化

这里引入一些概念

  1. 偏差:预测与实际值差的大,训练集,测试集都不准。
  2. 方差:受数据的扰动大,训练集数据差别大(方差大),导致相同模型,不同训练集,预测的结果不同。(训练集准,测试集不准)
  3. 过拟合:训练参数过多,而训练样本过少导致学习了无用特征,使预测集准确率低。
  4. 欠拟合:训练集,测试集准确率都低。(偏差大)

过拟合与欠拟合对比表

特性过拟合 (Overfitting)欠拟合 (Underfitting)
定义模型在训练集上表现很好,但在测试集上表现差模型在训练集和测试集上表现都差
训练误差
测试误差
模型复杂度通常过于复杂(模型参数过多)通常过于简单(模型参数过少)
学习能力学习能力过强,甚至记住了噪声学习能力不足,无法捕捉数据中的基本模式
数据量通常发生在数据量较少时可能发生在数据量不足或模型太简单时
偏差-方差分解高方差高偏差
解决方案1. 增加数据量
2. 正则化(L1/L2)
3. 减少模型复杂度
4. Dropout
5. 早停(Early Stopping)
1. 增加模型复杂度
2. 增加特征数量
3. 减少正则化
4. 延长训练时间
5. 使用更复杂的模型
典型表现图训练误差曲线远低于测试误差曲线训练误差和测试误差都较高且接近
决策边界非常复杂,可能包含许多不必要的细节过于简单,无法捕捉数据中的结构

正则化—为了防止过拟合

逻辑回归的L1与L2正则化

逻辑回归的参数W数量根据特征的数量而定(一个神经元*特征数),那么正则化如下

L2正则化 w2w^2w2

逻辑回归的损失函数中增加L2正则化

J(w,b)=1m∑i=1mL(y^(i),y(i))+λ2m∥w∥2J(w, b)=\frac{1}{m} \sum_{i=1}^{m} L\left(\hat{y}^{(i)}, y^{(i)}\right)+\frac{\lambda}{2 m}\|w\|^{2}J(w,b)=m1i=1mL(y^(i),y(i))+2mλw2

其中的L2范数可以理解:λ2m∥w∥22=λ2m∑j=1nxjwj2=λ2mwTw\frac{\lambda}{2 m}\|w\|_{2}^{2}=\frac{\lambda}{2 m} \sum_{j=1}^{n} \frac{x_{j}}{w_{j}^{2}} =\frac{\lambda}{2 m} w^{T} w2mλw22=2mλj=1nwj2xj=2mλwTw

解释:所有w参数的平方和的结果

  • 1m∑i=1mL(y^(i),y(i))\frac{1}{m} \sum_{i=1}^{m} L\left(\hat{y}^{(i)}, y^{(i)}\right)m1i=1mL(y^(i),y(i))是当前批次,所有样本损失率的平均值
  • L2范数=λ2m∥w∥2\frac{\lambda}{2 m}\|w\|^{2}2mλw2=λ2mwTw\frac{\lambda}{2 m} w^{T} w2mλwTwwww是权重矩阵(由神经元与特征数目决定)
  • λ\lambdaλ是超参数

L1正则化 www

逻辑回归的损失函数中增加L1正则化

J(w,b)=1m∑i=1mL(y^(i),y(i))+λ2m∥w∥1J(w, b)=\frac{1}{m} \sum_{i=1}^{m} L\left(\hat{y}^{(i)}, y^{(i)}\right)+\frac{\lambda}{2 m}\|w\|_{1}J(w,b)=m1i=1mL(y^(i),y(i))+2mλw1

其中L2范数可以理解为:λ2m∥w∥1=λ2m∑j=1nxj∣wj∣\frac{\lambda}{2 m}\|w\|_{1}=\frac{\lambda}{2 m} \sum_{j=1}^{n} \frac{x_{j}}{\left|w_{j}\right|}2mλw1=2mλj=1nwjxj

梯度下降

•接下来我们通过方向传播来理解这个其中的L2,对于损失函数我们要反向传播求参数梯度:

(1) dW=∂L∂w+λmWdW=\frac{\partial L}{\partial w}+\frac{\lambda}{m} WdW=wL+mλW

前面的默认损失函数的梯度计算结果默认为backprop,那么更新的参数就为

(2) W:=W−αdWW:=W-\alpha dWW:=WαdW 那么我们将第一个公式带入第二个得到

W:=W−α(∂L∂w+λmW)W:=W-\alpha(\frac{\partial L}{\partial w}+\frac{\lambda}{m} W) W:=Wα(wL+mλW)

=W−αλmW−α∗∂L∂w=W-\frac{\alpha \lambda}{m} W-\alpha * \frac{\partial L}{\partial w} =WmαλWαwL

所以每次更新的时候都会让W(1−αλm)W(1-\frac{\alpha \lambda}{m})W(1mαλ),使权重www随迭代次数逐渐减小,所以我们通常称L2范数为权重衰减。

  • 正则化如何防止过拟合的
    在这里插入图片描述
    红线:合适的拟合。
    绿线:过拟合
    蓝线:欠拟合

如上图所示,我们发现,当模型发生过拟合时,模型相对于其他模型,曲线函数更加的弯曲,这说明在局部弯曲的部分,切线斜率特别大,(即模型导数的绝对值特别大,这是由于www从一个较大的值变化到另一个大的值,是www的系数过大导致的),对于整个模型来说,我们可以理解为所有的参数的绝对值之和特别大。因此,如果我们有办法使得这些参数的值,比较稠密均匀地集中在零附近,就能有效地抑制过拟合。于是,便引入了范数。从而使www的系数减小,从而减小拟合的波动,防止过拟合的发生

参考:正则化如何防止过拟合的

注:其中,入为正则化因子,是超参数。由于L1正则化最后得到 w向量中将存在大量的 0,使模型变得稀疏化,因此 L2 正则化更加常用。

http://www.dtcms.com/a/271972.html

相关文章:

  • 【SkyWalking】服务端部署与微服务无侵入接入实战指南
  • 【spring boot】三种日志系统对比:ELK、Loki+Grafana、Docker API
  • 【世纪龙科技】汽车信息化综合实训考核平台(机电方向)-学测
  • 零基础入门物联网-远程门禁开关:云平台创建
  • selenium中xpath的用法大全
  • anchor 智能合约案例5 之 vesting
  • 汽车加气站操作工历年考试真题及答案
  • CSS表达式——下篇【selenium】
  • WebSocket实战:实现实时聊天应用 - 双向通信技术详解
  • 【C++】——类和对象(上)
  • C 语言基础:操作符、进制与数据表示通俗讲解
  • AI【应用 03】Windows环境部署 TTS CosyVoice2.0 详细流程记录(Matcha-TTS、spk2info.pt等文件分享)
  • Qt中处理多个同类型对象共享槽函数应用
  • git多分支管理
  • 缺陷的生命周期(Bug Life Cycle)是什么?
  • Java 正则表达式白皮书:语法详解、工程实践与常用表达式库
  • WWDC 25 风云再起:SwiftUI 7 Charts 心法从 2D 到 3D 的华丽蜕变
  • 【HarmonyOS Next之旅】DevEco Studio使用指南(四十二) -> 动态修改编译配置
  • 全面解析 wxPython:构建原生桌面应用的 Python GUI 框架
  • 【计算机基础理论知识】C++篇(二)
  • [python] 数据拷贝浪费内存,原地修改暗藏风险:如何平衡内存使用效率与数据完整性?
  • 【SpringBoot实战系列】SpringBoot3.X 整合 MinIO 存储原生方案
  • C++类对象多态底层原理及扩展问题
  • Python-GEE遥感云大数据分析与可视化(如何建立基于云计算的森林监测预警系统)
  • Yolov模型参数对比
  • Docker的/var/lib/docker/目录占用100%的处理方法
  • 变压器初级(原边)和次级(副边)的感应电动势、电压方向如何标注?
  • 安卓应用启动崩溃的问题排查记录
  • 《Effective Python》第十三章 测试与调试——使用 Mock 测试具有复杂依赖的代码
  • 【笔记分享】集合的基数、群、环、域