在之前的两篇文章岭回归以及L1正则化与L2正则化详解中都有提到L2范数。但对于L2范数在优化计算角度上都跳过了。故在这里新开一篇详细介绍一下,为什么L2范数可以解救病态矩阵,以及优化计算。


病态系统

现在有线性系统: , 解方程

很容易得到解为: 。如果在样本采集时存在一个微小的误差,比如,将 A 矩阵的系数 400 改变成 401:

则得到一个截然不同的解: 

当解集 x 对 A 和 b 的系数高度敏感,那么这样的方程组就是病态的 (ill-conditioned).

经过计算可得

矩阵的条件数(condition number)

如果方阵 A 是奇异的,那么 A 的 condition number 就是正无穷大了。实际上,每一个可逆方阵都存在一个 condition number。

对condition number来个一句话总结:condition number 是一个矩阵(或者它所描述的线性系统)的稳定性或者敏感度的度量,如果一个矩阵的 condition number 在1附近,那么它就是well-conditioned的,如果远大于1,那么它就是 ill-conditioned 的,如果一个系统是 ill-conditioned 的,它的输出结果就不要太相信了(因为这个系统对输入太过敏感了,有时甚至计算机的存储误差对结果都会有显著的影响)。计算公式如下:

计算矩阵的条件数需要知道norm(范数)的定义和Machine Epsilon(机器的精度)。范数就相当于衡量一个矩阵的大小,在L1正则化与L2正则化详解中我们已经介绍了三种范数L0、L1、L2.现在我们介绍一下同样很简单的无穷范数(infinity norm), 即找行绝对值之和最大,举个例子:

infinity norm 具有三角性质:. 理解了这些概念,下面讨论一下衡量方程组病态程度的条件数,首先假设向量 b 受到扰动,导致解集 x 产生偏差:

即有:

同时,由于

综合上面两个不等式:

即得到最终的关系:

如果是矩阵 A 产生误差,同样可以得到:

矩阵A产生误差从头到尾再推一遍就能推出来了。

其中, 条件数定义为:

也就是说,当条件数很大的时候,无论是b还是A只要变动一点点就会导致x变动很大。这就是为什么病态系统敏感的原因。

病态的由来

自己的看法:

线性系统 Ax = b 为什么会病态?归根到底是由于 A 矩阵列向量(行向量相关性大应该也有关系)线性相关性过大,表示的特征太过于相似以至于容易混淆所产生的。举个例子, 现有一个两个十分相似的列向量组成的矩阵 A:

在二维空间上,这两个列向量(列向量就是空间中所谓的基向量)夹角非常小。假设第一次检测得到数据 b = [1000, 0]^T, 这个点正好在第一个列向量所在的直线上,解集是 [1, 0]^T。现在再次检测,由于有轻微的误差,得到的检测数据是 b = [1000, 0.001], 这个点正好在第二个列向量所在的直线上,解集是 [0, 1]^T。两次求得到了差别迥异的的解集。

病态矩阵的两大缺点

  1. 系统太过敏感,无论是略微对A矩阵进行一点改动还是对b矩阵进行一点改动,都会对解x产生较大的影响。此时系统得出的结果通常不可信。
  2. 如果矩阵是病态矩阵,则在迭代法中,解的收敛非常缓慢。

病态矩阵处理方法

真正的自由是建立在规范的基础上的。病态矩阵解集的不稳定性是由于解集空间包含了自由度过大的方向(就是列向量太多,即基向量太多了,基向量之间并不相互线性无关),解决这个问题的关键就是将这些方向去掉,而保留 scaling 较大的方向,从而把解集局限在一个较小的区域内。

总结起来,解决矩阵病态就是将解集限定在一组正交基空间内。

在机器学习中的矩阵方法(附录A): 病态矩阵与条件数一文中有一个关于SVD分解的例子。有兴趣可以看一下。

L2范数

到这里为止,应该能搞清楚为什么病态矩阵会造成优化求解上的困难了吧。

回到最开始的问题。L2范数有助于处理 condition number不好的情况下矩阵求逆很困难的问题。因为目标函数如果是二次的,对于线性回归来说,那实际上是有解析解的,求导并令导数等于零即可得到最优解为:

