正则化

面试——正则化

谁说我不能喝 提交于 2020-01-06 19:37:52
文章目录 什么是正则化?简述一下范数的意义是? L1,L2正则化的原理和区别?为什么L1正则化会产生稀疏解而L2正则化会产生平滑解? L1和L2除了正则化防止过拟合还有什么作用 L1正则不是连续可导的(L1正则怎么处理0点不可导的情形?)那么还能用梯度下降么,如果不能的话如何优化求解 Ridge和Lasso的实现,他们的区别是什么?分别是如何求解的? 什么是正则化?简述一下范数的意义是? 正则化就是结构风险最小化策略的实现,是在经验风险最小化的情况下加入一个正则化项或者罚项。 范数是一种用来度量某个向量空间(或矩阵)中的每个向量的长度或大小的手段。 L1,L2正则化的原理和区别?为什么L1正则化会产生稀疏解而L2正则化会产生平滑解? 正则化是结构风险最小化策略的实现,L1和L2正则化属于正则化手段中的两种实现方式,L1正则化是在损失函数中加入 参数向量中各个元素的绝对值之和作为损失函数的惩罚项的,L2正则化是在损失函数中加入 参数向量中各个元素的平方,求和,然后再求平方根作为损失函数的惩罚项的。这就是二者的原理与区别。 L1正则化代表的约束条件的多维空间是超立方体和坐标轴存在很多“角”交点,目标函数大部分时候会在“角”的地方和约束条件相交,所以L1正则化容易产生稀疏的参数向量,而L2正则化是一个超球体,因为没有“角”交点

python_Lasso _线性模型_L1正则化

雨燕双飞 提交于 2020-01-03 05:09:04
python_Lasso _线性模型_L1 正则化 Lasso。与岭回归相同,使用 lasso 也是约束系 # 数使其接近于 0,但用到的方法不同,叫作 L1 正则化。 L1 正则化的结果是,使用 lasso 时 某些系数刚好为 0 这样模型更容易解释,也可以呈现模型最重要的特征 # 4. lasso # 除了 Ridge,还有一种正则化的线性回归是 Lasso。与岭回归相同,使用 lasso 也是约束系 # 数使其接近于 0,但用到的方法不同,叫作 L1 正则化。8 L1 正则化的结果是,使用 lasso 时 # 某些系数刚好为 0。这说明某些特征被模型完全忽略。这可以看作是一种自动化的特征选 # 择。某些系数刚好为 0,这样模型更容易解释,也可以呈现模型最重要的特征 ​ from sklearn . linear_model import Lasso ​ lasso = Lasso ( ) . fit ( X_train , y_train ) print ( "Training set score: {:.2f}" . format ( lasso . score ( X_train , y_train ) ) ) print ( "Test set score: {:.2f}" . format ( lasso . score ( X_test , y_test ) ) )

L2 正则化

喜你入骨 提交于 2020-01-02 12:02:48
概述 在训练数据不够多时,或者overtraining时,常常会导致overfitting(过拟合)。其直观的表现如下图所示,随着训练过程的进行,模型复杂度增加,在training data上的error渐渐减小,但是在验证集上的error却反而渐渐增大——因为训练出来的网络过拟合了训练集,对训练集外的数据却不工作。 为什么将数据集分为三部分:训练集,开发集,测试集。 开发集就是用来避免过拟合的,训练过程中,通常用它来确定一些超参数。为什么不直接使用测试集,因为如果在测试集上做这些,那么随着训练的进行,我们的网络实际上就是在一点一点地overfitting我们的测试集,导致最后得到的测试集正确率没有任何参考意义。 避免过拟合的方法 1.early stopping 2.增加数据 3.L2正则化 4.dropout正则化 当发生过拟合时,也就是方差过大时,使用上述方法。但在偏差过大时,需要使用增大网络过着增加训练时间等方法。 L2正则化 L2正则化就是在原本的损失函数的基础上增加了所有层所有参数的平方和。λ就是正则项系数,权衡正则项与原损失函数项的比重。系数1/2主要是为了后面求导的结果方便,后面那一项求导会产生一个2,与1/2相乘刚好凑整。 对上式求导得到: 在不使用L2正则化时,求导结果中w前系数为1,现在w前面系数为 1−αλ/m ,因为α、λ、m都是正的,所以 1−ηλ

如何防止过拟合

