机器学习入门13 - 正则化:稀疏性 (Regularization for Sparsity)
原文链接: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)的更多相关文章
- 机器学习入门10 - 正则化:简单性(Regularization for Simplicity)
原文链接:https://developers.google.com/machine-learning/crash-course/regularization-for-simplicity 正则化指的 ...
- 机器学习入门 - Google机器学习速成课程 - 笔记汇总
机器学习入门 - Google机器学习速成课程 https://www.cnblogs.com/anliven/p/6107783.html MLCC简介 前提条件和准备工作 完成课程的下一步 机器学 ...
- [转]MNIST机器学习入门
MNIST机器学习入门 转自:http://wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/mnist_beginners.html?plg_ ...
- tensorfllow MNIST机器学习入门
MNIST机器学习入门 这个教程的目标读者是对机器学习和TensorFlow都不太了解的新手.如果你已经了解MNIST和softmax回归(softmax regression)的相关知识,你可以阅读 ...
- Andrew Ng机器学习课程13
Andrew Ng机器学习课程13 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 引言:主要从一般的角度介绍EM算法及其思想,并推导了EM算法的收敛性.最后 ...
- TensorFlow.NET机器学习入门【4】采用神经网络处理分类问题
上一篇文章我们介绍了通过神经网络来处理一个非线性回归的问题,这次我们将采用神经网络来处理一个多元分类的问题. 这次我们解决这样一个问题:输入一个人的身高和体重的数据,程序判断出这个人的身材状况,一共三 ...
- L1、L2范式及稀疏性约束
L1.L2范式及稀疏性约束 假设需要求解的目标函数为: E(x) = f(x) + r(x) 其中f(x)为损失函数,用来评价模型训练损失,必须是任意的可微凸函数,r(x)为规范化约束因子,用来对模型 ...
- Azure机器学习入门(三)创建Azure机器学习实验
在此动手实践中,我们将在Azure机器学习Studio中一步步地开发预测分析模型,首先我们从UCI机器学习库的链接下载普查收入数据集的样本并开始动手实践: http://archive.ics.uci ...
- web安全之机器学习入门——3.1 KNN/k近邻
目录 sklearn.neighbors.NearestNeighbors 参数/方法 基础用法 用于监督学习 检测异常操作(一) 检测异常操作(二) 检测rootkit 检测webshell skl ...
随机推荐
- go的包下载失败解决方案
包被墙的方案 1 翻啊的墙 2 gopm 3 https://github.com/golang/net 4 使用国内网站打包 5 export GOPROXY=https://goproxy.io
- Electorn(桌面应用)自动化测试之Java+selenium实战例子
基于electorn的桌面应用,网上相关资料较少.所有记录一下.使用java+selenium+testng对该类型应用的自动化测试方法. 代码样例 package com.contract.web. ...
- 密码与安全新技术专题之AI与密码
20189217 2018-2019-2 <密码与安全新技术专题>第五周作业 课程:<密码与安全新技术专题> 班级: 1892 姓名: 李熹桥 学号:20189214 上课教师 ...
- 对Python选修课的期望
作为一个之前完全没有接触过任何计算机语言的人我对于Python完完全全是个小白,那么我就以一个菜鸟的角度来谈谈我对这门选修课的期望吧. ...
- Jquery 数组操作大全【转载】
转载于:https://www.jb51.net/article/43164.htm 1. $.each(array, [callback]) 遍历[常用] 解释: 不同于例遍 jQuery 对象的 ...
- P3805 【模板】manacher算法
#include <bits/stdc++.h> #define up(i,l,r) for(register int i = (l);i <= (r); i++) #define ...
- Paper | 量化CV任务的关联性,寻找最佳迁移策略(Taskonomy)
目录 1. 问题 2. 方法 3. 实验设计 3.1. 解决词典内部(一组已知)任务的能力 3.2. 解决新任务(少量标记数据)的能力 4. 讨论和启发 论文:Taskonomy: Disentang ...
- python操作Redis安装、支持存储类型、普通连接、连接池
一.python操作redis安装和支持存储类型 安装redis模块 pip3 install redis 二.Python操作Redis之普通连接 redis-py提供两个类Redis和Strict ...
- 【转】python3 内循环中遍历map,遍历一遍后再次进入内循环,map为空
今天在使用python map的过程中,发现了一个奇怪问题,map遍历完成后,再次访问map,发现map为空了,特记录下来,以备日后查看. 如下代码,期望的结果是每次从外循环进入内循环,map都从头开 ...
- oracle RAC
RAC安装步骤 1 配置共享存储 2 Grid Infrastructure软件的安装,GI主要用于cluster ,storage的管理 3 安装数据库软件 ...