机器学习笔记——正则化

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本笔记介绍机器学习中常见的正则化方法。

在这里插入图片描述

文章目录

  • 正则化
      • L1 正则化(Lasso)
        • 原理
        • 使用场景
        • 优缺点
      • L2 正则化(Ridge)
        • 原理
        • 使用场景
        • 优缺点
      • Elastic Net 正则化
        • 定义
        • 公式
        • 优点
        • 缺点
        • 应用场景
      • Dropout
        • 原理
        • 使用场景
        • 优缺点
      • 早停法(Early Stopping)
        • 原理
        • 使用场景
        • 优缺点
      • Batch Normalization (BN)
        • 原理
        • 使用场景
        • 优点
        • 缺点
      • 权重衰减(Weight Decay)
        • 原理
        • 使用场景
        • 优点
        • 缺点
      • 剪枝(Pruning)
        • 原理
        • 应用场景
        • 优点
        • 缺点

正则化

L1 正则化(Lasso)

原理

L1正则化通过在损失函数中加入权重的绝对值和来约束模型复杂度。其目标函数为:
min ⁡ ( 1 2 m ∑ i = 1 m ( y i − y ^ i ) 2 + λ ∑ j = 1 n ∣ w j ∣ ) \min \left( \frac{1}{2m} \sum_{i = 1}^m (y_i - \hat{y}_i)^2 + \lambda \sum_{j = 1}^n |w_j| \right) min(2m1i=1m(yiy^i)2+λj=1nwj)

  • 其中,λ是正则化强度,( w_j )是第j个特征的权重。
使用场景
  • 特征选择:L1 正则化能够将部分不重要的特征权重缩减为 0,从而实现特征选择
  • 高维稀疏数据集:如基因数据分析,模型能够自动去除无关特征。
优缺点
  • 优点:生成稀疏解,易于解释,自动选择重要的特征。
  • 缺点:对特征高度相关的数据,随机选择特征,模型不稳定。

L2 正则化(Ridge)

原理

L2正则化通过在损失函数中加入权重的平方和来约束模型复杂度。其目标函数为:
min ⁡ ( 1 2 m ∑ i = 1 m ( y i − y ^ i ) 2 + λ ∑ j = 1 n w j 2 ) \min \left( \frac{1}{2m} \sum_{i = 1}^m (y_i - \hat{y}_i)^2 + \lambda \sum_{j = 1}^n w_j^2 \right) min(2m1i=1m(yiy^i)2+λj=1nwj2)

  • 其中,λ是正则化强度, w j w_j wj是第j个特征的权重。
使用场景
  • 多重共线性问题:在特征间存在多重共线性的情况下,L2 正则化能够减小模型方差,防止模型对数据的过拟合
  • 回归任务:如岭回归(Ridge Regression)中常用来提升模型鲁棒性
优缺点
  • 优点:防止模型过拟合,能有效处理特征多重共线性问题。
  • 缺点:不能进行特征选择,所有特征权重都被减小。

Elastic Net 正则化

定义

Elastic Net 是 L1 和 L2 正则化的结合,它同时引入了 L1 和 L2 正则化项,在获得稀疏解的同时,保持一定的平滑性。

公式

J ElasticNet ( θ ) = J ( θ ) + λ 1 ∑ i ∣ θ i ∣ + λ 2 ∑ i θ i 2 J_{\text{ElasticNet}}(\theta) = J(\theta) + \lambda_1 \sum_i |\theta_i| + \lambda_2 \sum_i \theta_i^2 JElasticNet(θ)=J(θ)+λ1iθi+λ2iθi2
其中, λ 1 \lambda_1 λ1 λ 2 \lambda_2 λ2控制L1和L2正则化的权重。

优点
  • 结合了 L1 和 L2 正则化的优点,既能够稀疏化模型,又不会完全忽略相关性特征。
  • 对高维数据和特征之间存在高度相关性的数据表现良好。
缺点
  • 相比于单独使用 L1 或 L2 正则化,它有更多的超参数需要调节。
应用场景
  • 常用于具有高维特征的数据集,特别是在需要稀疏化的同时,又不希望完全丢失特征之间相关性的信息。

