机器学习——L1范数充当正则项,让模型获得稀疏解,解决过拟合问题

2023-11-15

问:使用L2范数正则项比L1范数正则项得到的是更为稀疏的解。

答:错误,L1范数正则项得到的是更稀疏的解。因为在L1正则项中,惩罚项是每个参数绝对值之和;而在L2正则项中,惩罚项是每个参数平方的和。L1正则项可以压缩参数中的小值,更容易导致一些参数被压缩到零。采用L1正则化,最优解为0的概率极大增加,这使得得到的解更可能是稀疏的。

为了理解l1范数的正则项和稀疏性之间的关系,我们可以想想下面三个问题:

  • ·为什么l范数就能使得我们得到一个稀疏解呢?
  • 为什么稀疏解能够避免过拟合?
  • 正则项在模型中扮演者何种角色?

什么是过拟合问题?


在讨论上面三个问题之前,我们先来看看什么是过拟合问题:假设我们现在买了一个机器人,想让它学会区分汉字,例如

认定前5个字属于第一类,后5个字属于第二类。在这里,10个字是所有的训练的“数据”

 不幸的是,机器人其实很聪明,它能够把所有的字都“记住”,看过这10个字以后,机器人学会了一种分类的方式:它把前5个字的一笔一划都准确地记在心里。只要我们给任何一个字,如“揪”(不在10个字里面),它就会很自信地告诉你,非此即彼,这个字属于第二类。当然,对于这10个字,机器人可以区分地非常好,准确率100%.但是,对于

机器人没见过这个字(不在10个字里面),它将这个字归为第二类,这可能就错了。
因为我们可以明显看到,前5个字都带提手旁:
 

所以,“揪”属于第一类。

机器人的失败在于它太聪明,而训练数据又太少,不允许它那么聪明,这就是过拟合问题。


正则项是什么?为什么稀疏可以避免过拟合?

还是给它前面测试过的那10个字,但现在机器人已经没办法记住前5个字的一笔一划了(存储有限),它此时只能记住一些简单的模式,于是,第一类字都带有提手旁就被它成功地发现了。
实际上,这就是L1范数正则项的作用。

L1范数会让你的模型变傻一点,相比于记住事物本身,此时机器人更倾向于从数据中找到一些简单的模式。

假设我们有一个待训练的机器学习模型,如下: 假设我们有一个待训练的机器学习模型,如下:
Ax=b
其中,A是一个训练数据构成的矩阵,b是一个带有标签的向量,这里的是我们希望求解出来的解。 
当训练样本很少(training data is not enough)向量 a长度很长时,这个模型的解就很多了。



如图,矩阵A 的行数远少于向量 的长度。
我们希望的是找到一个比较合理的解,即向量能够发现有用的特征(useful features)。使用L1范数作为正则项,向量会变得稀疏,非零元素就是有用的特征了。


为什么增加L1范数能够保证稀疏?



 

 

怎样通过L1范数找到一个稀疏解呢?

我们不妨先假设向量的L1范数是一个常数c,如下图:

 

 它的形状是一个正方形(红色线),不过在这些边上只有很少的点是稀疏的,即与坐标轴相交的4个顶点。

 把红色的正方形(L范数为常数))与蓝色的线(解)放在同一个坐标系,于是,我们发现蓝线与横轴的交点恰好是满足稀疏性要求的解。同时,这个交点使得L范数取得最小值。

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

机器学习——L1范数充当正则项,让模型获得稀疏解,解决过拟合问题 的相关文章

