热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

机器学习中范数的作用

范数的定义范数的一般化定义:对于实数X,p-norm的定义为:||X||p(∑ni1|xi|p)1p||X||_{p}(\sum_{i1}^{n}|x

范数的定义

范数的一般化定义:对于实数X,p-norm的定义为:
||X||p=(ni=1|xi|p)1p
其赋予某个向量空间(或矩阵)中每个元素以长度或大小。直观地说,范数越大,则相应的向量或矩阵也就越大。三种范数在机器学习中的正则化与稀疏编码(Sparse Coding)中有非常有趣的应用。

L0 范数

||X||0=0ni=0X0i with xi!=0
其表示向量中非零元素的个数。如果我们使用 L0 来规则化参数向量w,就是希望w的元素大部分都为零。 L0 范数的这个属性,使其非常适用于机器学习中的稀疏编码。在特征选择中,通过最小化 L0 范数来寻找最少最优的稀疏特征项。但是, L0 范数的最小化问题是NP难问题。 L1 范数是 L0 范数的最优凸近似,它比 L0 范数要更容易求解。因此, L0 优化过程将会被转换为更高维的范数(例如 L1 范数)问题。

L1 范数

||X||1=ni=1|Xi|
L1 范数是向量中各个元素绝对值之和,也被称作“Lasso regularization”(稀疏规则算子)。

在机器学习特征选择中的应用

稀疏规则化能够实现特征的自动选择。一般来说,xi的大部分元素(也就是特征)都是和最终的输出yi没有关系或者不提供任何信息的,在最小化目标函数的时候考虑xi这些额外的特征,虽然可以获得更小的训练误差,但在预测新的样本时,这些没用的信息反而会被考虑,从而干扰了对正确yi的预测。稀疏规则化算子的引入就是为了完成特征自动选择,它会学习地去掉这些没有信息的特征,也就是把这些特征对应的权重置为0。
L1 范数与 L0 范数都可以实现稀疏,而 L1 范数比 L0 具有更好的优化求解特性而被广泛使用。
L0 范数本身是特征选择的最直接最理想的方案,但如前所述,其不可分,且很难优化,因此实际应用中我们使用 L1 来得到 L0 的最优凸近似。

L2 范数

||X||2=ni=0X2i

一.从学习理论的角度 L2 可以防止过拟合

我们让 L2 的规则化项 ||w||2 最小,可以使w中的每个元素都很小,但是不是像 L1 范数那样使元素等于0,而是接近于零。越小的参数说明模型越简单,越简单的模型越不容易产生过拟合的现象。??通过 L2 范数可以防止过拟合,提升模型的泛化能力。

二.从优化计算的角度 L2 范数可以有助于处理condition number 不好地情况下矩阵求逆很困难的问题

具体参见http://blog.csdn.net/zouxy09/article/details/24971995/
L2 范数不仅可以防止过拟合,还可以让我们的优化求解变的稳定和迅速。

三. L2 范数与 L1 范数的关系

1)下降速度
我们知道,L1和L2都是规则化的方式,我们将权值参数以L1或者L2的方式放到代价函数里面去。然后模型就会尝试去最小化这些权值参数。而这个最小化就像一个下坡的过程,L1和L2的差别就在于这个“坡”不同,如下图:L1就是按绝对值函数的“坡”下降的,而L2是按二次函数的“坡”下降。所以实际上在0附近,L1的下降速度比L2的下降速度要快。
这里写图片描述
2)最优化问题的平滑性
从最优化问题解的平滑性来看, L1 范数的最优解相对于 L2 范数要少,但是其往往是最优解,而 L2 范数的解很多,但其更多的倾向于某种局部最优解。
这里写图片描述这里写图片描述
但由于 L1 范数并没有平滑的方式表示,起初 L1 最优化问题解决起来非常困难。但是现在,很多凸优化问题使 L1 最优化成为可能。
3)模型空间的限制
实际上,对于L1和L2规则化的代价函数来说,我们可以写成以下形式:
这里写图片描述
也就是说,我们将模型空间限制在w的一个L1-ball 中。为了便于可视化,我们考虑两维的情况,在(w1, w2)平面上可以画出目标函数的等高线,而约束条件则成为平面上半径为C的一个 norm ball 。等高线与 norm ball 首次相交的地方就是最优解:
这里写图片描述
可以看到,L1-ball 与L2-ball 的不同就在于L1在和每个坐标轴相交的地方都有“角”出现,而目标函数的测地线除非位置摆得非常好,大部分时候都会在角的地方相交。注意到在角的位置就会产生稀疏性,例如图中的相交点就有w1=0,而更高维的时候(想象一下三维的L1-ball 是什么样的?)除了角点以外,还有很多边的轮廓也是既有很大的概率成为第一次相交的地方,又会产生稀疏性。
相比之下,L2-ball 就没有这样的性质,因为没有角,所以第一次相交的地方出现在具有稀疏性的位置的概率就变得非常小了。这就从直观上来解释了为什么L1-regularization 能产生稀疏性,而L2-regularization 不行的原因了。因此,一句话总结就是: L1 会趋向于产生少量的特征,而其他的特征都是0,而 L2 会选择更多的特征,这些特征都会接近于0。Lasso在特征选择时候非常有用,而Ridge就只是一种规则化而已。
L2 相对于 L1 具有更为平滑的特性,在模型预测中,往往比 L1 具有更好的预测特性。当遇到两个对预测有帮助的特征时, L1 倾向于选择一个更大的特征。而 L2 更倾向把两者结合起来。

