Improving Deep Neural Networks[2]

Improving Deep Neural Networks[2]

对吴恩达老师的《优化深度神经网络》课程作业知识进行总结。

正则化 Regularization

首先,明确正则化的目的:避免模型在训练过程中出现过拟合(overfitting)的情况。

过拟合:模型对训练集的适应性非常好,但是对测试集的适应性不佳,太过”特殊化“。

在这里插入图片描述

不妨参考以上图片(图源:红色石头):

图一属于欠拟合状态,一般解决方法:增加神经网络的隐藏层个数、神经元个数,训练时间延长,选择其它更复杂的NN模型等。

图三处于过拟合状态,一般解决方法: 增加训练样本数据,进行正则化Regularization,选择其他更复杂的NN模型等。


在本例中,我们面临的过拟合情况如下:

在这里插入图片描述
在这里插入图片描述

扫描二维码关注公众号,回复: 10657967 查看本文章

可以看到,存在几个红点/蓝点区域存在过拟合现象。


1 正则化是如何解决过拟合问题的?

简单地说,过拟合情况由于当前模型对当前训练集的特异性太强,缺乏一般化。

一个复杂的模型通常有着更强的表达能力,对于训练集数据量不足、问题较简单的情况,过于复杂的模型可能会导致结果太过特化。

正则化的实质是对模型的一个弱化,考虑较常用的两种正则化方法(也是吴恩达老师在本节中提到的):L2 Regularization,Dropout Regularization。


L2 Regularization

参考吴恩达老师的课件,L2 正则化将:
J = 1 m i = 1 m ( y ( i ) log ( a [ L ] ( i ) ) + ( 1 y ( i ) ) log ( 1 a [ L ] ( i ) ) ) (1) J = -\frac{1}{m} \sum\limits_{i = 1}^{m} \large{(}\small y^{(i)}\log\left(a^{[L](i)}\right) + (1-y^{(i)})\log\left(1- a^{[L](i)}\right) \large{)} \tag{1}
转化为:
J r e g u l a r i z e d = 1 m i = 1 m ( y ( i ) log ( a [ L ] ( i ) ) + ( 1 y ( i ) ) log ( 1 a [ L ] ( i ) ) ) cross-entropy cost + 1 m λ 2 l k j W k , j [ l ] 2 L2 regularization cost (2) J_{regularized} = \small \underbrace{-\frac{1}{m} \sum\limits_{i = 1}^{m} \large{(}\small y^{(i)}\log\left(a^{[L](i)}\right) + (1-y^{(i)})\log\left(1- a^{[L](i)}\right) \large{)} }_\text{cross-entropy cost} + \underbrace{\frac{1}{m} \frac{\lambda}{2} \sum\limits_l\sum\limits_k\sum\limits_j W_{k,j}^{[l]2} }_\text{L2 regularization cost} \tag{2}

在上式中,正则化项 λ 2 m l = 1 L W [ l ] F 2 \dfrac{\lambda}{2m}\sum\limits_{l=1}^{L}||W^{[l]}||_F^2 ,被展开表示了。

正则化项的含义实际上是每一层权重矩阵的F范数(矩阵元素平方和再开平方)平方和乘上系数 λ \lambda ,再除二倍的样本数。
在这里插入图片描述
因为代价函数的改变,反向传播过程也有改变:

比起原先的情况,梯度新添正则项梯度: d d W ( λ 2 m W 2 ) = λ m w [ l ] \dfrac{d}{dW}(\dfrac{\lambda}{2m}W^2)=\dfrac{\lambda}{m}w^{[l]}

更新参数时,参数额外减去正则项。
d w [ l ] = d w b e f o r e [ l ] + λ m w [ l ] w [ l ] : = w [ l ] α d w [ l ] \begin{array}{l}{d w^{[l]}=d w_{b e f o r e}^{[l]}+\frac{\lambda}{m} w^{[l]}} \\ {w^{[l]}:=w^{[l]}-\alpha \cdot d w^{[l]}}\end{array}
即:
w [ l ] : = w l α d w l = w l α ( d w b e f o r e l + λ m w l ) = ( 1 α λ m ) w [ l ] α d w b e f o r e [ l ] \begin{aligned} w^{[l]} &:=w^{|l|}-\alpha \cdot d w^{|l|} \\ &=w^{|l|}-\alpha \cdot\left(d w_{b e f o r e}^{|l|}+\frac{\lambda}{m} w^{|l|}\right) \\ &=\left(1-\alpha \frac{\lambda}{m}\right) w^{[l]}-\alpha \cdot d w_{b e f o r e}^{[l]} \end{aligned}
考虑系数 ( 1 α λ m ) (1-\alpha \frac{\lambda}{m}) λ \lambda 取较大值,该权值将会接近0,等同于该神经元将会接近失活状态

通过这种方法,可以弱化整个模型。

在这里插入图片描述

参考上图(图源:红色石头):

弱化后的复杂模型退化成了线性模型。当然,这是一种极端的情况。

因此,我们可以通过调整合适的 λ \lambda 值,来保证解决过拟合而不引起欠拟合的情况。

注:L2 正则化是针对W权重进行的,一般地,我们不对偏置量b进行正则化,有以下两个解释,个人倾向于后者:

红色石头:其实也可以对b进行正则化。但是一般w的维度很大,而b只是一个常数。相比较来说,参数很大程度上由w决定,改变b值对整体模型影响较小。所以,一般为了简便,就忽略对b的正则化了。

csdn博主:我们通常只对权重做惩罚,而不对偏置做正则惩罚。因为精确拟合偏置所需的数据通常比权重少的多,正则化偏置参数可能会导致明显的欠拟合。


Dropout Regularization

