zoukankan      html  css  js  c++  java
  • 为什么正则化可以防止过拟合?

    为什么正则化可以防止过拟合?

    整理并翻译自吴恩达深度系列视频教程
    https://mooc.study.163.com/learn/2001281003?tid=2001391036#/learn/content?type=detail&id=2001702116&cid=2001693033
    博主本人的观点将以楷体展示,请留意这点。

    在这里插入图片描述

    加上正则化项之后的损失函数

    J ( w [ l ] , b [ l ] ) = 1 m ∑ i = 1 m l ( y ′ , y ) + λ 2 m ∑ l = 1 L ∣ ∣ w [ l ] ∣ ∣ F 2 J(w^{[l]}, b^{[l]})= frac{1}{m}sum_{i=1}^ml(y^{'},y) + frac{lambda}{2m} sum_{l=1}^L||w^{[l]}||^2_F J(w[l],b[l])=m1i=1ml(y,y)+2mλl=1Lw[l]F2
    F表示Frobenius范数(缩减的L2范数),加上第二项(即正则项)惩罚了权值矩阵使其不能取太大值。

    如果权重矩阵取值很小,如上图左一,会出现线性拟合高偏差欠拟合的状态;如果权重矩阵取值很大,则会出现过于灵活的非线性拟合高方差过拟合的状态。
    在这里插入图片描述
    这张图里绿色的计算部分表示了正则项对 w w w更新的影响,它相当于取了一个 ( 1 − α λ m ) w (1-frac{alphalambda}{m})w (1mαλ)w的值来按照没有正则项时的更新方法更新 w w w,因为 ( 1 − α λ m ) (1-frac{alphalambda}{m}) (1mαλ)小于1,它惩罚性地降低了w的值。

    因此正则化项的存在使得权重矩阵不会取值过大,就不会出现过拟合高方差,它相当于尽量把第一张图右一的所代表的状态尽量往第一张图左一代表的状态那边拉,从而得到第一张图中间"just right"的状态。

     
    另外,如果在深度网络中某些结点的w取值很小(即权重矩阵中的一部分值很小),将会使得这些结点的作用变得微不足道,就好像根本就没有这些单元一样,其结果是深度网络会退化成越来越接近单纯的Logistic Regression。

    事实上,残差网络就是使用降低权重值对结果的影响来减小网络加深对训练准确度降低而产生的影响,所以w取低值虽然不好,但是可以作为设计网络的一种思路。

    有关范数请参考之前的一篇博文: [矩阵/向量的范数](https://blog.csdn.net/Solo95/article/details/84324468)。

    从另一个方面来理解

    图二
    如果你使用的激活函数是 t a n ( h ) tan(h) tan(h), 那么当 λ lambda λ取值很大的时候,W取值很小,经W计算得出的z也很小,z很小意味着 g ( z ) = t a n ( z ) g(z) = tan(z) g(z)=tan(z)很小, g ( z ) g(z) g(z)取值集中于上图红色部分,相当于 t a n ( h ) tan(h) tan(h)函数的线性部分,整个网络的状态接近第一张图左一的线性高偏差欠拟合状态。

    这样一来,你的深度网络将只能计算出跟线性拟合差不了太远的结果,将会得到很接近线性函数的函数,而不是过于复杂的函数,所以也就不太可能出现过拟合的情况。

    你最好加上正则化项,因为如果你不加上,在绘制损失函数 J J J的图时,可能不是很明显的像梯度那样的逐渐下降,你会在本周的编程作业里体会到这点。

  • 相关阅读:
    vector数组的翻转与排序
    20210310日报
    vector数组的遍历
    vector数组的删除
    vector数组的插入
    20210304日报
    20210303日报
    20210302日报
    计算datetime.date n个月后(前)的日期
    pandas 重命名MultiIndex列
  • 原文地址:https://www.cnblogs.com/wanghongze95/p/13842543.html
Copyright © 2011-2022 走看看