人工智能基础概念5:使用L1范数惩罚进行Lasso回归(正则化)解决机器学习线性回归模型幻觉和过拟合的原理

一、引言

在老猿CSDN的博文《人工智能基础概念3:模型陷阱、过拟合、模型幻觉》中介绍了通过L1或L2正则化来限制模型的复杂度来解决过拟合的问题,老猿当时并不了解这背后的原理,这2天通过查阅资料终于明白了相关知识,在此一L1正则化来分享一下相关原理。
在这里插入图片描述

二、相关概念

2.1、范数

范数是数学中的一个概念,用于衡量向量的“大小”或者说是长度。在线性代数和相关的数学领域中,范数是定义在向量空间上的一个函数,它将每一个向量映射到非负实数,满足一定的性质,使得这个函数可以被视为该向量空间中的“长度”或“大小”。

范数的常见性质包括:

  • 非负性:对于任意向量x,其范数∥x∥总是大于或等于0,且当且仅当x是零向量时∥x∥=0;
  • 齐次性:对于任意标量α和任意向量x,有∥αx∥=∣α∣∥x∥;
  • 三角不等式:对于任意两个向量x和y,有∥x+y∥≤∥x∥+∥y∥。

以下是几种常见的范数:

  1. L1范数(也称为曼哈顿距离):对于向量x = (x1, x2, …, xn),其L1范数定义为 ∥ x ∥ 1 = ∑ i = 1 n ∣ x i ∣ \|x\|_1 = \sum_{i=1}^{n} |x_i| x1=i=1nxi
    这可以被视为从原点到向量x点的最短路径(曼哈顿距离);
  2. L2范数(欧几里得范数):对于向量x = (x1, x2, …, xn),其L2范数定义为 ∥ x ∥ 2 = x 1 2 + x 2 2 + . . . + x n 2 \|x\|_2 = \sqrt{x_1^2 + x_2^2 + ... + x_n^2} x2=x12+x22+...+xn2 这是最常见的范数类型,它表示向量在欧几里得空间中的“直线”距离
  3. 无穷范数:对于向量xx = (x1, x2, …, xn),其无穷范数定义为: ∥ x ∥ ∞ = max ⁡ i = 1 n ∣ x i ∣ \|x\|_{\infty} = \max_{i=1}^{n} |x_i| x=maxi=1nxi,这表示向量中的最大绝对值。

范数在多个领域都有广泛的应用,如在优化问题中作为目标函数或约束条件,以及在机器学习中作为正则化项来防止过拟合。通过使用不同的范数,可以引导算法关注不同的目标,比如L1范数倾向于产生稀疏解,而L2范数则倾向于平滑权重分布。

2.2、L1正则化

L1正则化,也称为Lasso正则化(Least Absolute Shrinkage and Selection Operator)、Lasso回归,是一种用于防止过拟合的线性回归方法。

Lasso回归是一种用于处理线性回归模型中变量选择和正则化的技术,它通过目标函数中添加一个与权重绝对值成正比的惩罚项的方法,具体是用一个与模型参数权重对应的L1范数的惩罚项的来实现这一目标。这种方法不仅可以应用于线性回归模型,还可以扩展到其他类型的模型中,尽管在其他模型中的应用可能不如在线性回归中那么直接或常见。

L1正则化的惩罚项是模型权重的绝对值之和。具体来说,如果有一个线性模型,其损失函数为L,那么L1正则化的损失函数可以表示为:

L L1 = L + λ ∑ i = 1 n ∣ w i ∣ L_{\text{L1}} = L + \lambda \sum_{i=1}^{n} |w_i| LL1=L+λi=1nwi

其中,wi是模型的权重,即线性模型L中各个xi的系数参数,λ 是正则化参数,它控制着惩罚项的强度。较大的λ值会导致权重的压缩,从而可能产生稀疏权重,即许多权重会变为零。

2.3、最小二乘回归

