《Deep Learning》学习3——L2、L1正则化

1. 容量、过拟合、欠拟合(为什么需要正则化?)

机器学习两个重要过程分别是训练和预测,在训练过程中,学习的目标是降低训练误差,然而,降低训练误差只是为了达到目标采取的手段,真正的目标是预测,是预测误差,也称泛化误差很小。泛化的含义是在先前未观测到的输入上表现良好的能力。
训练后可能达到的效果有三种:
A. 训练误差大,泛化误差也大
B. 训练误差小,泛化误差大
C. 训练误差小,泛化误差也小
第一种是欠拟合、第二种是过拟合,第三种才是我们希望的状态。
模型的容量是指模型拟合各种函数的能力。训练得到的模型容量是表示容量,而预测表征的容量才是有效容量。两个容量都偏小是欠拟合状态,算法迭代不够,学习不到位;训练误差小,而泛化误差大是过拟合状态,迭代过头了,或者数据集太小,参数拟合太细节化了。
解决欠拟合需要增加参数或者增加迭代次数;解决过拟合需要弱化一些次要参数或者丰富训练数据集。
个人总结了解决过拟合的方法有:增加数据集数量、对训练数据做数据增强、参数惩罚、dropout,这一系列方法都能降低泛化误差。修改学习算法,降低泛化误差而非训练误差的过程称为正则化。

2. L2参数正则化

参数范数惩罚是在目标函数上添加一个惩罚项,组成新的目标函数进行优化。为什么这样做能起到正则化的作用呢?推导如下:
L2参数正则化添加的惩罚项 是w的二阶范数平方乘惩罚系数

未加惩罚项前的目标函数 ,假设 为最优目标函数,此时,在 处针对w做 的二阶泰勒展示,可得:

梯度为

这里需要注意的是, 表示所有的参数,包括权重w和偏执b,但是只对权重做正则化,因为每一个偏执是单一变量,不对其做正则化也不会导致太大方差,做了反而可能出现欠拟合。

加入新的目标函数为

梯度为

假设 为最优参数,在最优参数位置梯度为0,因此

转换后

H是目标函数在 处的Hessian矩阵,H为实对称矩阵,因此,H可以分解成 ,且Q为标准正交基,因此,且,

根据特征分解的性质, 是特征值组成的对角矩阵(diag(λ1,λ2,…)),而I是单位矩阵,因此:

对于特征值以及其对应的特征向量,该维权重

因此,权重衰减是按照H的特征向量方向,按照的比例缩放。特征分解中已经提到特征值越大,说明该维特征对模型的影响越明显,越主要,而越大,越接近于1,该维权重保存越完整,越小,该维特征越次要,越接近于0,权重衰减越厉害。
因此,L2的目标是对能显著减小目标函数方向上的权重保留完整,在无助于目标减小的方向上权重衰减明显。

3. L1正则化

如上L2权重衰减的理论依据很充分,但是L2几乎保留了所有的参数,而L1正则化能让权重稀疏化。L1正则化是在目标函数上加w的L1范数组成新的目标函数。新的目标函数为

其中
对新的目标函数进行泰勒二次近似,可得

对 梯度为
在最小目标函数处

由于权重大于等于0,因此



也就是设定了一个界限,小于这个界限的权重全部衰减为0,大于这个界限的权重取高出界限的部分为新的权重。为Hessian矩阵的对i行i列,也就是目标函数对求二阶导。
权重矩阵的稀疏性由α控制,α越大,被衰减为0的权重越多,矩阵稀疏性越强,α越小,保留下来的权重越多。

无论是L2还是L1,其中的α都是模型的超参数,超参数是非训练得到的,因此,它可以自定义,也可以通过某种规则制定或调解,但调节过程在训练之外。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


