13. Dropout【动手学深度学习v2】

Dropout

1. 理论

  • 好的模型应该对输入的扰动具有鲁棒性。
  • 使用有噪音的数据其实是一种正则化的手段(等价于Tikhonov正则)
  • Dropout则是在层之间加入噪音,本质上是一种正则化的手段

2. 计算与使用

  • 无偏差地加入噪音(期望保持不变)
    在这里插入图片描述
    E [ x ′ ] = p ∗ 0 + ( 1 − p ) ∗ x 1 − p = x E[x']=p*0+(1-p)*\frac{x}{1-p}=x E[x]=p0+(1p)1px=x

  • 训练使用:一般用于全连接层的输出上
    在这里插入图片描述
    在这里插入图片描述
    ps:dropout是一种正则项,正则项仅在训练中使用,对模型的参数更新起作用。

  • 预测中使用:直接返回输出。 h = d r o p o u t ( h ) h=dropout(h) h=dropout(h)

4. 代码

  • torch.nn.Dropout(p=0.5, inplace=False):p表示随机扔掉的概率
    input:( ∗ *
    output:( ∗ *
>>> m = nn.Dropout(p=0.2)
>>> input = torch.randn(20, 16)
>>> output = m(input)

3. 小结

  • Dropout是将一些输出项随机置0来控制模型的复杂度,一般效果很好(一般好于L2)
  • 常作用于全连接层的输出上;而卷积由于参数少因此不易过拟合不太常用dropout;RNN中一般在不同层循环结构体之间使用dropout
  • dropout的p是用于控制模型复杂度的超参数(常见的取值是0.1、0.5、0.9)
  • 补充一些看到的博客关于Dropout的观点:
      在设计网络时,设定的每层神经元代表一个学习到的中间特征(即几个权值的组合),网络所有神经元共同作用来表征输入数据的特定属性(如图像分类中,表征所属类别)。当相对于网络的复杂程度(即网络的表达能力、拟合能力)而言数据量过小时,出现过拟合,显然这时各神经元表示的特征相互之间存在许多重复和冗余。
      dropout的直接作用是减少中间特征的数量,从而减少冗余,即增加每层各个特征之间的正交性(数据表征的稀疏性观点也恰好支持此解释)。

参考博客:dropout层

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值