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

L1正则化 VS L2正则化

一、什么是正则化?L1正则化和L2正则化又是什么?

神经网络的本质就是线性变换套上一个激活函数不断组合而成的一个非常复杂的非线性函数,并且巧妙的通过梯度下降。一点点计算出神经网络中的一组合适的参数。这样看起来只要神经网络足够大,是不是什么问题都能解决?

看下面一组图,你认为是左边好还是右边好?纯从预测值与真实值误差来看,也就是损失值最小化。这个目标来看的话,显然右边这个更好,但直觉似乎告诉我们,右边这个好像有点好的太过了。结果可能是只适合训练数据,对新数据的预测,反而不如左边的准。

这种在训练数据上表现的很完美,但是在没见过的数据上表现的很糟糕的现象,就叫做过拟合(Over Fitting)。而在没见过的数据上的表现能力,我们叫它泛化能力。为什么会过拟合呢?看看刚刚这个图其实就是训练数据本身是个很简单的规律,但模型太复杂了,把那些噪声和随机波动也给学会了。

因此这个案例中,用一个非常复杂的神经网络模型来训练效果,甚至不如一个线性模型,这就告诉我们神经网络不是越大越好。简化模型复杂度有效果,与之相对的就是增加训练数据的量,数据量足够充足,原本复杂的模型也就相对变得简单了。但有的时候我们确实无法收集或者懒得收集更多的数据怎么办呢?那就在原有的数据中创造更多的数据,比如说在图像处理中,我们可以对图像进行。旋转、翻转、裁剪夹、噪声等操作,创造出更多新的训练样本,这就叫做数据增强。这样不仅仅能够产生更多的数据,还刚好训练了一个让模型不因输入的一点点小的变化,而对结果产生很大的波动,这就是增强了模型的鲁棒性

刚刚是从数据和模型本身入手来防止过拟合,有没有可能从训练过程入手阻止过拟合的发生?其实训练过程就是不断调整各种参数的过程,只要不让参数继续过分的向着过拟合的方向发展就可以了。

回想一下参数的训练过程:通过让参数往让损失函数变小的方向不断调整,也就是梯度下降。我们可以在损失函数中把参数本身的值加上去,这样在参数往大的调整时,如果让损失函数减小的没有那么多,导致新的损失函数反而是变大的。那么此时调整就是不合适的,因此一定程度上就抑制了参数的野蛮增长。

除了可以用参数的绝对值之和之外,我们还可以用参数的平方和。这样参数大的时候,抑制的效果就更强了。我们把这一项叫做惩罚项,把通过这种损失函数中添加权重惩罚项,抑制其野蛮增长的方法叫做正则化

上面这个参数绝对值相加的叫L1正则化,这个平方项相加的叫L2正则化(因为绝对值之和叫做L1范数,而平方和的平方根叫做L2范数,这是向量空间中范数的概念),然后和之前梯度下降时增加学习率控制下降粒度一样,我们也增加一个参数来控制惩罚项的力度,我们叫它正则化系数。而这些控制参数的参数,我们以后统称为超参数。总之这个公式就只是为了抑制参数的野蛮增长。

正则化的作用:
1.防止过拟合:限制模型对训练数据的过度拟合,尤其当数据量少或模型复杂时。
2.改善泛化能力:使模型在测试数据或真实场景中表现更稳定。
3.特征选择(L1 正则化):自动筛选对预测最重要的特征。
超参数 λ 的作用:
λ(lambda)是正则化项的系数,控制惩罚力度:  
λ 过大:模型可能欠拟合(权重被过度压制)。  
λ 过小:正则化效果微弱,可能过拟合。  

通常通过交叉验证(Cross-Validation)选择最优的 λ。
示例场景:
1.线性回归:使用 L2 正则化(Ridge)或 L1 正则化(Lasso)。  
2.深度学习:常用 Dropout 或 L2 正则化。  
3.高维数据(如基因数据):L1 或 Elastic Net 更有效。

正则化是机器学习模型调优的重要工具之一,合理使用能显著提升模型性能。

为什么正则化可以防止过拟合?

左一:欠拟合;中间:正常拟合;右侧:过拟合

 线性回归拟合图

让L2范数的正则项||W||2最小,可以使得W的每个元素都很小,都接近于0。(L1范数让W等于0),而越小的参数说明模型越简单,越简单的模型越不容易产生过拟合的现象。(结合上图线性回归拟合图可知,限制了某些参数很小,其实也就限制了多项式的某些分量的影响很小,这也就相当于减少了变量的个数)

