原博客地址:http://www.360doc.com/content/17/0210/15/39751066_628049351.shtml

还有一个是吴恩达视频里面的内容,这位博主解释的:https://www.cnblogs.com/jianxinzhou/p/4083921.html

上学的时候,就一直很好奇,模式识别理论中,常提到的正则化到底是干什么的?渐渐地,听到的多了,看到的多了,再加上平时做东西都会或多或少的接触,有了一些新的理解。

1. 正则化的目的:防止过拟合!

2. 正则化的本质:约束(限制)要优化的参数。

关于第1点,过拟合指的是给定一堆数据,这堆数据带有噪声,利用模型去拟合这堆数据,可能会把噪声数据也给拟合了,这点很致命,一方面会造成模型比较复杂(想想看,本来一次函数能够拟合的数据,现在由于数据带有噪声,导致要用五次函数来拟合,多复杂!),另一方面,模型的泛化性能太差了(本来是一次函数生成的数据,结果由于噪声的干扰,得到的模型是五次的),遇到了新的数据让你测试,你所得到的过拟合的模型,正确率是很差的。

关于第2点,本来解空间是全部区域,但通过正则化添加了一些约束,使得解空间变小了,甚至在个别正则化方式下,解变得稀疏了。这一点不得不提到一个图,相信我们都经常看到这个图,但貌似还没有一个特别清晰的解释,这里我尝试解释一下,图如下:

不知道为什么不能上传图片,可以去原地址看吧

这里的w1,w2都是模型的参数,要优化的目标参数,那个红色边框包含的区域,其实就是解空间,正如上面所说,这个时候,解空间“缩小了”,你只能在这个缩小了的空间中,寻找使得目标函数最小的w1,w2。左边图的解空间是圆的,是由于采用了L2范数正则化项的缘故,右边的是个四边形,是由于采用了L1范数作为正则化项的缘故,大家可以在纸上画画,L2构成的区域一定是个圆,L1构成的区域一定是个四边形。

再看看那蓝色的圆圈,再次提醒大家,这个坐标轴和特征(数据)没关系,它完全是参数的坐标系,每一个圆圈上,可以取无数个w1,w2,这些w1,w2有个共同的特点,用它们计算的目标函数值是相等的!那个蓝色的圆心,就是实际最优参数,但是由于我们对解空间做了限制,所以最优解只能在“缩小的”解空间中产生。

蓝色的圈圈一圈又一圈,代表着参数w1,w2在不停的变化,并且是在解空间中进行变化(这点注意,图上面没有画出来,估计画出来就不好看了),直到脱离了解空间,也就得到了图上面的那个w*,这便是目标函数的最优参数。

对比一下左右两幅图的w*,我们明显可以发现,右图的w*的w1分量是0,有没有感受到一丝丝凉意?稀疏解诞生了!是的,这就是我们想要的稀疏解,我们想要的简单模型。

还记得模式识别中的剃刀原理不?倾向于简单的模型来处理问题,避免采用复杂的。

这里必须要强调的是,这两幅图只是一个例子而已,没有说采用L1范数就一定能够得到稀疏解,完全有可能蓝色的圈圈和四边形(右图)的一边相交,得到的就不是稀疏解了,这要看蓝色圈圈的圆心在哪里。

此外,正则化其实和“带约束的目标函数”是等价的,二者可以互相转换。关于这一点,我试着给出公式进行解释:

针对上图(左图),可以建立数学模型如下:

通过熟悉的拉格朗日乘子法(注意这个方法的名字),可以变为如下形式:

看到没,这两个等价公式说明了,正则化的本质就是,给优化参数一定约束,所以,正则化与加限制约束,只是变换了一个样子而已。

此外,我们注意,正则化因子,也就是里面的那个lamda,如果它变大了,说明目标函数的作用变小了,正则化项的作用变大了,对参数的限制能力加强了,这会使得参数的变化不那么剧烈(仅对如上数学模型),直接的好处就是避免模型过拟合。反之,自己想想看吧。。。

个人感觉,“正则化”这几个字叫的实在是太抽象了,会吓唬到人,其实真没啥。如果改成“限制化”或者是“约束化”,岂不是更好?