最小二乘回归(Least Squares Regression)是一种统计学方法,用于估计自变量(解释变量)和因变量(响应变量)之间的关系。该方法的核心思想是通过最小化误差的平方和来寻找数据的最佳函数匹配。
该方法假设模型的自变量xi和因变量y之间是线性关系,即 y = β 0 + β 1 x 1 + β 2 x 2 + . . . + β n x n y=β0+β_1x_1+β_2x_2+...+β_nx_n y=β0+β1x1+β2x2+...+βnxn
,其中 x1, x2, …, xn是自变量,而 β1,β2,…,βn是与每个自变量相对应的系数。通过计算每个数据点的实际观测值和模型预测值之间的差异(残差,即 y i − y i ^ yi-\hat{yi} yiyi^),然后计算这些残差的平方和( Σ ( y i − y i ^ ) 2 Σ(yi-\hat{yi})² Σ(yiyi^)2),要求参数β1,β2,…,βn使得残差平方和最小。(请参考老猿在CSDN的博文《人工智能基础概念4:似然函数、最大似然估计案例详解》的相关介绍)

三、L1正则化解决模型幻觉和过拟合的原理分享

3.1、L1正则化解决模型幻觉的过程分析

在线性模型中引入L1正则化后,模型的回归优化过程可以通过以下几个步骤来解释:

  1. 初始化权重:优化算法首先会初始化权重向量w的值,这些值可以是随机的或者基于某种启发式方法得到的
  2. 计算梯度:在每次迭代中,算法会计算目标函数关于权重向量的梯度。目标函数包括损失函数和L1正则化项,对于L1正则化项,梯度是权重向量 \mathbf{w}w 的元素-wise绝对值
  3. 更新权重:根据计算出的梯度,算法会更新权重向量的值。在标准的梯度下降中,权重的更新公式为:
    w new = w old − η ∇ L ( w ) \mathbf{w}_{\text{new}} = \mathbf{w}_{\text{old}} - \eta \nabla \mathcal{L}(\mathbf{w}) wnew=woldηL(w)
    其中,η 是学习率,∇L(w) 是目标函数关于权重向量的梯度。
  4. 应用L1正则化:在L1正则化的影响下,权重更新的过程中会考虑到正则化项。当 λ 增加时,正则化项的影响变得更大,导致更新后的权重更倾向于接近零
  5. 检查权重:在更新权重后,算法会检查每个权重的新值。如果一个权重更新后非常接近零(例如,小于某个阈值),算法可能会决定将其设置为精确的零。这样做的原因是,保留一个非常小的非零权重对模型的贡献微乎其微,而且还会因为L1正则化项而带来额外的惩罚
  6. 重复迭代:这个过程在多次迭代中重复进行,直到满足停止条件(例如,梯度接近零,损失函数不再显著改善,或者达到预设的迭代次数)

在这里插入图片描述

上述过程中:

  1. 通过调整惩罚参数(通常表示为λ)来影响模型的输出值。当λ的值较小时,惩罚项的作用较弱,模型更接近于普通的最小二乘回归。随着λ的增大,惩罚项的作用对模型影响越大,为了抵消λ的影响,就会使得进行回归时会对模型的权重系数各个值wi往下调整,即L1正则化使得每个权重的L1范数项(即权重的绝对值)都会受到惩罚;
  2. 权重的惩罚与其绝对值成正比,这意味着,即使是一个很小的权重,只要它不为零,也会受到惩罚。随着正则化参数 λ 的增加,这个惩罚变得更加严厉(即权重各系数的绝对值缩小更厉害);
  3. 在某个点上,优化算法可能会发现小于指定阈值的权重,此时优化算法会将该权重强制设置为0,因为这样可以减少整体的正则化惩罚,而对损失函数的影响不大。这就是“较小的权重会受到更大的影响”。

通过这种方式,优化算法在每次迭代中都会评估权重的更新,并在必要时将它们设置为零,在正则化的影响下,较小的权重更容易被压缩到零。这个过程是自动的,由算法的迭代更新规则和L1正则化项的惩罚性质共同决定的。最终,这导致了一些权重变为零,从而实现了模型的稀疏性和特征选择,从而简化模型。

L2正则化的原理和过程与L1实现方法类似,只是L1正则化的惩罚项是模型权重的绝对值(范数)之和,即 ∥ w ∥ 1 = ∑ i = 1 n ∣ w i ∣ \|w\|_1 = \sum_{i=1}^{n} |w_i| w1=i=1nwi,L2正则化的惩罚项是模型权重的平方和,即 ∥ w ∥ 2 = ∑ i = 1 n w i 2 \|w\|_2 = \sum_{i=1}^{n} w_i^2 w2=i=1nwi2