前提是你 提交于 2020-01-01 21:08:47
如何防止过拟合 通常过拟合由以下三种原因产生:1. 假设过于复杂;2. 数据存在很多噪音;3. 数据规模太小。 过拟合的解决方法通常有:1. early stopping;2. 数据集扩增;3. 正则化;4. Dropout。 正则化方法: 正则化是指在优化目标函数或代价函数是,在目标函数后面加上一个正则项。正则项通常有L1正则项和L2正则项。 L1正则项是为了使得那些原先处于零(即|w|≈0)附近的参数w往零移动,使得部分参数为零,从而降低模型的复杂度 L2正则是基于L2范数,尽量使全部特征的权值变小, 每个特征都用到 参考: https://blog.csdn.net/weixin_37933986/article/details/69681671 来源: CSDN 作者: 御剑归一 链接: https://blog.csdn.net/wj1298250240/article/details/103792854

从头学pytorch(六):权重衰减

蹲街弑〆低调 提交于 2019-12-28 20:49:00
深度学习中常常会存在过拟合现象,比如当训练数据过少时,训练得到的模型很可能在训练集上表现非常好,但是在测试集上表现不好. 应对过拟合,可以通过数据增强,增大训练集数量.我们这里先不介绍数据增强,先从模型训练的角度介绍常用的应对过拟合的方法. 权重衰减 权重衰减等价于 \(L_2\) 范数正则化(regularization)。正则化通过为模型损失函数添加惩罚项使学出的模型参数值较小,是应对过拟合的常用手段。我们先描述 \(L_2\) 范数正则化,再解释它为何又称权重衰减。 \(L_2\) 范数正则化在模型原损失函数基础上添加 \(L_2\) 范数惩罚项,从而得到训练所需要最小化的函数。 \(L_2\) 范数惩罚项指的是模型权重参数每个元素的平方和与一个正的常数的乘积。 线性回归一文 中的线性回归损失函数 \[ \ell(w_1, w_2, b) = \frac{1}{n} \sum_{i=1}^n \frac{1}{2}\left(x_1^{(i)} w_1 + x_2^{(i)} w_2 + b - y^{(i)}\right)^2 \] 为例,其中 \(w_1, w_2\) 是权重参数, \(b\) 是偏差参数,样本 \(i\) 的输入为 \(x_1^{(i)}, x_2^{(i)}\) ,标签为 \(y^{(i)}\) ,样本数为 \(n\) 。将权重参数用向量 \(

逻辑回归 画正则化C曲线

依然范特西╮ 提交于 2019-12-26 16:44:48
通过正则化C曲线进行可视化调参, 选择合适的惩罚项 导库 from sklearn . linear_model import LogisticRegression as LR from sklearn . datasets import load_breast_cancer import numpy as np import matplotlib . pyplot as plt from sklearn . model_selection import train_test_split from sklearn . metrics import accuracy_score 导数据: sklearn的乳腺癌数据 data = load_breast_cancer ( ) 正则化 X = data . data y = data . target data . data . shape #查看行列数 lrl1 = LR ( penalty = "l1" , solver = "liblinear" , C = 0.5 , max_iter = 1000 ) lrl2 = LR ( penalty = "l2" , solver = "liblinear" , C = 0.5 , max_iter = 1000 ) #L1 和 L2 正则化 #逻辑回归的重要属性coef_

过拟合与欠拟合

蓝咒 提交于 2019-12-25 03:15:32
过拟合与欠拟合 过拟合与欠拟合图解 欠拟合:个人理解就是由于数据少、正则化太厉害、模型复杂度太简单等原因,导致模型没有学习到足够的规律,准确率与模型可达到的准确率差距较大。但是模型在训练集和测试集的曲线趋势是正常收敛的。 解决方法 为有: 增加特征,寻找与标签相关性较大的特征,在保证特征没有共线性的前提下,增加特征的数量; 减少正则化,正则化目的是在牺牲训练集上部分准确率的前提下,使得模型的泛化能力增强。在模型未过拟合前,可以适当降低正则化的程度,提高准确率; 增加模型复杂度或选择更复杂的模型。比如非线性分类问题,如果选择了简单的线性分类器,准确率较低,如果选择神经网络等非线性算法,则会有较好的拟合效果。 过拟合:个人理解就是模型复杂度过高、特征过多问题、缺乏正则化等原因,导致模型在训练集学习到了太多的只有训练集特有的规律,使得模型在训练集准确率超高,但在测试集上预测不准确的现象,模型的泛化能力变差。 解决方法 : 最终目的就是要弱化模型学到的训练集里的特有规律。 增加正则化,正则化可以弱化训练集里的特有规律,使得模型泛化能力提高,但在训练集的准确率稍有降低。 增加训练样本数量,使得样本集尽量是完备的,可以代表当前的业务尝尽。 减少特征,在尽量保证剩余特征含有更多信息的前提下,减少特征的数量,可以适当提高模型的泛化能力,比如使用PCA降维。 考虑是否可以更换为更简单的算法来建模。

Xgboost 得调参思路

一笑奈何 提交于 2019-12-24 09:10:36
文章目录 xgboost的优点 参数调试 通用参数 Booster 参数 目标参数 大致步骤 xgboost的优点 1、正则化 GBM(Gradient Boosting Machine)的实现没有像XGBoost这样的正则化步骤,因此很多时候过拟合处理比较麻烦,而XGBoost以“正则化提升(regularized boosting)”技术而闻名。 2、并行处理 XGBoost支持并行处理,相比GBM有了速度上的巨大提升。 注:Boosting还是串行的,并行的表现在于数据预处理后保存在block中,避免每次调用都进行一次预处理 3、兼容性强 可以处理底层的numpy和scipy数据,特别对于部分大数据集可以处理稀疏矩阵直接进行训练。 4、内置交叉验证 XGBoost允许在每一轮Boosting迭代中使用交叉验证。因此,可以方便地获得最优Boosting迭代次数。GBM的网格搜索有个最大弊端,只能在用户给出的范围内进行寻值。 5、灵活性强 (1)允许用户定义自定义优化目标和评价标准,它对模型的使用开辟了一个全新的维度,用户的处理不会受到任何限制。 (2)可以自动处理缺失值,避免了太过繁琐的预处理,用户需要提供一个和其它样本不同的值,然后把它作为一个参数传进去,以此来作为缺失值的取值。并且XGBoost在不同节点遇到缺失值时采用不同的处理方法,而且会学习未来遇到缺失值时的处理方法。

关于梯度爆炸和梯度消失的详解(转载)

会有一股神秘感。 提交于 2019-12-24 04:02:06
转载链接: https://www.jianshu.com/p/3f35e555d5ba 1.为什么使用梯度下降来优化神经网络参数? 反向传播(用于优化神网参数) :根据损失函数计算的误差通过反向传播的方式,指导深度网络参数的更新优化。 采取反向传播的原因:首先,深层网络由许多线性层和非线性层堆叠而来,每一层非线性层都可以视为是一个非线性函数 (非线性来自于非线性激活函数),因此整个深度网络可以视为是一个复合的非线性多元函数。 我们最终的目的是希望这个非线性函数很好的完成输入到输出之间的映射,也就是找到让损失函数取得极小值。所以最终的问题就变成了一个寻找函数最小值的问题,在数学上,很自然的就会想到使用梯度下降来解决。 2.梯度消失、爆炸会带来哪些影响 举个例子,对于一个含有三层隐藏层的简单神经网络来说, 当梯度消失发生时,接近于输出层的隐藏层由于其梯度相对正常,所以权值更新时也就相对正常,但是当越靠近输入层时,由于梯度消失现象,会导致靠近输入层的隐藏层权值更新缓慢或者更新停滞。这就导致在训练时,只等价于后面几层的浅层网络的学习。 3.产生的原因 以最简单的网络结构为例,假如有三个隐藏层,每层的神经元个数都是1,且对应的非线性函数为 (其中 为某个激活函数)如下图: 现在假设我们需要更新参数 ,那么我们就要求出损失函数对参数 的导数 而对于激活函数,之前一直使用Sigmoid函数

基础 --- > 正则化

孤街醉人 提交于 2019-12-23 05:33:50
文章目录 L1, L2正则化 贝叶斯先验分布 结构风险最小化 dropout earlystopping batch normalization 数据增强 权值共享 增加噪声 对抗学习 模型组合 L1, L2正则化 贝叶斯先验分布 最大似然估计 如果有数据集(X, Y),并且Y是有白噪音(就是测量的Y与真实的 Y r e a l Y_{real} Y r e a l ​ 有均值为0的高斯分布误差),目的是新产生的X来得到Y,线性模型表示有: f ( X ) = ∑ i ( x i θ i ) + ϵ = X θ T + ϵ f(X) = \sum_i(x_i\theta_i) + \epsilon= X\theta^T + \epsilon f ( X ) = i ∑ ​ ( x i ​ θ i ​ ) + ϵ = X θ T + ϵ 其中 X = ( x 1 , x 2 , . . . , X n ) , ϵ X=(x_1,x_2,...,X_n),\epsilon X = ( x 1 ​ , x 2 ​ , . . . , X n ​ ) , ϵ 是白噪音,即 ϵ ∼ N ( 0 , δ 2 ) \epsilon \sim N(0, \delta^2) ϵ ∼ N ( 0 , δ 2 ) 。对于一数据集 ( X i , Y i ) (X_i, Y_i) ( X i ​ , Y