另外为了防止过拟合,提高泛化能力,在模型训练过程中的常用方法还有:

Dropout(神经网络专用):在训练过程中随机“丢弃”(临时禁用)神经网络中的部分神经元,迫使网络不依赖单一神经元,增强鲁棒性。

早停策略: 在训练过程中监控验证集误差,当误差不再下降时提前停止训练,防止过拟合。

二、奥卡姆剃刀准则

正则化的这种添加权重惩罚项的思想就是奥卡姆剃刀准则

机器学习算法在学习过程中必定需要某种类型的偏好,这里要介绍一个非常重要的概念,称为inductive bias,即归纳偏好(偏好及模型权重)。该词直译为“偏好”,表达的是对某一事物有特别的喜好。考虑一个简单情况,只有两种可能,一种是a,一种是b。对于具体的学习算法,当a和b都能完美地解释训练数据时,算法必须做出选择。

由于不同的学习算法在面临这种情况时的选择不同,这导致了算法之间的差异。虽然各种学习算法在形式上可能差异很大,如决策树、神经网络、支持向量机等,但本质上都需要做出某种选择,即相信哪种模型更好或哪种假设更合理

通常采用的最基本准则叫奥卡姆剃刀准则,这一准则在自然科学和工程学中都是最基本的研究方法论。其基本想法是“若非必要,勿增实体”。简单来说,当我们发现多个假说或模型都能完美解释观察时,我们选择最简单的。在物理学和化学中,当多种理论能解释实验现象时,我们认为最简单的就是好的。在机器学习中,训练样本可视为现实世界反映出来的现象。如果有多个模型都能很好地解释这一现象,我们选择最简单的模型。例如,在当前问题中,我们很可能选择a这条更平滑、更简单的曲线。因为写出其函数方程式时阶数可能更低,所以我们倾向于选择它。这一思想在机器学习中非常重要。

许多算法在取舍时,通常偏好更平滑、变化不极端的结果。但如果事情这么简单,我们就无需过多追究。然而,需要注意的是,最简单的一个并不总是那么明显。事情本身并不简单。例如,考虑一个曲线方程,y=ax^2+bx+c这是一个曲线方程。另外,y=ax^3+c,这也是一个曲线方程,一个是二阶,另一个是三阶,可以说二阶的更简单;但也可以从另一个角度看,前一个方程里只有a和c两个系数,可能更简单。到底哪一个更简单呢?所以,这本质上不是一个简单的问题。

在机器学习里,特别是涉及不同模型时,模型背后的假设什么是更简单的不一样,这并不容易判断。所以我们虽然有这样一个简单的准则,但大家要注意,在实际应用中,情况变化太多。这就导致机器学习里有那么多算法,这些算法采用不同的假设和偏好。大家经常会问,什么样的算法比较好。最关键的一点是,学习算法的归纳偏好是否和问题本身匹配,实际上决定了这个算法在这个任务上的表现。如果搞机器学习时间长了,不会说哪个算法好,而会说真正起作用的不是算法,而是背后的假设。你的商品是什么?实际上是说你的偏好是什么?这个偏好是否和当前问题更合适?比方说,当我们要考虑一个故障诊断问题时,如果这个故障很长时间都不太可能出现,那么两个方法都可能选用。如果有一个方法非常频繁地发生变化,那么这时我们可能应该选用另一个。实际上,你的偏好和当前问题更匹配,我们必须要对问题有一个清楚的认识。

三、L1正则化与L2正则化对比

正则化是结构风险最小化策略的实现,在经验风险上加一个正则项或惩罚项,正则项一共有两种L1正则化和L2正则化,或者L1范数和L2范数。L1通过绝对值约束产生稀疏参数,L2通过平方约束限制参数幅度。

对于线性回归模型来讲,使用L1正则化的模型叫做Lasso回归;使用L2正则化的模型叫做Ridge回归(岭回归)。正则化项一般是模型复杂度的单调递增的函数,模型越复杂,正则化值越大

1. L1 正则化(Lasso回归)

在损失函数中添加模型权重(参数)的L1 范数(绝对值之和)作为惩罚项。L1范数是指向量中各个元素绝对值之和。

   特点:  
   会倾向于产生稀疏权重矩阵(即部分权重变为0),适用于特征选择(自动筛选重要特征)。

 2. L2正则化(Ridge回归)

   在损失函数中添加模型权重的 L2 范数(平方和)作为惩罚项。L2范数是指向量各元素的平方和然后再求平方根。

   特点:  
   使权重值均匀缩小,避免某些特征权重过大,但不会完全消除特征。