L2正则化不会将权重压缩至零,而是倾向于均匀地缩减所有权重的大小,这意味着它不具备特征选择的能力,但具有其他优点,在此就不展开介绍。

3.2、L1正则化解决模型幻觉和过拟合的过程举例

假设有一个线性回归模型,其目标函数的损失函数为均方误差(MSE):
L ( w ) = 1 n ∑ i = 1 n ( y i − ( w ⋅ x i ) ) 2 L(\mathbf{w}) = \frac{1}{n} \sum_{i=1}^{n} (y_i - (\mathbf{w} \cdot \mathbf{x}_i))^2 L(w)=n1i=1n(yi(wxi))2
其中,yi是观测值,Xi是特征向量,W是权重向量。

对上述模型引入L1正则化项,优化问题变为: min ⁡ w L ( w ) + λ ∥ w ∥ 1 \min_{\mathbf{w}} L(\mathbf{w}) + \lambda \|\mathbf{w}\|_1 minwL(w)+λw1
其中, ∣ ∣ W ∣ ∣ 1 = ∑ j = 1 m ∣ w j ∣ ||W||_1 = \sum_{j=1}^{m} |w_j| ∣∣W1=j=1mwj是权重向量W的L1范数,λ 是正则化参数,控制正则化的强度。

假设权重向量 w 有两个权重 w1、w2,初始时 w1 = 0.1,w2 = 0.01。在没有正则化的情况下,这两个权重对模型的贡献可能相似。但当引入L1正则化项时,情况会发生变化。

由于L1正则化是与权重的绝对值成正比的,所以 w2的惩罚项λ×0.01 会比 w1的惩罚项 λ×0.1 小。然而,随着λ 的增加,两个权重都会受到更大的惩罚,比如分别变为0.005和0.05。

在某个点上,优化算法可能会发现 w2低于指定阈值(如0.00001),此时优化算法会将w2设置为零,因为这样可以减少整体的正则化惩罚,而对损失函数的影响不大。

因此,即使 w2原本对模型有一定的贡献,它也可能因为L1正则化的惩罚而变为零。这就是“较小的权重会受到更大的影响”,因为在正则化的影响下,它们更容易被压缩到零,从而实现特征的选择和权重的稀疏性。

3.3、为什么压缩模型参数权重会解决线性回归模型的幻觉和过拟合

在在老猿CSDN的博文《人工智能基础概念3:模型陷阱、过拟合、模型幻觉》中介绍了过拟合和模型幻觉的概念和关系,过拟合是模型幻觉的一种表现,而模型参数过多导致模型过于复杂是导致过拟合和模型幻觉的主要原因,因此通过压缩模型中的权重参数就会简化模型,从而在一定程度上解决模型幻觉的问题。

四、小结

L1正则化通过给线性模型增加一个与权重参数的L1范数作为惩罚,并使得目标函数变为原线性模型加上λ倍惩罚,通过调节λ的值影响模型权重参数的值,最终压缩部分权重参数的值为0来减少部分特征(自变量)对模型的影响。

虽然L1正则化最初是为线性模型设计的,但其核心思想——通过正则化来选择重要的特征并减少模型复杂度——是可以应用于其他模型的。在实践中,这通常需要对L1正则化的原理进行适当的调整和扩展,以适应不同模型的特点和需求。

更多人工智能基础知识请参考专栏《人工智能基础知识》。

写博不易,敬请支持:

如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!

关于老猿的付费专栏

  1. 付费专栏《https://blog.csdn.net/laoyuanpython/category_9607725.html 使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,对应文章目录为《 https://blog.csdn.net/LaoYuanPython/article/details/107580932 使用PyQt开发图形界面Python应用专栏目录》;
  2. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10232926.html moviepy音视频开发专栏 )详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/107574583 moviepy音视频开发专栏文章目录》;
  3. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10581071.html OpenCV-Python初学者疑难问题集》为《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的伴生专栏,是笔者对OpenCV-Python图形图像处理学习中遇到的一些问题个人感悟的整合,相关资料基本上都是老猿反复研究的成果,有助于OpenCV-Python初学者比较深入地理解OpenCV,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/109713407 OpenCV-Python初学者疑难问题集专栏目录 》
  4. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10762553.html Python爬虫入门 》站在一个互联网前端开发小白的角度介绍爬虫开发应知应会内容,包括爬虫入门的基础知识,以及爬取CSDN文章信息、博主信息、给文章点赞、评论等实战内容。