jquery.validate使用攻略(表单校验) 目录 jquery.validate使用攻略1 第一章 jquery.validate使用攻略1 第二章 jQuery.validate.js API7 Custom selectors7 Utilities8 Validato
/\s+/g和/\s/g的区别 正则表达式/\s+/g和/\s/g,目的均是找出目标字符串中的所有空白字符,但两者到底有什么区别呢? 我们先来看下面一个例子: let name = 'ye wen jun';let ans = name.replace(/\s/g, '&#3
自整理几个jquery.Validate验证正则: 1. 只能输入数字和字母 /^[0-9a-zA-Z]*$/g jQuery.validator.addMethod("letters", function (value, element) { return this.optio
this.optional(element)的用法 this.optional(element)是jquery.validator.js表单验证框架中的一个函数,用于表单控件的值不为空时才触发验证。 简单来说,就是当表单控件值为空的时候不会进行表单校验,此函数会返回true,表示校验通过,当表单控件
jQuery.validate 表单动态验证 实际上jQuery.validate提供了动态校验的方法。而动态拼JSON串的方式是不支持动态校验的。牺牲jQuery.validate的性能优化可以实现(jQuery.validate的性能优化见图1.2 jQuery.validate源码 )。 也可
自定义验证之这能输入数字(包括小数 负数 ) <script type="text/javascript"> function onlyNumber(obj){ //得到第一个字符是否为负号 var t = obj.value.charAt(0); //先把非数字的都
// 引入了外部的验证规则 import { validateAccountNumber } from "@/utils/validate"; validator.js /*是否合法IP地址*/ export function validateIP(rule, value,cal
VUE开发--表单验证(六十三) 一、常用验证方式 vue 中表单字段验证的写法和方式有多种,常用的验证方式有3种: data 中验证 表单内容: <!-- 表单 --> <el-form ref="rulesForm" :rules="formRul
正则表达式 座机的: 例子: 座机有效写法: 0316-8418331 (010)-67433539 (010)67433539 010-67433539 (0316)-8418331 (0316)8418331 正则表达式写法 0\d{2,3}-\d{7,8}|\(?0\d{2,3}[)-]?\d
var reg = /^0\.[1-9]{0,2}$/;var linka = 0.1;console.log (reg.test (linka)); 0到1两位小数正则 ^(0\.(0[1-9]|[1-9]{1,2}|[1-9]0)$)|^1$ 不含0、0.0、0.00 // 验证是否是[1-10
input最大长度限制问题 <input type="text" maxlength="5" /> //可以 <input type="number" maxlength="5" /> //没有效
js输入验证是否为空、是否为null、是否都是空格 目录 1.截头去尾 trim 2.截头去尾 会去掉开始和结束的空格,类似于trim 3.会去掉所有的空格,包括开始,结束,中间 1.截头去尾 trim str=str.trim(); // 强烈推荐 最常用、最实用 or $.trim(str);
正则表达式语法大全 字符串.match(正则):返回符合的字符串,若不满足返回null 字符串.search(正则):返回搜索到的位置,若非一个字符,则返回第一个字母的下标,若不匹配则返回-1 字符串.replace(正则,新的字符串):找到符合正则的内容并替换 正则.test(字符串):在字符串中
正整数正则表达式正数的正则表达式(包括0,小数保留两位): ^((0{1}.\d{1,2})|([1-9]\d.{1}\d{1,2})|([1-9]+\d)|0)$正数的正则表达式(不包括0,小数保留两位): ^((0{1}.\d{1,2})|([1-9]\d.{1}\d{1,2})|([1-9]+
JS 正则验证 test() /*用途:检查输入手机号码是否正确输入:s:字符串返回:如果通过验证返回true,否则返回false /function checkMobile(s){var regu =/[1][3][0-9]{9}$/;var re = new RegExp(regu);if (r
请输入保留两位小数的销售价的正则: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/ 1.只能输入英文 <input type="text" onkeyup="value
判断价格的正则表达式 价格的正则表达式 /(^[1-9]\d*(\.\d{1,2})?$)|(^0(\.\d{1,2})?$)/; 1 解析:价格符合两种格式 ^ [1-9]\d*(.\d{1,2})?$ : 1-9 开头,后跟是 0-9,可以跟小数点,但小数点后要带上 1-2 位小数,类似 2,2
文章浏览阅读106次。这篇文章主要介绍了最实用的正则表达式整理,比如校验邮箱的正则,号码相关,数字相关等等,本文给大家列举的比较多,需要的朋友可以参考下。_/^(?:[1-9]d*)$/ 手机号
文章浏览阅读1.2k次。4、匹配中的==、an==、== an9、i9 == "9i"和99p==请注意下面这部分的作用,它在匹配中间内容的时候排除了说明:当html字符串如下时,可以匹配到两处,表示匹配的字符串不包含and且不包含空白字符。说明:在上面的正则表达式中,_gvim正则表达式匹配不包含某个字符串
文章浏览阅读897次。【代码】正则表达式匹配a标签的href。_auto.js 正则匹配herf