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

  • 训练使用:一般用于全连接层的输出上
    13. Dropout【动手学深度学习v2】_第1张图片
    13. Dropout【动手学深度学习v2】_第2张图片
    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层

你可能感兴趣的:(学习笔记,深度学习,cnn,人工智能)