L2,1 范数

||X||2,1=ni=1tj=1X2i,j=ni=1X2i,:=ni=1||Xi,:||2
原始矩阵是n行t列的,可以看出 L2,1 是对列求和,也就是先对每行元素求 L2 范数,然后再按行求和。
从中可以看出, L2,1 范数就是对矩阵X中每行元素的 L2 范数之和。
在矩阵稀疏表示模型中,其作为正则化的作用?
它是每行的 L2 范数之和。在最小化问题中,只有每一行的 L2 都最小结果才能最小。而怎么才能使每一行的 L2 范数取得最小呢?当行内尽可能多的元素为零时,约束才可能取得最小。而行内尽可能取零的含义就是行稀疏。
不同于 L1 范数的稀疏要求(矩阵元素绝对值之和), L2,1 范数还要求行稀疏。


推荐阅读
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • R语言中向量(Vector)数据类型的元素索引与访问:利用中括号[]和赋值操作符在向量末尾追加数据以扩展其长度
    在R语言中,向量(Vector)数据类型的元素可以通过中括号 `[]` 进行索引和访问。此外,利用中括号和赋值操作符,可以在向量的末尾追加新数据,从而动态地扩展向量的长度。这种方法不仅简洁高效,还能灵活地管理向量中的数据。 ... [详细]
  • 在iOS开发中,基于HTTPS协议的安全网络请求实现至关重要。HTTPS(全称:HyperText Transfer Protocol over Secure Socket Layer)是一种旨在提供安全通信的HTTP扩展,通过SSL/TLS加密技术确保数据传输的安全性和隐私性。本文将详细介绍如何在iOS应用中实现安全的HTTPS网络请求,包括证书验证、SSL握手过程以及常见安全问题的解决方法。 ... [详细]
  • 在日常开发中,正则表达式是处理字符串时不可或缺的工具。本文汇总了常用的正则表达式,帮助开发者高效解决常见问题。例如,验证数字:`1$`;验证n位数字:`^\d{n}$`;验证至少n位数字:`^\d{n,}$`;验证m到n位数字:`^\d{m,n}$`。此外,还涵盖了验证零和非零数字、邮箱地址、手机号码等多种场景,建议关注并收藏以备不时之需。 ... [详细]
  • 能够感知你情绪状态的智能机器人即将问世 | 科技前沿观察
    本周科技前沿报道了多项重要进展,包括美国多所高校在机器人技术和自动驾驶领域的最新研究成果,以及硅谷大型企业在智能硬件和深度学习技术上的突破性进展。特别值得一提的是,一款能够感知用户情绪状态的智能机器人即将问世,为未来的人机交互带来了全新的可能性。 ... [详细]
  • 通过使用CIFAR-10数据集,本文详细介绍了如何快速掌握Mixup数据增强技术,并展示了该方法在图像分类任务中的显著效果。实验结果表明,Mixup能够有效提高模型的泛化能力和分类精度,为图像识别领域的研究提供了有价值的参考。 ... [详细]
  • 利用树莓派畅享落网电台音乐体验
    最近重新拾起了闲置已久的树莓派,这台小巧的开发板已经沉寂了半年多。上个月闲暇时间较多,我决定将其重新启用。恰逢落网电台进行了改版,回忆起之前在树莓派论坛上看到有人用它来播放豆瓣音乐,便萌生了同样的想法。通过一番调试,终于实现了在树莓派上流畅播放落网电台音乐的功能,带来了全新的音乐享受体验。 ... [详细]
  • Node.js 配置文件管理方法详解与最佳实践
    本文详细介绍了 Node.js 中配置文件管理的方法与最佳实践,涵盖常见的配置文件格式及其优缺点,并提供了多种实用技巧和示例代码,帮助开发者高效地管理和维护项目配置,具有较高的参考价值。 ... [详细]
  • 在机器学习领域,深入探讨了概率论与数理统计的基础知识,特别是这些理论在数据挖掘中的应用。文章重点分析了偏差(Bias)与方差(Variance)之间的平衡问题,强调了方差反映了不同训练模型之间的差异,例如在K折交叉验证中,不同模型之间的性能差异显著。此外,还讨论了如何通过优化模型选择和参数调整来有效控制这一平衡,以提高模型的泛化能力。 ... [详细]
  • 在C语言程序开发中,调试和错误分析是确保代码正确性和效率的关键步骤。本文通过一个简单的递归函数示例,详细介绍了如何编写和调试C语言程序。具体而言,我们将创建一个名为 `factorial.c` 的文件,实现计算阶乘的功能,并通过逐步调试来分析和解决可能出现的错误。此外,文章还探讨了常见的调试工具和技术,如GDB和断点设置,以帮助开发者高效地定位和修复问题。 ... [详细]
  • 当使用 `new` 表达式(即通过 `new` 动态创建对象)时,会发生两件事:首先,内存被分配用于存储新对象;其次,该对象的构造函数被调用以初始化对象。为了确保资源管理的一致性和避免内存泄漏,建议在使用 `new` 和 `delete` 时保持形式一致。例如,如果使用 `new[]` 分配数组,则应使用 `delete[]` 来释放内存;同样,如果使用 `new` 分配单个对象,则应使用 `delete` 来释放内存。这种一致性有助于防止常见的编程错误,提高代码的健壮性和可维护性。 ... [详细]
  • POJ 2482 星空中的星星:利用线段树与扫描线算法解决
    在《POJ 2482 星空中的星星》问题中,通过运用线段树和扫描线算法,可以高效地解决星星在窗口内的计数问题。该方法不仅能够快速处理大规模数据,还能确保时间复杂度的最优性,适用于各种复杂的星空模拟场景。 ... [详细]
  • 如何撰写适应变化的高效代码:策略与实践
    编写高质量且适应变化的代码是每位程序员的追求。优质代码的关键在于其可维护性和可扩展性。本文将从面向对象编程的角度出发,探讨实现这一目标的具体策略与实践方法,帮助开发者提升代码效率和灵活性。 ... [详细]
  • 在多年使用Java 8进行新应用开发和现有应用迁移的过程中,我总结了一些非常实用的技术技巧。虽然我不赞同“最佳实践”这一术语,因为它可能暗示了通用的解决方案,但这些技巧在实际项目中确实能够显著提升开发效率和代码质量。本文将深入解析并探讨这四大高级技巧的具体应用,帮助开发者更好地利用Java 8的强大功能。 ... [详细]
  • 本文以 www.域名.com 为例,详细介绍如何为每个注册用户提供独立的二级域名,如 abc.域名.com。实现这一功能的核心步骤包括:首先,确保域名支持泛解析,即将 A 记录设置为 *.域名.com,以便将所有二级域名请求指向同一服务器。接着,在服务器端使用 ASP.NET 2.0 进行配置,通过解析 HTTP 请求中的主机头信息,动态识别并处理不同的二级域名,从而实现个性化内容展示。此外,还需在数据库中维护用户与二级域名的对应关系,确保每个用户的二级域名都能正确映射到其专属内容。 ... [详细]
author-avatar
大坑啊同志
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有