丢弃法(Dropout)+QA
丢弃法
-
丢弃法将一些输出项随机置0来控制模型复杂度
-
常作用在多层感知机的隐藏层输出上
-
丢弃概率是控制模型复杂度的超参数
-
通常将丢弃法作用在隐藏全连接层的输出上,通过设定丢弃概率,丢弃隐藏层中的感知机。如下,丢弃概率为0.4
-
丢弃法可以看成正则项
-
丢弃法在训练中把神经元随机丢弃后训练,在预测时网络中的神经元不丢弃,以保证确定性的输出
-
丢弃法每次迭代预测,按丢弃概率随机丢弃一次
QA
Q:老师,请问可以再解释一下为什么"推理中的dropout是直接返回输入"吗?
- dropout是一个正则项,正则项唯一的作用是更新权重时让模型复杂度降低。但在推理时,我们不会更新模型,因此不需要dropout
- 推理如果使用的dropout,会导致不稳定,例如给了猫的图片,可能因为数据丢失,第一次识别是猫,第二次识别是狗,因此需要多算几次推理求平均降低方差
- 训练时候dropout不会有问题,因为训练会跑很多很多次dropout,在几十万次的丢弃中,对整个系统的稳定性不会存在问题
Q:请问沐神,dropout函数返回值的表达式return X*mask/(1.0-p)没被丢弃的输入部分的值会因为表达式分母(1-p)的存在而改变,而训练数据的标签还是原来的值,这怎么理解?
- dropout要么就把输出变成0,要么就要除以(1-p),这是因为随机性保证期望不改变,但标签不改变。
- dropout唯一改变的是隐藏层的输出,不改变输出层的输出结果
Q:请问沐神,训练时使用dropout,推理时不用。那会不会导致推理时输出结果翻倍了?比如dropout=0.5,推理时输出结果是训练时2个子神经网络的叠加而翻倍?
不会,因为除以(1-p),期望不改变,输出结果不变化
Q:老师,dropout每次随机选几个子网络,最后做平均的做法是不是类似于随机森林多决策树做投票的这种思想?
来源就是随机森林
Q∶在解决过拟合问题上,dropout和regularization的主要区别是什么?
可以认为dropout就是一个regularization,都是避免过拟合,可以这两种一起使用
Q:请问老师:Dropout层丢弃的是前一层,还是后一层?
丢弃前一层的输出和后一层的输入,是丢弃层的神经元,所以连接的输出输入也会丢弃
Q: dropout和权重衰减都属于正则,为何dropout效果更好现在更常用呢?
- dropout主要是全连接层使用,权重衰减对于卷积等
- dropout更好调参
Q∶请问,在同样的lr下,dropout的介入会不会造成参数收敛更慢,需要比没有dropout的情况下适当调大lr吗?
- 收敛变慢有可能的,梯度更新会变慢
- 有dropout的情况下不用适当调大lr,dropout不改变期望,lr对期望和方差敏感