随机推荐

  • Junit单元测试1

    实验五 Junit单元测试1 1 实验目的 学习使用 JUnit4 X 进行单元测试 应用 JUnit4 X 进行单元测试 为工程项目中的类 设计测试类 并且运用白盒测试和黑盒测试方法为类中的方法设计足够充分的测试用例集 从而保证 每一个类
  • myeclipse找不到Deployment Assembly ,报错

    今天tomcat加载maven项目遇到错误 java lang ClassNotFoundException org springframework web context ContextLoaderListener 在网上查到解决方法 出
  • 雷厉风行——开启人工智能教育普及时代

    自二十一世纪伊始 我国一线城市已全面进入老龄化严重的趋势 国家急需聪明睿智 精力充沛的年轻人作为人才储备 要全方位的培养年轻人 必须从少儿时期开始抓起 人工智能教育可以启发少儿天马行空的想象力 抽丝剥茧的思维方式 艰苦奋斗的实干精神 格物斯
  • 【hello git】初识Git

    目录 一 简述Git 二 Linux 下 Git 的安装 CentOS 2 1 基本命令 2 2 示例 三 Linux 下 Git 的安装 ubuntu 3 1 基本命令 3 2 示例 一 简述Git Git 版本控制器 记录每次的修改以及
  • matlab第三章课后答案,matlab程序设计第三章课后习题答案推荐.doc

    matlab程序设计第三章课后习题答案推荐 窗体顶端 1 p138 第6题 在同一坐标轴中绘制下列两条曲线并标注两曲线交叉点 gt gt t 0 0 01 pi gt gt x1 t gt gt y1 2 x1 0 5 gt gt x2 s
  • 桥接路由器总是掉线_tplink路由器桥接掉线怎么办

    tplink是普联技术有限公司旗下的品牌 成立于1996年 是专门从事网络与通信终端设备研发 制造和行销的业内主流厂商 那么你知道tplink路由器桥接掉线的解决方法吗 下面是学习啦小编整理的一些关于tplink路由器桥接掉线的相关资料 供
  • 命令行参数格式介绍

    命令行参数 sys argv 命令行参数列表 getopt getopt argparse argparse例子 import argparse def cmd args argparse ArgumentParser descriptio
  • vue3弃用/deep/深度穿透

    使用css时 如果需要改变孙级样式需要用到 gt gt gt 穿透 scss中增加了 deep 功能来做样式穿透 vue项目中也可以写作 v deep vue3之后之前的穿透语法虽然暂时可以正常使用 但是在编译时会抛出异常 说明在不久的将来
  • SQL NOT EXISTS讲解 (详例助理解)

    首先我们要知道对于exists和not exists 的返回值都是真假 exists 如果子查询查询到了列那么就为假 not exists 如果子查询查询不到结果则返回值为真 下面来举例子来理解not exists 先给出三个表 stude
  • 如何在Linux中查看所有正在运行的进程

    你可以使用ps命令 它能显示当前运行中进程的相关信息 包括进程的PID Linux和UNIX都支持ps命令 显示所有运行中进程的相关信息 ps命令能提供一份当前进程的快照 如果你想状态可以自动刷新 可以使用top命令 ps命令 输入下面的p
  • el search 查询排序

    sort 与query是同级的 来源 https stackoverflow com questions 20974964 python custom scripting in elasticsearch sort score order
  • Android 加载gif图,Glide

    个人中心 DownLoad Android 可以使用 Glide Picasso Fresco 等第三方库来加载 gif 图 以 Glide 为例 可以按照以下步骤加载 gif 图 1 在 build gradle 文件中添加 Glide
  • verilog – 行为,RTL和门级之间的差异

    试图完全理解Verilog的抽象级别之间的差异 我得到了每个级别的描述 但我仍然无法在游戏中得到它 对于这种情况 我将粘贴一些Verilog代码以及我对它们的看法 gt 以下代码位于行为级别 always a or b or sel beg
  • 前端,后端,全栈哪个好找工作?

    职场老油子说说 现在啥岗位不好找工作 啥 想钱多 活少 离家近 最好单位发异性 这得靠实力 运气 如果是刚毕业 啥都不懂但又想从事技术行业 可以到职场上历练 而不是说报个培训机构 他们只能解决你的焦虑问题 而不是实际问题 如果只是混个工作
  • Vue3-自定义轮播图插件(逐步-1)

    1 大致框架建好 在src文件下新建一个文件XX 在XX中建立一个index vue作为主页面 在文件XX里建一个components文件用于存放组件 在components文件中建一个slideBox vue来写我们的轮播图主体 在sli
  • BGP总结

    BGP总结 BGP 边界网关协议 使用范围 BGP范围 在AS之间使用的协议 协议的特点 算法 路径矢量型 没有算法 协议是否传递网络掩码 传递网络掩码 支持VLSM CIDR 协议消息数据包封装 基于TCP封装 端口号 179 AS 自治
  • mybatis中代码复用问题resultMap、sql、include标签

    xml映射文件 对于重复出现的sql 片段可以使用sql标签提取出来 在使用的地方使用include标签引用即可 MyBatis之ResultMap标签 ResultMap标签基本作用 建立SQL查询结果字段与实体属性的映射关系信息 在深入
  • 华为OD机试 - 求符合要求的结对方式(Java )

    题目描述 用一个数组A代表程序员的工作能力 公司想通过结对编程的方式提高员工的能力 假设结对后的能力为两个员工的能力之和 求一共有多少种结对方式使结对后能力为N 输入描述 5 1 2 2 2 3 4 第一行为员工的总人数 取值范围 1 10
  • Mxnet在Windows10, vs2015平台的编译及开发-CPU版本

    环境 基础配置 Windows10 cmake3 11 1 vs2015 QT5 11 1 mxnet配置 OpenBLAS v0 2 9 Win64 int32 opencv3 4 1 相关资源百度云链接 https pan baidu
  • 机器学习——L1范数充当正则项,让模型获得稀疏解,解决过拟合问题

    问 使用L2范数正则项比L1范数正则项得到的是更为稀疏的解 答 错误 L1范数正则项得到的是更稀疏的解 因为在L1正则项中 惩罚项是每个参数绝对值之和 而在L2正则项中 惩罚项是每个参数平方的和 L1正则项可以压缩参数中的小值 更容易导致一