Dropout

原理

Dropout 是一种用于深度神经网络的正则化方法。训练过程中,Dropout 随机将部分神经元的输出设置为 0防止神经元对特定特征的依赖,从而提升模型的泛化能力。类似集成学习,每次生成的都不一样。丢弃概率 (p),通常设置为 0.2 到 0.5

使用场景
  • 深度神经网络:在深度学习中广泛应用,如卷积神经网络(CNN)、循环神经网络(RNN)等。
  • 避免过拟合:尤其在模型复杂、训练数据较少的场景中,能够有效降低过拟合风险
优缺点
  • 优点:有效防止过拟合,提升模型鲁棒性。
  • 缺点:训练时间较长,推理过程中不适用。

早停法(Early Stopping)

原理

早停法是一种防止模型过拟合的策略。在训练过程中,监控验证集的误差变化,当验证集误差不再降低时,提前停止训练,防止模型过拟合到训练数据

使用场景
  • 深度学习:几乎适用于所有深度学习模型,在神经网络训练中常用,防止训练过度拟合。
  • 梯度下降优化:在任何基于梯度下降的优化过程中均可使用,如线性回归、逻辑回归等。
优缺点
  • 优点:简单有效,能够动态调节训练过程。
  • 缺点:需要合理设置停止条件,可能导致模型欠拟合。

Batch Normalization (BN)

虽然 Batch Normalization(BN)通常被认为是一种加速训练的技巧,但它也有正则化的效果。BN 通过对每一批次的输入进行归一化,使得模型训练更加稳定,防止过拟合。

原理

BN 通过将每个批次的激活值标准化为均值为 0,方差为 1,然后通过可学习的缩放和平移参数恢复特征分布。由于批次间的变化引入了一定的噪声,这对模型有一定的正则化作用。

使用场景
  • 广泛应用于卷积神经网络(CNN)和全连接网络(FCN)中。
优点
  • 提升训练速度,并有一定的正则化效果。
  • 适合卷积神经网络和全连接神经网络,能有效减少过拟合。
缺点
  • 在小批量训练时效果不稳定。
  • 引入了额外的计算开销。

权重衰减(Weight Decay)

权重衰减是一种通过直接对权重进行衰减的正则化方法,它等价于 L2 正则化

原理

在每次权重更新时,加入一个权重衰减项,使得权重参数逐渐减小,从而防止权重变得过大,减少模型的复杂度
权重衰减直接在梯度更新中对权重施加一个额外的缩减项,而不需要在损失函数中添加正则化项。也就是说,权重衰减是通过直接操作梯度更新公式中的权重来实现的。

公式:
θ = θ − α ⋅ ∂ L data ∂ θ − α λ θ \theta = \theta - \alpha \cdot \frac{\partial L_{\text{data}}}{\partial \theta} - \alpha \lambda \theta θ=θαθLdataαλθ

  • 其中:
    • α是学习率。
    • λ是权重衰减系数。
    • θ是模型的权重。

λ 是正则化系数,控制惩罚项的强度。该惩罚项会在每次梯度更新时对权重施加一个减小的力度,从而限制权重的增长。

L2正则化和权重衰减目标一致、数学形式相似,但是并不是同一种手段:

  1. 实现方式
    • L2 正则化:在传统的 L2 正则化中,惩罚项是直接添加在损失函数中。因此,反向传播时会计算这个惩罚项的梯度,并将它加入到权重的更新中。优化器仅对 Loss求导。
    • 权重衰减:在权重衰减中,惩罚项不直接添加到损失函数中,而是在梯度更新时作为一个附加的“权重缩小”操作。在每次更新时,优化器会自动将权重按比例缩小。例如,对于SGD 优化器,权重更新公式变成:

w = w − α ⋅ ∂ L loss ∂ w − α ⋅ λ ⋅ w w = w - \alpha \cdot \frac{\partial L_{\text{loss}}}{\partial w} - \alpha \cdot \lambda \cdot w w=wαwLlossαλw