然而,如果当我们的样本X的数目比每个样本的维度还要小的时候,矩阵将会不是满秩的,即,则会变得不可逆,所以就没办法直接计算出来了。

所以矩阵为非满秩矩阵。

或者更确切地说,将会有无穷多个解(因为我们方程组的个数小于未知数的个数)。也就是说,我们的数据不足以确定一个解,如果我们从所有可行解里随机选一个的话,很可能并不是真正好的解,总而言之,我们过拟合了。

怎么突然就扯到过拟合了呢!可以很容易的发现上面的解析表达式实际上是由Normal Equation得出来的结论,在之前的线性回归之Normal Equation一文中,我们介绍过,矩阵A有多少行就表示基向量空间有多少维(每个特征有多少样本量,就表明在这个空间中有多少维度),有多少列,就表示有多少个基向量。这么一个概念,理解起来可能会有些困难,建议回过头去再看一遍Normal Equation方法。

代入到这个情景中,样本X的数目比特征还要小,就是向量空间的维数很低,但是基向量很多。举个例子,就比如在三维空间中,我们却有10个基向量,那当然可以通过这10个基向量进行线性组合,很容易就可以拟合到所有的样本,或者说使得拟合误差极小。这就造成了过拟合!

对于新的样本进来,这种拟合是毫无泛化能力的。

总结一下,病态矩阵的由来在以下两个方面:

  1. 之前讲的列向量之间相关性过大,此时可能样本量很多,即样本空间的维数很高,空间中的基向量个数(特征数)也不多,但基向量之间(特征之间)的相关性很高。此时就会造成矩阵(特征矩阵)病态。此时的模型应该是欠拟合的,因为大多数的特征提供的信息重复率太高,真正有用的数据分布信息并不多,换一个角度思考,即在样本空间之中,基向量大多指向同一个方向,那个样子拟合能力就很差了,同时作迭代法时想要迭代收敛的速度就很慢(转向特别慢)。
  2. 第二种病态矩阵就是由于样本数少于特征数,就如上面讲的那样,会造成过拟合!

但如果加上L2正则项,就变成了下面这种情况,就可以直接求逆了:

正如上文所说的:病态矩阵解集的不稳定性是由于解集空间包含了自由度过大的方向,解决这个问题的关键就是将这些方向去掉。其中单位矩阵的维度为参数向量的维度。

自由度太大会造成过拟合泛化能力极差,同时系统又极不稳定。当我们加入正则项之后,A就变成了满秩矩阵,此时矩阵A的样本空间维数和基向量的个数是等量(实际上是大于等于)的,也就是说在5维的向量空间中,我们的特征个数是小于等于5个,即基向量个数是小于等于5个的,此时,拟合出来的函数具有一定的泛化能力。我们通过增大样本的空间维数(实际上没有增大,原先由于线性相关是不满秩的,后来变成了线性独立)使得解集空间的自由度降低了!


文章写的还是有点模糊,以后会继续补充与改善思路。推荐阅读下面两篇参考文献以及结合我的文章与我以前写的一些文章作综合思考。

接下来要补一章内容,关于矩阵的转置乘以矩阵,以及SVD,奇异值特征值等等数学基础知识。

参考文章:

机器学习中的矩阵方法(附录A): 病态矩阵与条件数

机器学习中的范数规则化之(一)L0、L1与L2范数

