• 9、改善深层神经网络之正则化、Dropout正则化


    首先我们理解一下,什么叫做正则化?

      目的角度:防止过拟合

      简单来说,正则化是一种为了减小测试误差的行为(有时候会增加训练误差)。我们在构造机器学习模型时,最终目的是让模型在面对新数据的时候,可以有很好的表现。当你用比较复杂的模型比如神经网络,去拟合数据时,很容易出现过拟合现象(训练集表现很好,测试集表现较差),这会导致模型的泛化能力下降,这时候,我们就需要使用正则化,降低模型的复杂度。

    一、神经网路得L1、L2正则化

    1、矩阵的F-1范数、F-2范数

    说明:这里的F-范数指的是Frobenius范数,和logistics回归的L1、L2正则化的向量范数不一样。

    矩阵的F-1范数:矩阵所有元素的绝对值之和。公式为:

    矩阵的F-2范数:矩阵所有元素的平方求和后开根号。公式为:

     

    2、L1正则化与L2正则化(主要使用L2)

     假设神经网络的损失函数为J(W,b),参考逻辑回归的正则化,是在损失函数J(W,b)后面加一个正则化项,神经网络DNN也是一样的,只是变成了加F-范数,L1正则化与L2正则化如下所示:

    这里m为样本数,l为各个隐藏层,λλ为超参数,需要自己调试,L2中2m是为了后面求梯度的时候可以抵消掉常数2。

    3、L1正则化与L2正则化的区别

      L1 正则化项的效果是让权值 W 往 0 靠,使网络中的权值尽可能为 0,也就相当于减小了网络复杂度,防止过拟合。事实上,L1 正则化能产生稀疏性,导致 W 中许多项变成零。

      L2 正则化项的效果是减小权值 W。事实上,更小的权值 W,从某种意义上说,表示网络的复杂度更低,对数据的拟合刚刚好。

    二、Dropout正则化(随机失活)

      Dropout提供了正则化一大类模型的方法,计算方便且功能强大。它不同于L1、L2正则项那样改变损失函数。而是改变模型本身。Dropout可以被认为是集成大量深层神经网络的使用Bagging的方法。Dropout提供一种廉价的Bagging集成近似,能够训练和评估指数级数量的神经网络。

      假设训练的网络:

       对于使用dropout技术的话,我们随机删除隐层的神经元,形成新的网络:

       然后,我们通过前向求损失,反向传到损失,批量梯度下降完成一批,更新完w和b,然后继续随机删除隐藏层的神经元,继续批量梯度下降更新权值和偏置。

    反向随机失活(inverted dropout):

      反向随机失活(inverted dropout),是在训练时就进行数值范围调整,从而让前向传播在测试时保持不变。这样做还有一个好处,无论你决定是否使用随机失活,预测方法的代码可以保持不变。

      反向随机失活的代码如下:

    """
    反向随机失活推荐实现方式
    在训练时drop和调整数值范围,测试时不做任何事
    """
    
    p = 0.5 #激活神经元得概率,P值更高=随机失活更弱
    
    def train_step(x):
        #三层neural network的向前传播
        H1 = np.maximum(0,np.dot(w1,X) + b1)
        U1 = (np.random.rand(*H1.shape) < p) / p #第一个随机失活遮罩。注意P!!!
        H1 *=U1 #drop!
        H2 = np.maximum(0,np.dot(w2,H1) + b2)
        U2 = (np.random.rand(*H2.shape) < p) / p #第一个随机失活遮罩。注意P!!!
        H2 *=U2 #drop!
        out = np.dot(w3,H2)+b3
        
        #反向传播:计算梯度。。。(略)
        #进行参数更新。。。(略)
    
    def predict(X):
        # 向前传播时模型集成
        H1 = np.maximum(0,np.dot(w1,X) + b1) #不用进行数值范围调整
        H2 = np.maximum(0,np.dot(w2,H1) + b2)
        out = np.dot(w3,H2) + b3
  • 相关阅读:
    构造函数的特点
    HashMap源码分析
    DVWA-7.1 SQL Injection(SQL注入)-Low
    DVWA-6.4 Insecure CAPTCHA(不安全的验证码)-Impossible
    DVWA-6.3 Insecure CAPTCHA(不安全的验证码)-High
    DVWA-6.2 Insecure CAPTCHA(不安全的验证码)-Medium
    DVWA-6.1 Insecure CAPTCHA(不安全的验证码)-Low
    DVWA-5.4 File Upload(文件上传)-Impossible
    DVWA-5.3 File Upload(文件上传)-High-绕过文件类型限制
    DVWA-5.2 File Upload(文件上传)-Medium-绕过文件类型限制
  • 原文地址:https://www.cnblogs.com/hzzhbest/p/15166298.html
Copyright © 2020-2023  润新知