这里, α ⋅ λ ⋅ w \alpha \cdot \lambda \cdot w αλw是直接对权重施加的缩小因子,而不影响梯度方向。

  1. 优化器依赖
    • L2 正则化不依赖于特定的优化器。正则项直接通过损失函数梯度传播,适用于所有优化器。
    • 权重衰减:有些优化器(如 AdamW)在实现时将权重衰减项独立处理,而不会将其纳入损失的反向传播中。
使用场景
  • 与 SGD 等优化器配合使用效果较好,尤其适用于大型神经网络,可以防止权重过大导致的过拟合。对于 Adam 优化器,建议使用 AdamW 版本来获得更合适的权重衰减效果。
优点
  • 类似于 L2 正则化,简单易用,有效减少过拟合。
缺点
  • 与 L2 正则化非常相似,但在某些优化器(如 Adam)中,权重衰减的实现可能会与 L2 正则化略有不同。在这些情况下,直接使用 L2 正则化可能会更符合预期的效果。

剪枝(Pruning)

剪枝通常在模型训练完成后进行,作为一种后处理技术。例如决策树中的剪枝操作。

原理

剪枝通过删除神经网络中重要性较低的连接或神经元,减少模型规模,从而达到简化网络的目的。剪枝不仅可以减少计算量和存储需求,还能在一定程度上防止过拟合,使模型在推理时更加高效。

应用场景
  • 移动和嵌入式设备:剪枝特别适用于资源受限的设备(如手机、嵌入式系统、物联网设备)上,以减小模型尺寸和降低推理时间。
  • 深度学习模型加速:剪枝广泛用于加速深度神经网络的推理过程,特别是在需要实时处理的任务中,如自动驾驶、图像识别等。
  • 大规模模型压缩:在大规模模型(如大规模卷积神经网络、语言模型)中,剪枝可以显著减少计算量,使得模型更高效地运行。
优点
  • 减少模型复杂度:剪枝可以显著减少网络中的参数,降低计算和内存需求,使得模型更适合在资源有限的设备上(如移动设备、嵌入式系统)运行。
  • 提高模型的泛化能力:通过移除不重要的权重和神经元,减少模型对特定数据特征的过拟合,从而提高泛化能力。
  • 加速推理:剪枝后的模型由于参数减少,推理速度得到显著提升。
缺点
  • 需要额外的剪枝步骤
  • 可能影响模型性能:如果剪枝不当,可能会削弱模型的表现,模型的准确性可能会大幅下降。
  • 需要重新训练:剪枝后的模型有时需要重新微调或训练,以恢复模型性能。

以下是关于常见正则化方法的总结表格:

正则化方法原理使用场景优点缺点
L1 正则化 (Lasso)通过增加权重绝对值惩罚项,实现特征稀疏化,部分权重缩减为 0。高维稀疏数据集,特征选择任务。生成稀疏解,易于解释,自动选择重要的特征。对特征高度相关的数据,可能随机选择特征,导致模型不稳定。
L2 正则化 (Ridge)通过增加权重平方和惩罚项,减小权重大小,防止权重过大。多重共线性问题、回归任务,如岭回归。防止模型过拟合,处理特征多重共线性问题,模型更加鲁棒。无法进行特征选择,所有特征权重都被减小。
Elastic Net 正则化L1 和 L2 正则化结合,既稀疏化模型,又保留相关性特征。高维特征的数据集,稀疏化和相关性特征共存的场景。结合 L1 和 L2 优点,稀疏化与平滑化并存,适用于高维数据。增加了超参数调节的复杂性。
Dropout训练时随机丢弃部分神经元输出,防止神经元对特定特征的依赖,提升泛化能力。深度神经网络,CNN、RNN,适合复杂模型或数据较少的场景。有效防止过拟合,提升模型鲁棒性。训练时间较长,推理时不适用。
早停法 (Early Stopping)监控验证集误差,验证集误差不再下降时提前停止训练,防止过拟合。深度学习模型,梯度下降优化任务,如线性回归、逻辑回归。简单有效,动态调节训练过程,减少过拟合。需要合理设置停止条件,可能导致欠拟合。
Batch Normalization (BN)对每一批次的输入进行归一化,保持训练过程中的稳定性,并有一定正则化效果。卷积神经网络和全连接神经网络,适用于大批量训练。加速训练,减少过拟合,提升模型稳定性。小批量训练时效果不稳定,增加计算开销。
权重衰减 (Weight Decay)在每次权重更新时加入权重衰减项,防止权重过大,等价于 L2 正则化。大规模神经网络,常与 SGD、AdamW 等优化器配合使用。简单有效,减少过拟合,类似 L2 正则化。与 L2 略有不同,某些优化器中的效果不同。
剪枝 (Pruning)训练后移除神经网络中不重要的连接或神经元,减少模型规模,降低计算量,提升泛化能力。移动设备、嵌入式系统、大规模模型压缩,适合资源受限设备和加速任务。减少模型复杂度,提升推理速度,适合资源受限设备。需要额外剪枝步骤,可能影响模型性能,需要重新训练。

