吴恩达深度学习专项课程2学习笔记/week1/Regularization

Regularization

L2 Regularization

在cost function后加一个L2范数项(对于矩阵来说为Forbenius norm,为\(\sum\limits_k\sum\limits_j W_{k,j}^{[l]2}\)),L2正则化后的cost function变为:

\[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} \]

L2正则化有时候也被称为“weight decay”(权重衰减),这是因为带入权值W更新的公式后,可以发现相当于每次更新权重都将其乘上一项$ 1 - \frac{\alpha \lambda}{m} $。

L2正则化依赖于这样的假设,即具有小权重的模型比具有大权重的模型简单。因此,通过惩罚成本函数中权重的平方值,可以控制所有权重值较小。这使得模型更加平滑,随着输入改变,输出变化更慢。

\(\lambda\)是一个可以调节的超参数,L2正则化使得模型更加平滑。如果\(\lambda\)过大的话,会使得模型过于平滑,可能使得bias增大。

一个小的tip:在使用了正则化之后,我们修改了cost function,加上了正则化项,我们在debug时绘制cost function图像时,也应该带上这一项,否则看到的cost function可能不是持续减小的。

Dropout Regularization

在每一步迭代中随机关闭一些神经元。

如何应用dropout呢?

在向前传播中,大致包括4步。

  1. 设置一和\(a^{[1]}\)的形状一样的变量\(d^{[1]}\),使用np.random.rand()获得0~1之间的数。还要利用到向量化,创建一个随机矩阵\(D^{[1]} = [d^{[1](1)} d^{[1](2)} ... d^{[1](m)}]\),和\(A^{[1]}\)的维度相同。
  2. 使用 X = (X < 0.5)keep_prob值,使得\(D^{[1]}\)1-keep_prob)的可能性下为0,在keep_prob的可能性下为1。
  3. \(A^{[1]}\) = \(A^{[1]} * D^{[1]}\)
  4. inverted dropout\(A^{[1]}\) 除以 keep_prob,保证cost的值不受使用dropout的影响。

在向后传播中,包括2步。

  1. 在向前传播中,对A1使用了mask \(D^{[1]}\)关闭了某些神经元,在向后传播计算dA1时,应关闭同样的神经元,因此对dA1也使用mask \(D^{[1]}\)
  2. dA1除以keep_prob,因为微积分中如果\(A^{[1]}\) 缩放了keep_prob, 然后它的微分 \(dA^{[1]}\) 也被缩放了keep_prob

在测试时,不要使用dropput。因为测试时,并不想要得到随机的预测结果。

如何理解dropout呢?

从整体上看,每一步迭代都关闭一些神经元,这样每一步训练中,实际上都在训练的更简单的神经网络。

从单一神经元的角度出发,由于它上一层的神经元的输入会随机被丢弃一些,因此它无法完全依赖于任何一个特征,所以权重就倾向于分散,即给每一个输入特征的权重都较小,这样达到了和L2正则化类似的效果。

keep_prob的值应根据各层神经元的各数设置,对于神经元数目比较多的,设置更小的keep_prop值,因为神经元数目多的层数更容易过拟合,如果对不同层设置不同的keep_prop值,也有一个缺点就是超参数的数目增多的话运行可能会更慢。通常对于输入层一般不使用dropout。

在计算机视觉领域,由于特征维度很大,往往都不可能有足够的数据,因此使用dropout几乎成为默认,但是其他领域就不一定如此。

dropout还有一个缺点在于,由于随机丢弃使得cost function的定义不那么明确,因此无法用绘图法进行梯度下降检测。因此需要先把dropout关闭之后进行梯度下降检测确保递减,再加入dropout。

Other Regularization Methods

  • Data augmentation(数据扩增)

比如水平翻转,随机裁剪扭曲图片等,以增加一些信息量。

  • Early stopping(早停止)

绘制train set 和dev set的cost function和迭代步数的图像,一般前者递减,后者先减小后增大,选择一个两者均较好的迭代步数提前终止。

可以这样做的原因在于:最开始随机赋予w的权值一般是较小的(接近0),随着训练的过程可能不断增大,因此提前停止相当于选择看一个中间大小的权重值。但是它的的缺点在于同时会影响Cost function的拟合效果,不够正交化。

posted @ 2018-01-31 14:52  surimj  阅读(347)  评论(0编辑  收藏  举报