原文链接:https://developers.google.com/machine-learning/crash-course/regularization-for-sparsity/

1- L₁正则化

稀疏矢量通常包含许多维度。创建特征组合会导致包含更多维度。
由于使用此类高维度特征矢量,因此模型可能会非常庞大,并且需要大量的 RAM。

在高维度稀疏矢量中,最好尽可能使权重正好降至 0。
正好为 0 的权重基本上会使相应特征从模型中移除。
将特征设为 0 可节省 RAM 空间,且可以减少模型中的噪点。

通过添加适当选择的正则化项,最好情况下,可以使无意义维度的权重正好降至 0,就能够避免在推理时支付这些模型系数的存储费用。
可以使用 L1 正则化使模型中很多信息缺乏的系数正好为 0,从而在推理时节省 RAM。
注意:L2 正则化可以使权重变小,但是并不能使它们正好为 0.0,因此L2 正则化并不适合此场景。

2- L1和L2正则化

L2 和 L1 采用不同的方式降低权重:

  • L2 会降低权重2
  • L1 会降低 |权重|

因此,L2 和 L1 具有不同的导数:

  • L2 的导数为 2 * 权重
  • L1 的导数为 k(一个常数,其值与权重无关)

可以将 L2 的导数的作用理解为每次移除权重的 x%。
对于任意数字,即使按每次减去 x% 的幅度执行数十亿次减法计算,最后得出的值也绝不会正好为 0。总而言之,L2 通常不会使权重变为 0。

可以将 L1 的导数的作用理解为每次从权重中减去一个常数。
不过,由于减去的是绝对值,L1 在 0 处具有不连续性,这会导致与 0 相交的减法结果变为 0。
例如,如果减法使权重从 +0.1 变为 -0.2,L1 便会将权重设为 0。就这样,L1 使权重变为 0 了。

注意:以上说明适用于一维模型。

3- 理解

问题

1- 假设某个线性模型具有 100 个输入特征:其中 10 个特征信息丰富,另外 90 个特征信息比较缺乏。
假设所有特征的值均介于 -1 和 1 之间。以下哪些陈述属实?

    • L1 正则化会使大多数信息缺乏的权重正好为 0.0。
    • L1 正则化可能会使信息丰富的特征的权重正好为 0.0。
    • L1 正则化会使很多信息缺乏的权重接近于(但并非正好是)0.0。

2- 假设某个线性模型具有 100 个输入特征,这些特征的值均介于 -1 到 1 之间:

    • 其中 10 个特征信息丰富。
    • 另外 90 个特征信息比较缺乏。

哪种类型的正则化会产生较小的模型?

    • L1 正则化。
    • L2 正则化。

答案

1-
 L1 正则化会使大多数信息缺乏的权重正好为 0.0。--- 正确
 lambda 充分的 L1 正则化往往会使信息缺乏的权重正好为 0.0。这样,这些信息缺乏的特征便会远离模型。

 L1 正则化可能会使信息丰富的特征的权重正好为 0.0。--- 正确
 请注意,L1 正则化可能会使以下类型的特征的权重正好为 0:
      信息缺乏的特征。
      不同程度的信息丰富的特征。
      与其他类似的信息丰富特征密切相关的信息丰富特征。

L1 正则化会使很多信息缺乏的权重接近于(但并非正好是)0.0。--- 错误
 一般来说,lambda 充分的 L1 正则化往往会使信息缺乏的特征的权重正好为 0.0。
 与 L2 正则化不同,无论权重距 0.0 有多远,L1 正则化都很难使权重降低但不为 0.0。

2-
L1 正则化。--- 正确
L1 正则化往往会减少特征的数量。也就是说,L1 正则化常常会减小模型的大小。

L2 正则化。--- 错误
L2 正则化很少会减少特征的数量。 也就是说,L2 正则化很少会减小模型的大小。

4- 练习

xxx

5- 关键词

稀疏特征 (sparse feature)
一种特征向量,其中的大多数值都为 0 或为空。
例如,某个向量包含一个为 1 的值和一百万个为 0 的值,则该向量就属于稀疏向量。
再举一个例子,搜索查询中的单词也可能属于稀疏特征 - 在某种指定语言中有很多可能的单词,但在某个指定的查询中仅包含其中几个。
与密集特征相对。

特征组合 (feature cross)
通过将单独的特征进行组合(求笛卡尔积)而形成的合成特征。特征组合有助于表达非线性关系。

凸优化 (convex optimization)
使用数学方法(例如梯度下降法)寻找凸函数最小值的过程。
机器学习方面的大量研究都是专注于如何通过公式将各种问题表示成凸优化问题,以及如何更高效地解决这些问题。

L1 正则化 (L₁ regularization)
一种正则化,根据权重的绝对值的总和来惩罚权重。
在依赖稀疏特征的模型中,L1 正则化有助于使不相关或几乎不相关的特征的权重正好为 0,从而将这些特征从模型中移除。与 L2 正则化相对。

L2 正则化 (L₂ regularization)
一种正则化,根据权重的平方和来惩罚权重。
L2 正则化有助于使离群值(具有较大正值或较小负值)权重接近于 0,但又不正好为 0。(与 L1 正则化相对。)
在线性模型中,L2 正则化始终可以改进泛化。

独热编码 (one-hot encoding)
一种稀疏向量,其中:

    • 一个元素设为 1。
    • 所有其他元素均设为 0。