Dropout 正则化译为随机失活,顾名思义,按照这一策略,我们将令每一个神经元以一定的概率失活(或存活)。

在这里插入图片描述

每一个神经元将以 keep_prob 的概率存活,以 1 - keep_prob的概率失活。

参考L2 正则化中的解释,不难理解这一方法解决过拟合的原理。


Ref:

吴恩达《优化深度神经网络》课程笔记(1)– 深度学习的实用层面

小结深度学习中的正则化(超详细分析)


2 L2 Regularization

依照:

J r e g u l a r i z e d = 1 m i = 1 m ( y ( i ) log ( a [ L ] ( i ) ) + ( 1 y ( i ) ) log ( 1 a [ L ] ( i ) ) ) cross-entropy cost + 1 m λ 2 l k j W k , j [ l ] 2 L2 regularization cost J_{regularized} = \small \underbrace{-\frac{1}{m} \sum\limits_{i = 1}^{m} \large{(}\small y^{(i)}\log\left(a^{[L](i)}\right) + (1-y^{(i)})\log\left(1- a^{[L](i)}\right) \large{)} }_\text{cross-entropy cost} + \underbrace{\frac{1}{m} \frac{\lambda}{2} \sum\limits_l\sum\limits_k\sum\limits_j W_{k,j}^{[l]2} }_\text{L2 regularization cost}

在本例中,三层网络的正则化代价计算如下:

def compute_cost_with_regularization(A3, Y, parameters, lambd):
    m = Y.shape[1]
    W1 = parameters["W1"]
    W2 = parameters["W2"]
    W3 = parameters["W3"]
    
    cross_entropy_cost = compute_cost(A3, Y) 
    
    L2_regularization_cost = 
    	(1/m) * lambd * 0.5 * (np.sum(np.square(W1)) + 
                               np.sum(np.square(W2)) + 
                               np.sum(np.square(W3)))
    
    cost = cross_entropy_cost + L2_regularization_cost
    
    return cost

cost - iteration 图如下:

在这里插入图片描述
预测结果图如下:

在这里插入图片描述

可以看到,在合适的 λ \lambda 的帮助下,过拟合现象得到了解决。

同时需要注意的是,吴恩达老师在本节中提到:

  1. λ \lambda 是一个超参数,在训练过程中可以由验证集进行调整,以取得合适的取值。
  2. 太大的 λ \lambda 会导致欠拟合现象。

3 Dropout Regularization

根据随机失活的原理,每个神经元将以 keep_prob 的概率存活,以 1 - keep_prob的概率失活。

def forward_propagation_with_dropout(X, parameters, keep_prob = 0.5):
    
    # retrieve parameters
    W1 = parameters["W1"]
	# ...
    b3 = parameters["b3"]
    
    # LINEAR -> RELU -> LINEAR -> RELU -> LINEAR -> SIGMOID
    Z1 = np.dot(W1, X) + b1
    A1 = relu(Z1)
    D1 = np.random.rand(A1.shape[0], A1.shape[1])
    D1 = D1 < keep_prob
    A1 = np.multiply(D1, A1)
    A1 = A1 / keep_prob

    Z2 = np.dot(W2, A1) + b2
    A2 = relu(Z2)
    D2 = np.random.rand(A2.shape[0], A2.shape[1])
    D2 = D2 < keep_prob
    A2 = np.multiply(D2, A2)
    A2 = A2 / keep_prob
    
    Z3 = np.dot(W3, A2) + b3
    A3 = sigmoid(Z3)
    
    cache = (Z1, D1, A1, W1, b1, Z2, D2, A2, W2, b2, Z3, A3, W3, b3)
    
    return A3, cache

代码生成一个随机矩阵(元素值在(0-1)之间),按照 keep_prob 的阈值映射为(0-1)矩阵,对应位置相乘以实现“失活”。

因为在模型训练阶段使用Dropout正则化,而在模型发布后使用过程中是不会进行正则化的,因此我们需要保证每个神经元输出的期望与未使用dropout时一致。因此,在计算结束后,将矩阵Ai每个元素除 keep_prob

结合概率论的知识来具体看一下:假设一个神经元的输出激活值为a,在不使用dropout的情况下,其输出期望值为a,如果使用了dropout,神经元就可能有保留和关闭两种状态,把它看作一个离散型随机变量,它就符合概率论中的0-1分布,其输出激活值的期望变为 p a + ( 1 p ) 0 = p a p*a+(1-p)*0=pa ,此时若要保持期望和不使用dropout时一致,就要除以 p。Ref: CSDN博主「ytusdc」


cost - iteration 图如下:
在这里插入图片描述
预测结果如下:
在这里插入图片描述

显然,使用Dropout正则化后,过拟合现象得到了解决。

同时需要注意的是:

  1. 注意不要在训练和测试的时候都使用Dropout正则化,只需要在训练时使用就可以了。
  2. 大部分开源框架都内置有Dropout正则化功能,无需担心使用难度。
  3. 前向、反向传播都需要使用Dropout。
  4. 在训练时,将输出结果除 keep_prob 以确保每个神经元的期望输出与不使用Dropout时一致。

4 总结 Conclusion

吴恩达老师在本节末提到:

  1. 正则化会使权重W的值降低
  2. 因为阻止了过拟合的发生,正则化会破坏训练集的表现(譬如降低训练集的准确度)。
  3. 但是正则化对测试集(未用于训练的数据)有利,这也是对整个模型系统有利的。
  4. L2 regularization 以及 Dropout 是两种非常有效的正则化方法。


上一篇:Improving Deep Neural Networks[1]
下一篇:Improving Deep Neural Networks[3]

2019/10 Karl

发布了30 篇原创文章 · 获赞 7 · 访问量 4435

猜你喜欢

转载自blog.csdn.net/weixin_40005329/article/details/102794090