谈谈自己对正则化的一些理解相关推荐

  1. Java 面试经典题解析:谈谈你对 Java 平台的理解?

    作者|杨晓峰出处|极客时间<Java技术核心 36讲>专栏 从你接触 Java开发到现在,你对 Java最直观的印象是什么呢?是它宣传的 "Compile once, run a ...

  2. 谈谈我对Spring IOC的理解

    学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...

  3. 谈谈对java中分层的理解_让我们谈谈网页设计中的卡片设计

    谈谈对java中分层的理解 "I want a card", this is the first demand point that the customer said in th ...

  4. 原创专栏:谈谈我对评分模型的理解

    在准备给FAL的读者朋友们讲讲评分模型之前,我其实是不太想写有关评分模型的相关分享. 一是因为我开始创业后,自身更多关注企业管理与创新发展,评分模型技术关注度不再像以前那么紧密:还有另一个原因是,标准 ...

  5. 杨晓峰-java核心技术36讲(学习笔记)- 第1讲 | 谈谈你对Java平台的理解?

    杨晓峰-java核心技术36讲(学习笔记) 接下来我会分享杨晓峰-java核心技术36讲的学习笔记,内容较多,补充了其中一些牛人评论,相对详细(仅供个人学习记录整理,希望大家支持正版:https:// ...

  6. 第二季:7.怎么查看服务器默认的垃圾收集器是那个?生产上如何配置垃圾收集器的?谈谈你对垃圾收集器的理解?【Java面试题】

    第二季:7.怎么查看服务器默认的垃圾收集器是那个?生产上如何配置垃圾收集器的?谈谈你对垃圾收集器的理解?[Java面试题] 前言 推荐 7.怎么查看服务器默认的垃圾收集器是那个?生产上如何配置垃圾收集 ...

  7. 谈谈我对矩阵维度的理解

    谈谈我对矩阵维度的理解 前言 一.混淆点 二.代码实现 1.矩阵相乘 总结 前言 在机器学习中,遇到的数据都是以矩阵形式存储的,那么矩阵的维度经常在变化,在编写代码应该时刻注意矩阵的维度变化,不然在参 ...

  8. 你好,谈谈你对前端路由的理解

    Vue3 商城项目开源地址:https://github.com/newbee-ltd/newbee-mall-vue3-app Vue3 高仿微信记账本项目开源地址:https://github.c ...

  9. 【面试常问】谈谈你对集合框架的理解?

    谈谈你对集合框架的理解? 在面试中被问到这个问题该咋么回答呢?这个问题是我认为最难回答的一个问题,原因就他问的范围太大了不知道该咋么回答:就我而言遇到这种问题首先给他说个总的,从最大的开始说起,在说一 ...

最新文章

  1. pytorch垃圾分类
  2. inputAccessoryView,inputView
  3. 关于修改session的生存时间以及回收机制
  4. 利用Python3内置文档资源高效学习及官方中文文档
  5. k8s pod健康检查(存活、就绪检查):livenessProbe策略配置示例
  6. 关于 Qt 5,你所需要了解的基础知识
  7. .NET Core New csproj 如何发布可执行文件
  8. stopped状态的进程 top 命令_Linux 进程管理之四大名捕
  9. birt插件 web_好用的国产web报表软件非它莫属,轻松搞定复杂报表
  10. xgboost4j jar包下载
  11. 用VC实现洪水***程序
  12. 中缀/后缀/前缀表达式及相互转换的手算详细步骤及C代码实现
  13. 经典算法电话号码的字母组合
  14. java无侵入埋点 point_无侵入埋点
  15. 相关算法---字符串
  16. 变量定义和声明的区别(整理)
  17. 用Python制作一个简易的计时器
  18. 服务器正在扫描和修复驱动器,正在扫描和修复驱动器(C:):已完成100%,已经超过24小时...
  19. 玩吃鸡台式计算机配置,玩转绝地求生:大逃杀!i5-7400配GTX1060玩游戏的台式机配置推荐...
  20. 轻松搬运30斤货物,波士顿动力Handle再秀新技能

热门文章

  1. 笨方法学python - 04
  2. JSONField解决序列化与反序列化字段匹配问题
  3. AC日记——[ZJOI2009]狼和羊的故事 bzoj 1412
  4. Python的datetime
  5. eclipse导入项目发生的Android Private Libraries丢失
  6. 【leetcode刷题笔记】Sqrt(x)
  7. 基于visual Studio2013解决C语言竞赛题之1067间隔排序
  8. android activity四种加载模式
  9. Java基础之synchronized的讲解
  10. 靠谱测试人员需具备解决问题能力