独热编码常用于表示拥有有限个可能值的字符串或标识符。
例如,假设某个指定的植物学数据集记录了 15000 个不同的物种,其中每个物种都用独一无二的字符串标识符来表示。
在特征工程过程中,可能需要将这些字符串标识符编码为独热向量,向量的大小为 15000。

权重 (weight)
线性模型中特征的系数,或深度网络中的边。
训练线性模型的目标是确定每个特征的理想权重。
如果权重为 0,则相应的特征对模型来说没有任何贡献。

机器学习入门13 - 正则化:稀疏性 (Regularization for Sparsity)的更多相关文章

  1. 机器学习入门10 - 正则化:简单性(Regularization for Simplicity)

    原文链接:https://developers.google.com/machine-learning/crash-course/regularization-for-simplicity 正则化指的 ...

  2. 机器学习入门 - Google机器学习速成课程 - 笔记汇总

    机器学习入门 - Google机器学习速成课程 https://www.cnblogs.com/anliven/p/6107783.html MLCC简介 前提条件和准备工作 完成课程的下一步 机器学 ...

  3. [转]MNIST机器学习入门

    MNIST机器学习入门 转自:http://wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/mnist_beginners.html?plg_ ...

  4. tensorfllow MNIST机器学习入门

    MNIST机器学习入门 这个教程的目标读者是对机器学习和TensorFlow都不太了解的新手.如果你已经了解MNIST和softmax回归(softmax regression)的相关知识,你可以阅读 ...

  5. Andrew Ng机器学习课程13

    Andrew Ng机器学习课程13 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 引言:主要从一般的角度介绍EM算法及其思想,并推导了EM算法的收敛性.最后 ...

  6. TensorFlow.NET机器学习入门【4】采用神经网络处理分类问题

    上一篇文章我们介绍了通过神经网络来处理一个非线性回归的问题,这次我们将采用神经网络来处理一个多元分类的问题. 这次我们解决这样一个问题:输入一个人的身高和体重的数据,程序判断出这个人的身材状况,一共三 ...

  7. L1、L2范式及稀疏性约束

    L1.L2范式及稀疏性约束 假设需要求解的目标函数为: E(x) = f(x) + r(x) 其中f(x)为损失函数,用来评价模型训练损失,必须是任意的可微凸函数,r(x)为规范化约束因子,用来对模型 ...

  8. Azure机器学习入门(三)创建Azure机器学习实验

    在此动手实践中,我们将在Azure机器学习Studio中一步步地开发预测分析模型,首先我们从UCI机器学习库的链接下载普查收入数据集的样本并开始动手实践: http://archive.ics.uci ...

  9. web安全之机器学习入门——3.1 KNN/k近邻

    目录 sklearn.neighbors.NearestNeighbors 参数/方法 基础用法 用于监督学习 检测异常操作(一) 检测异常操作(二) 检测rootkit 检测webshell skl ...

随机推荐

  1. Chapter_4_JAVA作业

    一.类的封装,继承与多态 1.课前预习 1.1 举列现实生活中的封装,以及简述在程序中什么是属性的封装? 1.1.1 将东西捆绑在一起,如集成芯片:高压电线等等 1.1.2 封装就是将属性私有化,提供 ...

  2. php实现下载模板与上传模板解析

    <? //下载模板的请求 if(isset($_GET['action']) && $_GET['action'] =='down_group_excel'){ $code = ...

  3. 移动端使用fastclick时,模拟原生浏览器对象

    移动浏览器原生click事件有300ms的延时,这是浏览器为了区分到底是双击还是单击事件.(实际上有些移动浏览器不支持双击事件.PC版chrome在手机模式下,当禁止用户双击缩放页面时(即有viewp ...

  4. python 调用shell hive sql

    def generate_csv_source(data_file): #判断文件是否存在 if not os.path.exists(data_file): # 拉取hive表数据 cmd_sql ...

  5. docker服务各个模块

    docker容器官网:https://hub.docker.com/ 一.centos7.4中指定安装docker版本 1)默认yum源安装的docker版本为docker1.3.性能偏低,不支持k8 ...

  6. 剑指offer PART 2

    剑指offer PART 2 书点击自取 提取码: njku 标签(空格分隔): 笔记 C++知识点: 1.面向对象的特性 2.构造函数 3.析构函数 4.动态绑定 5.常用的设计模式 6.UML图 ...

  7. 十分钟带你读懂《增长黑客》zz

    背景 “If you are not growing, then you are dying. ”(如果企业不在增长,那么就是在衰亡!) 这句话适用于企业,也适用于个人.人生毕竟不像企业,是非成败,似 ...

  8. SQL Server数据库设置自动备份策略

    一. 简单介绍 SQL Server自带的维护计划是一个非常有用的维护工具,能够完成大部分的数据库的维护任务. 数据库的备份也是日常工作中非常重要的一个环节.备份的方法非常的多. 今天给大家介绍最简单 ...

  9. MySQL的计算时间差

    一.MySQL计算两个日期的时间差 TIMESTAMPDIFF(DAY, datetime1, datetime2); 第一个参数为比较类型,有day, month, year, hour等: 第二个 ...

  10. 可遇不可求的Question之Mysql在不重启服务的情况下修改运行时变量篇

    比方说在一些实际生产环境中,想改个MYSQL的配置,但是又不想停止服务重起MYSQL,有什么办法呢?使用SET命令可以做到,请看下面几个例子: 1.设置key_buffer_size的大小为10M. ...