从图形维度对比

  • L1正则化: 几何上,L1正则化对应于“菱形”的等高线。由于“菱形”的形状,梯度下降容易在轴上进行交集,导致一些参数为零——这解释了为何L1正则化倾向于产生稀疏的解。
  • L2正则化: 几何上,L2正则化对应于“圆形”的等高线。圆形的性质使得梯度下降通常不会精确地交到坐标轴上,因此很少有参数会被压缩为零。

 从概率学维度对比

L1正则化: 从贝叶斯的角度来看,L1正则化等价于假设参数服从拉普拉斯分布

  • (双指数分布),这种分布先验对参数的零值具有较高的概率密度,因此倾向于产生稀疏解。
  • L2正则化: 从贝叶斯的角度来看,L2正则化等价于假设参数服从高斯分布
  • (正态分布),高斯分布的形状导致参数集中于零附近但多为非零值。

每种正则化技术都有其优缺点,具体使用时需要根据数据集的特性和具体问题进行选择。L1正则化适用于特征选择,尤其是在高维数据集上,而L2正则化则适用于需要控制模型复杂度但不一定需要稀疏解的场景。

四、正则化方法只能用于回归任务吗?

答案是No,虽然咱们上面提到的正则化方法几乎都是回归任务的例子。但是正则化方法‌不仅可用于回归任务,还可用于分类任务‌。

在分类任务中,正则化通常通过调整损失函数实现。例如,L1正则化(L1-norm)和L2正则化(L2-norm)可直接作为损失函数的正则项,帮助模型避免过拟合,提升泛化能力。此外,Dropout等正则化技术也可用于神经网络分类模型,减少对特定特征的依赖。 ‌

回归和分类的核心区别在于是否设置阈值进行类别划分。若将阈值视为一种广义的"分类规则",两者在模型训练目标上具有相似性——均通过正则化抑制过拟合。在具体应用中,分类模型更注重特征选择与决策边界的稳定性,而回归模型则侧重预测值的平滑性。 ‌

【选择建议】

  • L2正则化‌:应用最广泛,通过参数平滑抑制过拟合,适合大多数分类场景。 
  • L1正则化‌:可促使参数稀疏,适合特征选择任务,但在分类场景中效果通常不如L2正则化。 ‌
  • Dropout‌:适用于深度学习分类模型,通过随机丢弃神经元提升泛化能力。
http://www.dtcms.com/a/276708.html

相关文章:

  • 全连接网络 和卷积神经网络
  • 《Java Web程序设计》实验报告一 Java Web环境配置
  • Cypress与多语言后端集成指南
  • C++——类和对象的相关知识点
  • 复习笔记 31
  • RHCSA(2)
  • STM32--USART串口通信的应用(第一节串口通信的概念)
  • docker网络与数据持久化
  • SolidWorks并发不足频出,浮动许可还能怎么优化?
  • Python 中 enumerate(s) 和 range() 的对比
  • 博途多重背景、参数实例--(二)
  • 分布式系统高可用性设计 - 缓存策略与数据同步机制
  • 飞算JavaAI:重新定义Java开发效率的智能引擎
  • Cell2location maps fine-grained cell types in spatial transcriptomics 文章解析
  • 基于Python Keras 实践大全
  • STP生成树协议
  • 堆内存的详细结构以及java中内存溢出和排查方式
  • Jinja2模板引擎技术在dify中的应用方法
  • Python基于Django的WEB服务统一身份认证协议的设计与实现【附源码、文档说明】
  • 3 c++提高——STL常用容器(一)
  • 【理念●体系】路径治理篇:打造可控、可迁移、可复现的 AI 开发路径结构
  • 【一起来学AI大模型】RAG系统组件:检索器(LangChain)
  • 深度学习-LeNet5-AlexNet
  • ZeroNews 版本升级预告!
  • 【PMP备考】敏捷专题 - 敏捷概述
  • CPU 与存储器连接方式的深入理解
  • Java使用Langchai4j接入AI大模型的简单使用(三)--输入文字生成图片
  • C++结构体数组应用
  • 我自建服务器部署了 Next.js 全栈项目
  • hot100 hot75 栈、队列题目思路