前两个专栏都适合有一定Python基础但无相关知识的小白读者学习,第三个专栏请大家结合《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的学习使用。

对于缺乏Python基础的同仁,可以通过老猿的免费专栏《https://blog.csdn.net/laoyuanpython/category_9831699.html 专栏:Python基础教程目录)从零开始学习Python。

如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。

老猿Python,跟老猿学Python!

☞ ░ 前往老猿Python博文目录 https://blog.csdn.net/LaoYuanPython ░

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux故障排查(亲身经历),Linux运维开发6年了

这里输入数字时注意不要按小键盘,要按键盘字母区上面的那排数字键; 比如我们要关闭pid为2的进程,输入2后按回车,会出现以下提示,此时再按回车就ok 注意 如果执行top命令后,发现没有cpu占用率较高的进程&a…

如何在Linux中安装软件

文章目录 一、Linux应用程序基础1.Linux软件安装包分类2.应用程序和系统命令的关系3.常见的软件包的封装类型 二、安装软件的方式1.RPM包管理工具2.yum安装3.编译 一、Linux应用程序基础 1.Linux软件安装包分类 Linux源码包: 实际上,源码包就是一大堆源…

基于JAVAEE技术校园车辆管理系统论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本校园车辆管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息…

python_web1(前端开发之HTML、CSS、Bootstap、Javascript、JQuery)

文章目录 一、Flask网页开发1.1创建一个名为web1.py的python文件1.2 templates目录创建文件index.html 二、html标签2.1 编码2.2title < head >2.3 标题< h>2.4 div和span2.5超链接1.在index.xml文件中补充。2.修改web1.py文件3.添加get_self.html4.效果 2.6图片1.…

Python常用算法思想--回溯算法思想详解【附源码】

通过回溯算法解决“组合”问题、“排序”问题、“搜索”之八皇后问题、“子集和”之0-1背包问题、字符串匹配等六个经典案例进行介绍: 一、解决“组合”问题 从给定的一组元素中找到所有可能的组合,这段代码中的 backtrack_combinations 函数使用了回溯思想,调用 backtrack…

【论文精读】Detecting Out-of-Distribution Examples with Gram Matrices 使用Gram矩阵检测分布外实例

文章目录 一、文章概览&#xff08;一&#xff09;Gram矩阵1、Gram&#xff08;格朗姆&#xff09;矩阵的定义2、Gram矩阵计算特征表示3、风格迁移中的Gram矩阵 &#xff08;二&#xff09;ood检测&#xff08;三&#xff09;核心思路&#xff1a;扩展 Gram 矩阵以进行分布外检…

DHCP工作过程以及抓包分析

从PC1的e0/0/1接口进行抓包 客户端基于UDP、源端口68、目标端口67进行广播请求&#xff0c;源IP0.0.0.0&#xff0c;&#xff08;无效地址&#xff0c;代表本地无地址&#xff09;目标IP255.255.255.255&#xff1b; 从下面截图可以看出&#xff1a; 源mac为电脑mac&#xff…

steam和epic的使用

steam和epic的使用 介绍 这俩都是游戏平台。 登录注册 steam 使用网吧uu加速器打开steam 点击启动游戏&#xff1a;&#xff08;网吧实例&#xff0c;接着点启动&#xff09; 两种方法&#xff1a; 1.直接点内个“创建免费账户”。然后直接注册就行&#xff08;我在网…

论文笔记:UNDERSTANDING PROMPT ENGINEERINGMAY NOT REQUIRE RETHINKING GENERALIZATION