这个表格总结了常见的正则化方法,涵盖了其工作原理、使用场景、优点和缺点。根据具体任务和数据集,可以选择合适的正则化方法来提高模型的泛化能力和训练效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/65678.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详解MySQL在Windows上的安装

目录 查看电脑上是否安装了MySQL 下载安装MySQL 打开MySQL官网,找到DOWNLOADS 然后往下翻,找到MySQL Community(GPL) Downloads>> 然后找到MySQL Community Server 然后下载,选择No thanks,just start my download. 然后双击进行…

Ubuntu 网络图标直接没了

如果您的Ubuntu系统中有线网络图标消失了,可以按照以下步骤进行排查和修复: 1.重启NetworkManager服务 首先,尝试重启NetworkManager服务,这通常可以解决临时问题: bash sudo systemctl restart NetworkManager 2.检…

流架构的读书笔记(2)

流架构的读书笔记(2) 一、建模工具之一沃德利地图 推测技术的发展,交流和辩论思想的最有力的方法是沃德利地图 沃德利地图的制作步骤 1确定范围和用户需求 2确定满足用户需求所需的组件 3在一条范围从全新到被人们接受的演进轴上评估这些组成 部分的演…

电脑缺失libcurl.dll怎么解决?详解电脑libcurl.dll文件丢失问题

一、libcurl.dll文件丢失的原因 libcurl.dll是一个用于处理URL传输的库文件,广泛应用于各种基于网络的应用程序。当这个文件丢失时,可能会导致相关应用程序无法正常运行。以下是libcurl.dll文件丢失的一些常见原因: 软件安装或卸载不完整&a…

matlab读取二进制文件,要指定保存的数据类型

1、 a [1,2;3,4]; fileID fopen(hao.bin, wb); % 以二进制写入模式打开文件 fwrite(fileID, a, uint16); % 假设a中的数据可以表示为无符号32位整数 fclose(fileID); fileID fopen(hao.bin, rb); % 以二进制读取模式打开文件k fread(fileID); 自动识别16位还…

【Java 数据结构】移除链表元素

🔥博客主页🔥:【 坊钰_CSDN博客 】 欢迎各位点赞👍评论✍收藏⭐ 目录 1. 题目 2. 解析 3. 代码实现 4. 小结 题目出处:203. 移除链表元素 - 力扣(LeetCode) 1. 题目 给你一个链表的头节点 …

电子电气架构 --- 什么是自动驾驶技术中的域控制单元(DCU)?

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所谓鸡汤,要么蛊惑你认命,要么怂恿你拼命,但都是回避问题的根源,以现象替代逻辑,以情绪代替思考,把消极接受现实的懦弱,伪装成乐观面对不幸的…

CannotRetrieveUpdates alert in disconnected OCP 4 cluster解决

环境: Red Hat OpenShift Container Platform (RHOCP) 4 问题: Cluster Version Operator 不断发送警报,表示在受限网络/断开连接的 OCP 4 集群中无法接收更新。 在隔离的 OpenShift 4 集群中看到 CannotRetrieveUpdates 警报: …

【minicom】Linux串口调试工具 - minicom的安装及使用

目录 一、安装 二、配置 1.基本信息查询 2.配置minicom的参数 基本参数配置设备类型配置 3.Minicom基本操作 配置选项Filenames and pathsModem and dialing 三、使用minicom 1.命令行启动参数 2.参数使用举例 3.交互使用minicom 4.关于minicom脚本 四、常用配置总结: 五、参考…

