精华内容
下载资源
问答
  • 主要介绍了TensorFlow keras卷积神经网络 添加L2正则化方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 该代码是主要基于tensorflow框架下的逻辑回归模型,使用经典的梯度下降算法来最小化误差,加了L2正则化以减小过拟合。主要是针对没有测试集的数据,利用五折交叉验证并重复十次来计算AUC值,以评估模型。
  • L2正则化python实现案例(附代码),含图形展示,对于正则化理解又直观帮助
  • 吴恩达深度学习Python完整代码,包含无正则化、L2正则化及Dropout三种情况并包含绘制边缘曲线,跑通视频已在压缩包,更加直观的证明本程序跑通并实现哪些功能
  • 搭建完整的神经网络,利用L2正则化优化,程序绝对可以完美运行。
  • L0、L1、L2正则化介绍

    2017-06-01 21:35:11
    L0、L1、L2正则化介绍
  • l1正则化和l2正则化I have read many articles on the topic to find out which is better out of two and what should I use for my model. I wasn’t satisfied with any of them and that left my brain confused...

    l1正则化和l2正则化

    I have read many articles on the topic to find out which is better out of two and what should I use for my model. I wasn’t satisfied with any of them and that left my brain confused which one should I use? After having done so many experiments, I have finally found out all answers to Which Regularization technique to use and when? Let’s get to it using a regression example.

    我已经阅读了很多关于该主题的文章,以找出其中最好的两个,以及我应该在模型中使用什么。 我对它们中的任何一个都不满意,这让我的大脑感到困惑,我应该使用哪个? 经过大量的实验之后,我终于找到了使用哪种正则化技术以及何时使用的所有答案 让我们使用一个回归示例。

    Let’s suppose we have a regression model for predicting y-axis values based on the x-axis value.

    假设我们有一个基于x轴值预测y轴值的回归模型。

    Image for post
    Cost Function
    成本函数

    While training the model, we always try to find the cost function. Here, y is the actual output variable and is the predicted output. So, for the training data, our cost function will almost be zero as our prediction line passes perfectly from the data points.

    在训练模型时,我们总是尝试找到成本函数。 此处,y是实际输出变量,而ŷ是预测输出。 因此,对于训练数据,当我们的预测线完美地从数据点经过时,我们的成本函数将几乎为零。

    Now, suppose our test dataset looks like as follows

    现在,假设我们的测试数据集如下所示

    Image for post
    Model on the test dataset
    在测试数据集上建模

    Here, clearly our prediction is somewhere else and the prediction line is directed elsewhere. This leads to overfitting. Overfitting says that with respect to training dataset you are getting a low error, but with respect to test dataset, you are getting high error.

    在这里,显然我们的预测在其他地方,而预测线则在其他地方。 这导致过度拟合。 过拟合表示,相对于训练数据集,您得到的误差很小,但是相对于测试数据集,则得到的误差很高。

    Remember, when we need to create any model let it be regression, classification etc. It should be generalized.

    记住,当我们需要创建任何模型时,让它为回归,分类等。应该对其进行概括。

    We can use L1 and L2 regularization to make this overfit condition which is basically high variance to low variance. A generalized model should always have low bias and low variance.

    我们可以使用L1和L2正则化来制作这种过拟合条件,该条件基本上是高方差到低方差。 广义模型应始终具有低偏差和低方差。

    Let’s try to understand now how L1 and L2 regularization help reduce this condition.

    现在让我们尝试了解L1和L2正则化如何帮助减少这种情况。

    We know the equation of a line is y=mx+c.

    我们知道一条线的方程是y = mx + c。

    For multiple variables this line will transform to y = m1x1 + m2x2 + …….. + mn xn.

    对于多个变量,此行将转换为y = m1x1 + m2x2 +…….. + mn xn。

    Where m1, m2, …., mn are slopes for respective variables, and x1, x2, ...., xn are the variables.

    其中,m1,m2,……,mn是各个变量的斜率,x1,x2,……,xn是变量。

    When the coefficients (i.e. slopes) of variables are large any model will go to overfitting condition. why does this happen? The reason is very simple, the higher the coefficient the higher the weight of that particular variable in the prediction model. And we know not every variable have a significant contribution. Regularization works by penalizing large weights. Thus enabling highly correlated variables have high weights and less correlated variables having a lower weight.

    当变量的系数(即斜率)较大时,任何模型都将过拟合。 为什么会这样? 原因非常简单,系数越高,预测模型中该特定变量的权重就越高。 而且我们知道并非每个变量都有重大贡献。 正则化通过惩罚较大的权重而起作用。 因此,使高度相关的变量具有较高的权重,而较少相关的变量具有较低的权重。

    The regularization method is a hyperparameter as well, which means it can be tuned through cross-validation.

    正则化方法也是一个超参数,这意味着可以通过交叉验证对其进行调整。

    L1正则化或套索回归 (L1 Regularization or Lasso Regression)

    A regression model that uses the L1 regularization technique is called Lasso Regression

    使用L1正则化技术的回归模型称为套索回归

    The L1 regularization works by using the error function as follows —

    L1正则化通过使用以下误差函数来工作:

    Image for post
    Error function for L1 regularization
    L1正则化的误差函数

    For tuning our model we always want to reduce this error function. λ parameter will tell us how much we want to penalize the coefficients.

    为了调整我们的模型,我们总是想减少这个误差函数。 λ参数将告诉我们要罚多少系数。

    0 < λ< (0 < λ < )

    If λ is large, we penalize a lot. If λ is small, we penalize less. λ is selected using cross-validation.

    如果λ大,我们将受到很多惩罚。 如果λ小,我们将减少惩罚。 使用交叉验证选择λ

    How our model is tuned by this error function?

    这个误差函数如何调整我们的模型?

    Earlier our error function (or cost function ∑ (y -ŷ )²) was solely based on our prediction variable ŷ. But now we have λ(|m1|+|m2|+ . . . . + |mn|) as an additional term.

    先前我们的误差函数(或成本函数∑(y-ŷ)² )仅基于我们的预测变量prediction。 但是现在我们有了λ(| m1 | + | m2 | + .... + + mn |)作为附加项。

    Earlier the cost function ∑ (y -ŷ )²) = 0 since our line was passing perfectly through training data points.

    由于我们的直线完美地通过了训练数据点,因此成本函数∑(y-ŷ)² ) = 0较早。

    let λ = 1 and |m1|+|m2|+ . . . . + |mn| = 2.8

    令λ= 1且| m1 | + | m2 | +。 。 。 。 + | mn | = 2.8

    Error function = ∑ (y -ŷ )²) + λ(|m1|+|m2|+ . . . . + |mn|) = 0 + 1*2.8 = 2.8

    误差函数= ∑(y-ŷ)² ) + λ(| m1 | + | m2 | +。。。+ | mn |)= 0 + 1 * 2.8 = 2.8

    While tuning, our model will now try to reduce this error of 2.8. lets say now value of ∑ (y -ŷ )²) = 0.6, λ = 1 and |m1|+|m2|+ . . . . + |mn| = 1.1

    在调整时,我们的模型现在将尝试减少2.8的误差。 假设现在的值∑(y-ŷ)² )= 0.6,λ= 1并且| m1 | + | m2 | +。 。 。 。 + | mn | = 1.1

    Now, the new value of Error function will be

    现在,错误函数的新值将是

    Error function = ∑ (y -ŷ )²) + λ(|m1|+|m2|+ . . . . + |mn|) = 0.6 + 1*1.1 = 1.7

    误差函数= ∑(y-ŷ)² ) + λ(| m1 | + | m2 | +。。。+ | mn |)= 0.6 + 1 * 1.1 = 1.7

    This will iterate multiple times. For reducing the error function our slopes will decrease simultaneously. Here we will see the slopes will get less and less steep.

    这将重复多次。 为了减小误差函数,我们的斜率将同时减小。 在这里,我们将看到坡度越来越小。

    As the λ value will get higher, it’ll penalize the coefficients more and the slope of the line will go more towards zero.

    随着λ值变高,它将对系数造成更多的惩罚,并且直线的斜率将更趋于零。

    In case of L1 regularization due to taking |slope| in the formula, the smaller weights will eventually die out and become 0. That means L1 regularization help select features which are important and turn the rest into zeros. It’ll create sparse vectors of weights as a result like (0, 1, 1, 0, 1). So, this works well for feature selection in case we have a huge number of features.

    如果由于| slope |而导致L1正则化在公式中,较小的权重最终将消失并变为0。这意味着L1正则化有助于选择重要的特征,并将其余特征变为零。 结果将创建权重的稀疏向量,例如(0,1,1,0,1)。 因此,在我们拥有大量功能的情况下,这对于选择功能非常有效。

    L2正则化或岭回归 (L2 Regularization or Ridge Regression)

    A regression model that uses L2 regularization technique is called Ridge Regression.

    使用L2正则化技术的回归模型称为Ridge回归。

    The L2 regularization works by using the following error function

    L2正则化通过使用以下误差函数来工作

    Image for post
    Error function for L2 regularization
    L2正则化的误差函数

    L2 regularization works similar to the way how L1 works as explained above. The only difference comes into play with the slopes. In L1 regularization we were taking |slope| while here we are taking slope².

    L2正则化的工作方式与上述L1的工作方式相似。 唯一的区别在于坡度。 在L1正则化中,我们采用| slope |。 而在这里,我们采取坡度²

    This will work similarly it’ll penalize the coefficients and the slope of the line will go more towards zero, but will never equal zero.

    这将类似地起作用,它将惩罚系数,并且直线斜率将更趋向于零,但永远不会等于零。

    Why is it so?

    为什么会这样呢?

    This is because of us using slope² in the formula. This method will create sparsity of weights in the form of (0.5, 0.3, -0.2, 0.4, 0.1). Let’s understand this sparsity by an example.

    这是因为我们在公式中使用了斜率²。 此方法将创建( 0.5,0.3,-0.2,0.4,0.1)形式的权重稀疏性。 让我们通过一个例子来理解这种稀疏性。

    consider the weights (0 , 1) and (0.5, 0.5)

    考虑权重(0,1)和(0.5,0.5)

    For the weights (0, 1) L2 : 0² + 1² = 1

    对于砝码(0,1)L2:0²+1²= 1

    For the weights (0.5, 0.5) L2 : 0.5² + 0.5² = 0.5

    对于砝码(0.5,0.5)L2:0.5²+0.5²= 0.5

    Thus, L2 regularization will prefer the vector point (0.5, 0.5) over the vector (1, 1) since this produces a smaller sum of squares and in turn a smaller error function.

    因此,L2正则化将优先选择矢量点(0.5、0.5),而不是矢量(1、1),因为这会产生较小的平方和,进而产生较小的误差函数。

    Let’s connect on LinkedIn. You may also reach out to me via ankita2108prasad@gmail.com.

    让我们在LinkedIn上连接 您也可以通过ankita2108prasad@gmail.com与我联系。

    翻译自: https://levelup.gitconnected.com/l1-vs-l2-regularization-and-when-to-use-which-cd3382008774

    l1正则化和l2正则化

    展开全文
  • L2正则化原理: 过拟合的原理:在loss下降,进行拟合的过程中(斜线),不同的batch数据样本造成红色曲线的波动大,图中低点也就是过拟合,得到的红线点低于真实的黑线,也就是泛化更差。 可见,要想减小过拟合,...
  • 一、什么是正则化,用来干嘛的? 正则化(regularization),是指在线性代数理论中,不适定问题通常是由一组线性代数方程定义的,而且这组方程组通常来源于有着很大的条件数的不适定反问题。大条件数意味着舍入误差或...

    一、什么是正则化,用来干嘛的?

    正则化(regularization),是指在线性代数理论中,不适定问题通常是由一组线性代数方程定义的,而且这组方程组通常来源于有着很大的条件数的不适定反问题。大条件数意味着舍入误差或其它误差会严重地影响问题的结果。

    因为机器学习的理论来源于数学,正则化的概念被很好的引用到机器学习模型中,主要作用是防止模型过拟合。

    我们的模型训练时,比如常见的深度学习模型,可能往往会因为神经元的数目和网络的层数过于庞大,模型具有非常强大的学习能力,但是能力过强不是一件好事,因为过分学习了训练集的数据特点,能在训练集上取得一个非常好的结果,但是在测试集可能会随着训练误差反而不断变大,这就是常说的过拟合问题。

    通常出现过拟合要么是数据集本身的质量问题,比如数据集内容分布不均匀,导致划分的训练集和测试集数据内容差别过大,特别是数据集本身数据量很少的时候,往往容易导致分布不均,所以后面又提出了很多数据增强的方法。再者是模型的问题,之前提到,如果模型过于复杂,拥有太过强大的学习能力,在训练集上表现很好但是测试集却越来越差,就是模型结构过于复杂导致的过拟合问题了,这个时候的解决方法就是减弱模型的复杂度,要么我们直接修改神经网络模型的层数或者每层神经元的个数,当然这样的方法很多时候不一定能带来好的效果,因为就是当我们的模型不能在训练集取得很好的拟合效果才考虑增大模型的复杂度,结果又导致过拟合问题,随着模型神经网络层数的增加,模型往往能够更好的学习到某些潜在的数据特征,所以最好是保证在原始的模型的结构基础不变的情况下做一定的修改,于是正则化被提出来使用。

    正则化最直白的理解就是通过添加一些系数削弱深度学习模型中某些神经元输出的数据权重,因为神经网络就是靠这些神经元不断的拟合数据集,从而使得模型不会过分拟合训练集,而同时保证在验证集和训练集都有较好的效果。

    二、L1正则化,L2正则化和Dropout正则化

    2.1 L1正则化,L2正则化

    L1正则化和L2正则化差别不大,先抛出公式如下:
    L1正则化
    (L1正则化公式)

    在这里插入图片描述
    (L2正则化公式)

    模型的目标是优化损失函数,上面的正则化公式就是在损失函数后面加上了所谓的正则项,可以看到L2仅仅是L1的正则项取平方,所以两者在结构上差别不大。C为一个常数系数,需要人为设置,w为和损失函数中的wT一样都是神经网络的权重参数。

    直观理解为:因为模型的目标是优化损失函数,使得损失函数尽可能降低趋近于0,因为后面添加了这么一个正则项,于是损失函数被干扰,可以理解为,如果模型的学习能力过于强大(也就是容易出现过拟合问题),那么||w||也会增大,就会间接导致现在的损失函数变大(现在的损失函数是原来的损失函数的基础上加了正则项),那么模型又需要反复调节,使得不断训练达到一个w不会过分大和损失函数也尽可能小的平衡点,此时的话就有效的使得模型不会轻易过拟合。

    但是在后来的发展中,L1和L2正则化不仅仅是对目标损失函数作用,也被利用作用在神经网络中每个神经元的权重参数w和b,或者激活函数中,其实现也是对这些参数添加一个正则项用来影响对数据集的拟合能力,这样一来L1和L2正则化方式和Dropout正则化方式有点相似了。

    如果要想具体实现比较麻烦,不过keras里面已经封装好了具体的使用,后面会具体说明。

    2.2 Dropout正则化

    Dropout正则化相比L1和L2正则化方式比较简单粗暴,我们上面提到模型过于复杂(层数太多或者每层神经元太多),那么最直接的方式就是直接减少某些神经元的存在不就行了吗。Dropout的方式就是在模型训练中在某些神经元的输出部分随机产生一个很小权重系数并乘上这个输出,其作用是削弱这个神经元对整个模型拟合能力的作用,如果这个权重系数很小甚至趋近于0,那么就相当于这个神经元在神经网络中没有出现过,效果如下图所示。
    在这里插入图片描述

    同样的Dropout在keras框架中也被进行了封装,甚至说,Dropout在神经网络中的使用频率比L1和L2正则化常见,可能是使用比较简单,效果也较好。

    三、keras框架使用L1、L2和Dropout正则化

    3.1 L1和L2正则化的添加使用

    之前提高L1和L2后来被作用于神经元的权重w和偏置向量b或者激活函数部分,于是keras中也分别进行了封装如下:

        kernel_regularizer:施加在神经元权重w上的正则项,为keras.regularizer.Regularizer对象。
    
        bias_regularizer:施加在神经元偏置向量b上的正则项,为keras.regularizer.Regularizer对象。
    
        activity_regularizer:施加在输出(激活函数)上的正则项,为keras.regularizer.Regularizer对象。
    

    上面3个分别表示正则化的作用对象,keras中封装的可使用的正则项如下:

    	#其中0.01为上面2.1小节提到的常数系数C,自己设置
    	keras.regularizers.l1(0.01)#L1正则项
    	keras.regularizers.l2(0.01)#L2正则项
    	keras.regularizers.l1_l2(0.01)#结合了L1和L2的正则项
    

    使用例子

    from keras import regularizers
    model.add(Dense(2, input_dim=10,#输入数据唯独10,输出唯独为2
                    kernel_regularizer=regularizers.l1(0.01),#在权重参数w添加L1正则化
                    bias_regularizer=regularizers.l2(0.01),#在偏置向量b添加L2正则化
                    activity_regularizer=regularizers.l1_l2(0.01),#在输出部分添加L1和L2结合的正则化
                    activation='relu'#激活函数采用ReLU
                    ))
    

    3.2 Dropout正则化的添加使用

    这个就很简单了,相比L1和L2比较简洁。

    from keras.layers import Dropout
    model.add(Dense(2, input_dim=10,#输入数据唯独10,输出唯独为2
                    activation='relu'#激活函数采用ReLU
                    ))
    model.add(Dropout(0.5))#直接在每层神经元后面添加,一般数值取0.5,也有取0.3,这个为Dropout率,可以理解为每个神经元被处理的概率。
    

    希望我的分享对你的学习有所帮助,如果有问题请及时指出,谢谢~

    展开全文
  • L1正则化和L2正则化讲解   在机器学习实践过程中,训练模型的时候往往会出现过拟合现象,为了减小或者避免在训练中出现过拟合现象,通常在原始的损失函数之后附加上正则项,通常使用的正则项有两种:L1正则化和L2...

    L1正则化和L2正则化讲解

      在机器学习实践过程中,训练模型的时候往往会出现过拟合现象,为了减小或者避免在训练中出现过拟合现象,通常在原始的损失函数之后附加上正则项,通常使用的正则项有两种:L1正则化L2正则化

      L1正则化L2正则化都可以看做是损失函数的惩罚项,所谓惩罚项是指对损失函数中的一些参数进行限制,让参数在某一范围内进行取值。L1正则化的模型叫做LASSO回归,L2正则化的模型叫做岭回归

    • LASSO回归公式
      m i n 1 2 m Σ i = 1 m ( f ( x ) − y ( i ) ) 2 + λ ∣ ∣ w ∣ ∣ 1 min\frac{1}{2m}\Sigma_{i=1}^{m}\left(f(x) - y^{(i)}\right)^{2}+\lambda||w||_{1} min2m1Σi=1m(f(x)y(i))2+λw1

    • 岭回归公式
      m i n 1 2 m Σ i = 1 m ( f ( x ) − y ( i ) ) 2 + λ ∣ ∣ w ∣ ∣ 2 2 min\frac{1}{2m}\Sigma_{i=1}^{m}\left(f(x) - y^{(i)}\right)^{2}+\lambda||w||_{2}^{2} min2m1Σi=1m(f(x)y(i))2+λw22

    L1正则化项和L2正则化项的说明如下:

      1. L1正则化项是指权重向量 w w w中各元素的绝对值之和,表示为 ∣ ∣ w ∣ ∣ 1 ||w||_{1} w1
      2. L2正则化项是指权重向量 w w w中个元素的平方和,表示为 ∣ ∣ w ∣ ∣ 2 2 ||w||_{2}^{2} w22

    L1正则化和L2正则化的作用

       1. L1正则化用于进行稀疏化(会令权重向量w中某一些参数等于0)处理,通常用于在多特征中进行特征选择
       2. L2正则化用于避免模型发生过拟合现象,L1正则化也可用于避免过拟合

    L1正则化的直观理解

    • L1正则化的损失函数

    m i n 1 2 m Σ i = 1 m ( f ( x ) − y ( i ) ) 2 + λ ∣ ∣ w ∣ ∣ 1 min\frac{1}{2m}\Sigma_{i=1}^{m}\left(f(x) - y^{(i)}\right)^{2}+\lambda||w||_{1} min2m1Σi=1m(f(x)y(i))2+λw1

      在上述的公式中, 1 2 m Σ i = 1 m ( f ( x ) − y ( i ) ) 2 \frac{1}{2m}\Sigma_{i=1}^{m}\left(f(x) - y^{(i)}\right)^{2} 2m1Σi=1m(f(x)y(i))2是原始的损失函数,也称为经验误差,在此基础上,加入了L1正则项 λ ∣ ∣ w ∣ ∣ 1 \lambda||w||_{1} λw1,L1正则项是权重向量中各元素的绝对值之和,所造成的一个后果就是损失函数不是完全可微。模型训练的目的是令损失函数达到全局最小值,当在原始的损失函数之后加入L1正则项之后,相当于对权重向量做了约束,此时我们的任务变为了在L1约束条件下求得损失函数的最小值。由于高维的情况无法用图像形象的描述出来,我们这里考虑二维的情况,即只有两个权重值 w 1 w_{1} w1 w 2 w_{2} w2,此时对损失函数应用梯度下降法,求解过程中可以画出等值线,如下图所示:
    在这里插入图片描述
      图中等值线是原始损失函数的等值线,黑色方形是L1正则化项的图形。在图中,当彩色等值线与黑色图形首次相交的地方就是最优解。上图中原始损失函数与L1在一个顶点处相交,这个顶点就是最优解。注意到这个顶点的值是(w1,w2)=(0,w)。可以直观想象,因为L函数有很多突出的顶点(二维情况下四个,多维情况下更多),彩色等值线与这些角接触的机率会远大于与黑色图形其它部位接触的机率,而在这些角上,会有很多权值等于0,这就是为什么L1正则化可以产生稀疏效果,进而可以用于特征选择。
      正则化系数 λ \lambda λ可以控制黑色图形的大小, λ \lambda λ越大,黑色图形越小, λ \lambda λ越小,黑色图形越大。 λ \lambda λ越大,表示对权重向量的限制作用越强。

    L2正则化的直观理解

    • L2正则化的损失函数
      m i n 1 2 m Σ i = 1 m ( f ( x ) − y ( i ) ) 2 + λ ∣ ∣ w ∣ ∣ 2 2 min\frac{1}{2m}\Sigma_{i=1}^{m}\left(f(x) - y^{(i)}\right)^{2}+\lambda||w||_{2}^{2} min2m1Σi=1m(f(x)y(i))2+λw22

      不管是L1正则化还是L2正则化,在拟合的过程中通常都倾向于让权值尽可能小,最后构造一个所有参数都比较小的模型,因为一般认为参数值小的模型比较简单,能适应不同的数据集,也在一定程度上避免了过拟合现象。可以设想一下对于一个线性回归方程,若参数很大,那么只要数据偏移一点点,就会对结果造成很大的影响;但如果参数足够小,数据偏移得多一点也不会对结果造成什么影响,抗干扰能力强。

      考虑损失函数在二维的情况,即只有两个权重值 w 1 w_{1} w1 w 2 w_{2} w2,此时对损失函数应用梯度下降法,求解过程中可以画出等值线,如下图所示:
    在这里插入图片描述
      二维平面下L2正则化的函数图形是个圆,与方形相比,被磨去了棱角。因此J0与L相交时使得w1或w2等于零的机率小了许多,这就是为什么L2正则化不具有稀疏性的原因。

    展开全文
  • ​ L1和L2正则化的作用: L1正则化可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择,一定程度上,L1也可以防止过拟合 L2正则化可以防止模型过拟合(overfitting) 下面看李飞飞在CS2312中给的更为详细...

    转载地址https://blog.csdn.net/liuweiyuxiang/article/details/99984288

    0 正则化的作用

    正则化的主要作用是防止过拟合,对模型添加正则化项可以限制模型的复杂度,使得模型在复杂度和性能达到平衡。
    常用的正则化方法有L1正则化和L2正则化。L1正则化和L2正则化可以看做是损失函数的惩罚项。所谓『惩罚』是指对损失函数中的某些参数做一些限制。 L1正则化的模型建叫做Lasso回归,使用L2正则化的模型叫做Ridge回归(岭回归。但是使用正则化来防止过拟合的原理是什么?L1和L2正则化有什么区别呢?

    1 L1正则化与L2正则化

    L1正则化的表达如下,其中α||w||为L1正则化项,L1正则化是指权值向量w 中各个元素的绝对值之和。
    在这里插入图片描述

    L2正则化项表达式如下,其中a||w||^2为L2正则化项,L2正则化是指权值向量w 中各个元素的平方和然后再求平方根。
    在这里插入图片描述
    L1和L2正则化的作用:

    • L1正则化可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择,一定程度上,L1也可以防止过拟合
    • L2正则化可以防止模型过拟合(overfitting)

    下面看李飞飞在CS2312中给的更为详细的解释:

    • L2正则化可以直观理解为它对于大数值的权重向量进行严厉惩罚,倾向于更加分散的权重向量。由于输入和权重之间的乘法操作,这样就有了一个优良的特性:使网络更倾向于使用所有输入特征,而不是严重依赖输入特征中某些小部分特征。 L2惩罚倾向于更小更分散的权重向量,这就会鼓励分类器最终将所有维度上的特征都用起来,而不是强烈依赖其中少数几个维度。这样做可以提高模型的泛化能力,降低过拟合的风险。
    • L1正则化有一个有趣的性质,它会让权重向量在最优化的过程中变得稀疏(即非常接近0)。也就是说,使用L1正则化的神经元最后使用的是它们最重要的输入数据的稀疏子集,同时对于噪音输入则几乎是不变的了。相较L1正则化,L2正则化中的权重向量大多是分散的小数字。
    • 在实践中,如果不是特别关注某些明确的特征选择,一般说来L2正则化都会比L1正则化效果好。

    2 L1和L2正则化的原理

    上面讲到L1倾向于学得稀疏的权重矩阵,L2倾向于学得更小更分散的权重?但是L1和L2是怎样起到这样的作用的呢?背后的数学原理是什么呢?
    模型的学习优化的目标是最小化损失函数,学习的结果是模型参数。在原始目标函数的基础上添加正则化相当于,在参数原始的解空间添加了额外的约束。
    L1正则化对解空间添加的约束是:
    在这里插入图片描述
    L2正则化对解空间添加的约束是:
    在这里插入图片描述

    为了形象化的说明以假设有两个空间,以二维参数空间为例,假设有两个参数W1和W2。
    则L1正则化对解空间的约束为:
    ∣w1∣+∣w2∣<=C

    L2对解空间的约束为:
    在这里插入图片描述
    在二维平面上绘制以上两个式子的图像,可得L1约束的范围是一个顶点在坐标轴上的菱形,L2约束的范围是一个圆形。
    在这里插入图片描述
    上面的图,左面是L2约束下解空间的图像,右面是L1约束下解空间的图像。
    蓝色的圆圈表示损失函数的等值线。同一个圆上的损失函数值相等的,圆的半径越大表示损失值越大,由外到内,损失函数值越来越小,中间最小。
    如果没有L1和L2正则化约束的话,w1和w2是可以任意取值的,损失函数可以优化到中心的最小值的,此时中心对应的w1和w2的取值就是模型最终求得的参数。
    但是填了L1和L2正则化约束就把解空间约束在了黄色的平面内。黄色图像的边缘与损失函数等值线的交点,便是满足约束条件的损失函数最小化的模型的参数的解。 由于L1正则化约束的解空间是一个菱形,所以等值线与菱形端点相交的概率比与线的中间相交的概率要大很多,端点在坐标轴上,一些参数的取值便为0。L2正则化约束的解空间是圆形,所以等值线与圆的任何部分相交的概率都是一样的,所以也就不会产生稀疏的参数。
    但是L2为什么倾向于产生分散而小的参数呢?那是因为求解模型的时候要求,在约束条件满足的情况下最小化损失函数,∑ || w || ^2 也应该尽可能的小。
    看这样一个例子:
    设输入向量x=[1,1,1,1],两个权重向量w_1=[1,0,0,0],w_2=[0.25,0.25,0.25,0.25]。两个权重向量都得到同样的内积1,但是w1的L2惩罚是1.0,而w2的L2惩罚是0.25。因此,根据L2惩罚来看,w2更好,因为它的正则化损失更小。从直观上来看,这是因为w2的权重值更小且更分散。所以L2正则化倾向于是特征分散,更小。

    3 正则化参数 λ

    我们一般会为正则项参数添加一个超参数λ或者α,用来平衡经验风险和结构风险(正则项表示结构风险)。
    在这里插入图片描述
    以 L2 为例,若 λ 很小,就是说我们考虑经验风险更多一些,对于结构风险没有那么重视,约束条件更为宽松。对应上文中的 C 值就很大。这时候,圆形区域很大,能够让 w 更接近中心最优解的位置。若 λ 近似为 0,相当于圆形区域覆盖了最优解位置,这时候,正则化失效,容易造成过拟合。
    相反,若 λ 很大,约束条件更为严格,对应上文中的 C 值就很小。这时候,圆形区域很小,w 离中心最优解的位置较远。w 被限制在一个很小的区域内变化,w 普遍较小且接近 0,起到了正则化的效果。但是,λ 过大容易造成欠拟合。欠拟合和过拟合是两种对立的状态。

    4 总结

    1. 添加正则化相当于参数的解空间添加了约束,限制了模型的复杂度

    2. L1正则化的形式是添加参数的绝对值之和作为结构风险项,L2正则化的形式添加参数的平方和作为结构风险项

    3. L1正则化鼓励产生稀疏的权重,即使得一部分权重为0,用于特征选择;L2鼓励产生小而分散的权重,鼓励让模型做决策的时候考虑更多的特征,而不是仅仅依赖强依赖某几个特征,可以增强模型的泛化能力,防止过拟合。

    4. 正则化参数 λ越大,约束越严格,太大容易产生欠拟合。正则化参数 λ越小,约束宽松,太小起不到约束作用,容易产生过拟合。

    5. 如果不是为了进行特征选择,一般使用L2正则化模型效果更好。

    展开全文
  • L1正则化、L2正则化的公式如下 min⁡wL1(w)=min⁡wf(w)+λn∑i=1n∣wi∣min⁡wL2(w)=min⁡wf(w)+λ2n∑i=1nwi2 \min_wL_1(w)=\min_w f(w)+\frac{\lambda}{n}\sum_{i=1}^n|w_i|\\ \min_wL_2(w)=\min_wf(w)+\frac{\...
  • 详解L1和L2正则化

    千次阅读 2020-11-24 20:23:14
    对参数进行L1和L2正则化的作用与区别 pytorch实现L1与L2正则化 对特征进行L2正则化的作用 L1和L2的区别以及范数   使用机器学习方法解决实际问题时,我们通常要用L1或L2范数做正则化(regularization),从而限制...
  • 相信大部分人都见到过,下面的这两张对比图,用来解释为什么L1正则化比L2正则化更容易得到稀疏解,然而很多人会纠结于"怎么证明相切是在角点上?",呃,不必就纠结于此,请注意结论中的"容易"二字,配图只是为了说明...
  • 一、L1正则化与L2正则化的区别以及为什么L1正则化可以产生稀疏矩阵,L2正则化可以防止过拟合 正则化(regularization):机器学习中几乎都可以看到损失函数后面会添加一个额外项,常用的额外项一般有两种,一般英文...
  • 文章目录前言一、L1和L2正则化是什么?二、区别三、其他问题 前言 在防止过拟合的方法中有L1正则化和L2正则化,那么这两者有什么区别呢? 一、L1和L2正则化是什么? L1和L2是正则化项,又叫做惩罚项,是为了限制...
  • L1与L2正则化

    2021-03-13 17:26:13
    过拟合机器学习中,如果参数过多、模型过于复杂,容易造成过拟合。结构风险最小化原理在经验风险最小化(训练误差最小化)的基础上,尽可能采用简单的模型,以提高模型...L2正则化L2正则化即:\(L=E_{in}+\lambda\sum_...
  • L1正则化和L2正则化的详细直观解释

    万次阅读 多人点赞 2018-08-09 15:13:18
    机器学习中几乎都可以看到损失函数后面会添加一个额外项,常用的额外项一般有两种,一般英文称作ℓ1ℓ1-norm和ℓ2ℓ2-norm,中文称作L1正则化和L2正则化,或者L1范数和L2范数。 L1正则化和L2正则化可以看做是损失...
  • L1正则化与L2正则化 正则化之所以能够降低过拟合的原因在于,正则化是结构风险最小化(模型结构最简单,经验风险最小化就是训练误差小)的一种策略实现。 给loss function加上正则化项,能使得新得到的优化目标函数h...
  • 九浅一深理解L2正则化和权重衰减 1. 什么是L2正则化? 针对权重参数的范数惩罚;神经网络的损失函数(或者说目标函数)中加入一个额外的正则化项; 2. 什么是权重衰减? 神经网络的损失函数(或者说目标函数)不...
  • L1、L2正则化的区别

    2020-12-10 15:39:08
    简单读了一些文章,总结一下L1和L2正则化的区别吧,似乎是非常容易被问到的一个问题。L1,L2正则化机器学习中, 损失函数后面一般会加上一个额外项,常用的是l1-norm和l2-norm,即l1范数和l2范数。可以看作是损失函数...
  • L1正则化与L2正则化

    2020-08-04 23:22:20
      分为L1正则化和L2正则化两种。首先,我们假定网络中原本的损失函数为:    其中,w为网络的权重值,b为偏置值。   添加L1正则化后损失函数的形式可以表示为:   即在最后添加了权重绝对值的和。 其中,...
  • L1正则化和L2正则化面试常考题

    千次阅读 2020-06-15 16:02:18
    L1正则化和L2正则化可以看做是损失函数的惩罚项。所谓“惩罚”是指对损失函数中的某些参数做一些限制 L1正则化是指权值向量w中各个元素的绝对值之和 L2正则化是指权值向量w中各个元素的平方和然后再求平方根 L1正则...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 40,207
精华内容 16,082
关键字:

l2正则化

友情链接: spike lfp.zip