【数学基础】L2范数之解救矩阵病态相关推荐

  1. 矩阵的范数:L0范数、L1范数、L2范数、P范数(双竖线有下标)

    范数(norm)是数学中的一种基本概念.在泛函分析中,它定义在赋范线性空间中,并满足一定的条件,即 ①非负性:②齐次性:③三角不等式.它常常被用来度量某个向量空间(或矩阵)中的每个向量的长度或大小. ...

  2. 机器学习中的范数规则化之L0、L1、L2范数

    我的博客中参考了大量的文章或者别的作者的博客,有时候疏忽了并未一一标注,本着分享交流知识的目的,如果侵犯您的权利,这并非我的本意,如果您提出来,我会及时改正. 本篇博客主要是为了解决机器学习中的过拟合 ...

  3. 简单理解L0、L1与L2范数

    机器学习中的范数规则化之(一)L0.L1与L2范数 监督机器学习问题无非就是"minimizeyour error while regularizing your parameters&qu ...

  4. 范数规则化(一):L0、L1与L2范数

    目录 0 范数 1  L0 范数 2  L1 范数 2.1 L1 2.2 L1正则化和特征选择 2.3 拉普拉斯先验与L1正则化 2.3.1 拉普拉斯分布 2.3.2 拉普拉斯先验 3 L2 范数 3 ...

  5. L0、L1、L2 范数

    为什么正则化能够降低过拟合 : 为什么正则化能够降低过拟合 · 神经网络与深度学习 正则化的解释:  正则化 · 神经网络与深度学习 机器学习中正则化项L1和L2的直观理解: 机器学习中正则化项L1和 ...

  6. Machine Learning系列--L0、L1、L2范数

    今天我们聊聊机器学习中出现的非常频繁的问题:过拟合与规则化.我们先简单的来理解下常用的L0.L1.L2和核范数规则化.最后聊下规则化项参数的选择问题.这里因为篇幅比较庞大,为了不吓到大家,我将这个五个 ...

  7. l2范数求导_稀疏编码学习笔记(二)L2范数

    L2范数 除了L1范数,还有一种更受宠幸的规则化范数是L2范数: ||W||2.它也不逊于L1范数,它有两个美称,在回归里面,有人把有它的回归叫"岭回归"(Ridge Regres ...

  8. 机器学习基础-23:矩阵理论(L0/L1/L2范数等)

    机器学习基础-23:矩阵理论(L0/L1/L2范数等) 机器学习原理与实践(开源图书)-总目录,建议收藏,告别碎片阅读! 线性代数是数学的一个分支,广泛应用于科学和工程领域.线性代数和矩阵理论是机器学 ...

  9. 机器学习中的范数规则化之(一)L0、L1与L2范数

    机器学习中的范数规则化之(一)L0.L1与L2范数 zouxy09@qq.com http://blog.csdn.net/zouxy09 参考资料:<机器学习中常常提到的正则化到底是什么意思? ...

最新文章

  1. 7-7 宇宙无敌大招呼 (C语言)
  2. 7Papers|斯坦福学者造出机器鸽;港科大等提出学生情绪分析新系统
  3. List集合add方法覆盖原来的内容解决办法
  4. 苏宁物流研发中心运输产品线产品总监钟翼翔:IOT技术的应用分析
  5. 从网上批量下载图片并重命名
  6. 爬虫多线程生产者与消费者
  7. 三方协议,档案,工龄,保险,户口,
  8. MDK编译生成bin文件
  9. redisTemplate获得key的过期时间方法
  10. 详解 Java NIO
  11. jQuery源码研究分析学习笔记-jQuery.fn.init()(五)
  12. php访问父类的所有属性,php – 在父类中使用$this仅在子类中显示父类属性
  13. 基于Yolov5目标检测的物体分类识别及定位(一) -- 数据集原图获取与标注
  14. 毕设题目:Matlab表盘识别
  15. SecureCRT下载安装与破解
  16. Modelsim下载、注册与添加仿真库(LATTICE DIAMOND)
  17. 服务器提供各种服务 包括文件服务器,服务器提供各种服务,包括文件服务器、邮件服务器、Web服务器等。...
  18. android rtmp 播放器下载,android rtmp player 除了播放一般的视频格式 - 下载 - 搜珍网...
  19. 2021程序员的出路在哪里
  20. vs2019新手怎么解决命名空间“”中不存在类型或命名空间名“”(是否缺少程序集引用?)问题全解

热门文章

  1. lenovo thinkpad e435 升级DDR3 1600 16G内存成功
  2. 嵌入式linux如何学?
  3. php安装geoip,GeoIP PHP扩展安装与配置
  4. ubuntu linux支持rndis,BBB 通过USB虚拟的RNDIS与PC的vmware ubuntu 进行网络通信
  5. tp6 中间件的常用操作
  6. 武汉地图json文件_echarts各省市地图js和json文件
  7. 腾讯云如何修改域名DNS服务器
  8. 前后端分离完成CRUD和SVN介绍
  9. Python课程内容回顾
  10. ios-马甲包混淆方法