第二章第6节 丢弃法(droupout)

除了前一节介绍的权重衰减以外,深度学习模型常常使用丢弃法来应对过拟合问题。丢弃法有一些不同的变体。本节中提到的丢弃法特指倒置丢弃法(inverted dropout)。

2.6.1 方法

回忆一下,“多层感知机”一节的图中描述了一个单隐藏层的多层感知机。其中输入个数为4,隐藏单元个数为5,且隐藏单元h_ii=1, \ldots, 5)的计算表达式为

                                                                                      h_i = \phi\left(x_1 w_{1i} + x_2 w_{2i} + x_3 w_{3i} + x_4 w_{4i} + b_i\right)

这里\phi​​​​是激活函数,​​x_1, \ldots, x_4是输入,隐藏单元i的权重参数为w_{1i}, \ldots, w_{4i},偏差参数为b_i。当对该隐藏层使用丢弃法时,该层的隐藏单元将有一定概率被丢弃掉。设丢弃概率为p,那么有p的概率h_i会被清零,有1-p的概率h_i会除以1-p做拉伸。丢弃概率是丢弃法的超参数。具体来说,设随机变量\xi_i为0和1的概率分别为p和1-p。使用丢弃法时我们计算新的隐藏单元h_i^'

                                                                                     h_i' = \frac{\xi_i}{1-p} h_i

由于E(\xi_i) = 1-p,因此

                                                                                     E(h_i') = \frac{E(\xi_i)}{1-p}h_i = h_i

即丢弃法不改变其输入的期望值。让我们对隐藏层呢个使用丢弃法,一种可能的结果如图2.6.1所示,其中h_2h_5被清零。这时输出值的计算不再依赖h_2h_5,在反向传播时,与这两个隐藏单元相关的权重的梯度均为0。由于在训练中隐藏层神经单元的丢弃是随机的,即h_1, \ldots, h_5中的任一个,从而在训练模型时起到正则化的作用,并可以用来应对过拟合。在测试模型时,我们为了拿到更加确定性的结果,一般不使用丢弃法。

                                                                               

                                                                              图2.6.1 隐藏层使用了丢弃法的多层感知机

2.6.2 从零开始实现

根据丢弃法的定义,我们可以很容易地实现它。下面的dropout函数将以drop_prob的概率丢弃NDArray输入X中的元素。

我们运行几个例子来测试一下dropout函数。其中丢弃概率分别为0、0.5和1。

定义模型参数

实验中,我们依然使用“softmax回归的从零开始实现”一节中介绍的Fashion-MNIST数据集。我们将定义一个包含两个隐藏层的多层感知机,其中两个隐藏层的输出个数都是256。

定义模型

下面定义的模型将全连接层和激活函数ReLU串起来,并对每个激活函数的输出使用丢弃法。我们可以分别设置各个层的丢弃概率。通常的建议是把靠近输入层的丢弃概率设得小一点。在这个实验中,我们把第一个隐藏层的丢弃概率设为0.2,把第二个隐藏层的丢弃概率设为0.5。我们可以通过“自动求梯度”一节中介绍的`is_training`函数来判断运行模式为训练还是测试,并只需在训练模式下使用丢弃法。

训练和测试模型

这部分与之前多层感知机的训练和测试类似。

2.6.3 简洁实现

在Gluon中,我们只需要在全连接层后添加Dropout层并指定丢弃概率。在训练模型时,Dropout层将以指定的丢弃概率随机丢弃上一层的输出元素;在测试模型时,Dropout层并不发挥作用。

下面训练并测试模型

 

 

     

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值