ICLR 2024 reviewer评分 6888 1 intro zero-shot prompt 在视觉-语言模型中&#xff0c;已经取得了令人印象深刻的表现 这一成功呈现出一个看似令人惊讶的观察&#xff1a;这些方法相对不太受过拟合的影响 即当一个提示被手动工程化以在给定训练集上达到低错误率时&#xff0…

【测开求职】校招生在面测开前需要了解的信息

博主在2021年拿到了字节测开实习的offer&#xff0c;实习时长4个月&#xff0c;并于2023年秋招拿到了字节测开的校招offer&#xff0c;仅以本专栏记录对该岗位的所思所想。 目录 1. 测试开发需要做什么工作2. 为什么选择测试开发3. 测试开发不如开发吗4. 如何准备测试开发 1. …

如何使用 Viggle AI 生成模特动作视频

Viggle AI 是一款基于骨骼动画的 AI 工具&#xff0c;可以将图片转换为流畅且一致的角色动画。 这意味着您可以上传一张模特全身照&#xff0c;然后指定该模特要执行的动作&#xff0c;Viggle AI 会自动生成一段由该模特执行该动作的视频。 步骤 1&#xff1a;准备工作 首先&…

【mysql 第3-10条记录怎么查】

mysql 第3-10条记录怎么查 在MySQL中&#xff0c;如果你想要查询第3到第10条记录&#xff0c;你通常会使用LIMIT和OFFSET子句。但是&#xff0c;需要注意的是&#xff0c;LIMIT和OFFSET是基于结果集的行数来工作的&#xff0c;而不是基于记录的物理位置。这意味着它们通常与某种…

栈、队列-栈的概念及结构/栈的实现/栈的顺序存储结构-队列的概念及结构、队列的实现(链式存储结构))

一、栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO (Last In First Out)的原则。 压栈&#xff1a;栈的插入操作…

数学建模----MATLAB----forwhile循环(进阶)

目录 1.for循环的运用 &#xff08;1&#xff09;求和计算 &#xff08;2&#xff09;闰年的判断 &#xff08;3&#xff09;斐波那契数列的计算 &#xff08;4&#xff09;一列数的5个数据一样&#xff0c;删除&#xff0c;5个数据不一样&#xff0c;就保留下来&#xff1…

深入解析:如何使用Xcode上传苹果IPA安装包至App Store?

目录 引言 摘要 第二步&#xff1a;打开appuploader工具 第二步&#xff1a;打开appuploader工具&#xff0c;第二步&#xff1a;打开appuploader工具 第五步&#xff1a;交付应用程序&#xff0c;在iTunes Connect中查看应用程序 总结 引言 在将应用程序上架到苹果应用商…

【Spring篇】Spring IoC DI

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【Spring系列】 本专栏旨在分享学习Spring MVC的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 前言一、IoC二、…

用html写一个爱心

<!DOCTYPE html> <html lang"zh-CN"><head><meta http-equiv"Content-Type" content"text/html; charsetUTF-8" /><title>爱您</title><style>* {padding: 0;margin: 0;}body {background-color: pin…

智慧公厕:提升城市管理效率,改善居民生活体验

智慧公厕作为城市基础设施的重要组成部分&#xff0c;正逐渐成为改善城市品质和提升居民生活体验的一项关键措施。通过智能化管理、数字化使用和信息化运行&#xff0c;智慧公厕不仅可以为城市居民带来更舒适便利的使用体验&#xff0c;而且对于城市的高质量发展、宜居性和包容…

Java快速入门系列-5(Java进阶特性)

第五章:Java进阶特性 5.1 多线程与并发编程5.1.1 多线程基础5.1.2 线程同步与锁5.1.3 线程间通信与协作5.1.4 线程池5.2 Java I/O流5.2.1 字节流与字符流5.2.2 缓冲流5.2.3 对象序列化与反序列化5.3 网络编程基础5.3.1 Socket编程5.3.2 NIO编程5.4 Java反射机制反射的基本用法…

使用 ChatGPT 创建在线课程:一步一步指南与提示模板

原文&#xff1a;Creating Online Courses with ChatGPT 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 谢谢 作为对你支持的感谢&#xff0c;随意定制本书中列出的任何提示&#xff0c;并将其作为你自己的重新销售。是的&#xff0c;对你免费。 它们都结构良好且用…