jvm排查问题-实践追踪问题 与思路--堆内堆外内存泄漏排查方针

概述 排查问题的一般思路是:现象 ——> 直接原因 ——>根本原因。 从问题现象出发,可以分为 应用逻辑问题、资源使用问题、虚拟机异常: 应用逻辑可能导致报错增加、死锁、程序退出等;资源问题主要集中在CPU上升和内存上升(OOM Kill);虚拟机问题通常包括GC问题、进…

uniapp:微信小程序文本长按无法出现复制菜单

一、问题描述 在集成腾讯TUI后,为了能让聊天文本可以复制,对消息组件的样式进行修改,主要是移除下面的user-select属性限制: user-select: none;-webkit-user-select: none;-khtml-user-select: none;-moz-user-select: none;-ms…

深入浅出:从入门到精通大模型Prompt、SFT、RAG、Infer、Deploy、Agent

阅读原文 渐入佳境 我们都知道,通过编写一个提示词(prompt),我们可以引导大模型生成回答,从而开启愉快的人工智能对话,比如让模型介绍一下卡皮巴拉。上边简图描述了这个过程,我们拆成两部分 pr…

Oracle怎么写存储过程的定时任务执行语句

declarejob number; beginDBMS_JOB.SUBMIT(JOB > job, WHAT > PROC_PHD_DATA_HOURLY;, NEXT_DATE > to_date(2024-12-26 15:00:00, YYYY-MM-DD HH24:MI:SS), INTERVAL > SYSDATE 1/24);commit; end; / JOB > job (JOBID , 可自动生成) WHAT > PROC_PHD_DA…

最优化学习笔记(一)

1. 常见问题[0] L0范数优化问题:1.2.2 m i n ∣ ∣ x ∣ ∣ 0 , min \space ||x||_0, min ∣∣x∣∣0​, s . t . A x b s.t. \space Axb s.t. Axb 其中, A x b Axb Axb为一个欠定方程组(方程个数远小于未知数个数)。 问题1.…

机器学习作业 | 泰坦尼克号生存的预测任务

泰坦尼克号生存的预测任务 学校作业,我来水一水 环境:pycharmanaconda虚拟环境 文章目录 泰坦尼克号生存的预测任务0.环境搭建参考:1 目的与要求2 任务背景3 任务简介4 模型介绍1.决策树(Decision Tree)2.朴素贝叶斯…

leetcode 面试经典 150 题:矩阵置零

链接矩阵置零题序号73题型二维数组解题方法标记数组法难度中等熟练度✅✅✅✅ 题目 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1: 输入:matrix [[1,1,1],[1,0,1]…

git clone ssh 设置代理

Linux配置方法 编辑 ~/.ssh/config 文件 Host github.com Hostname github.com ProxyCommand nc -v -x 127.0.0.1:1080 %h %pwindows配置方法 编辑 C:\Users\当前用户名.ssh\config 文件 Host github.com Hostname github.com ProxyCommand connect -S 127.0.0.1:1080 %h %…

无法验证服务器身份是什么意思?

当你尝试访问某个网站或连接到服务器时,系统突然弹出一个提示,告诉你“无法验证服务器身份”?这到底是什么意思?在如今这个网络安全日益重要的时代,了解这种提示的含义以及背后的原因是非常必要的。今天,我们就来了解一下“无法…

小程序安全无忧:一键部署加固插件,守护数据防线

在移动互联网时代,小程序作为连接用户与服务的重要桥梁,其安全性显得尤为重要。为了确保小程序的数据安全、用户隐私以及防范各种安全风险,开发者需要借助安全加固插件来提升小程序的安全防护能力。 一、安全加固插件概述 安全加固插件是小…

【MySQL】搞懂mvcc、read view:MySQL事务原理深度剖析

前言:本节内容是事务里面最难的一部分, 就是理解mvcc快照读和read view。这两个部分需要了解隔离性里面的四种隔离级别。 博主之前讲过,但是担心友友们不了解, 所以这里开头进行了复习。 下面开始我们的学习吧! ps&…