深度学习笔记:1.6 dropout正则化 & 1.7 why dose drop-out work?

1.6 dropout正则化

dropout又称随机失活,它是通过给定概率随机失活一些节点,让网络更加简单。

下面介绍一个最常用的方法:‘inverted dropout’ (反向随机失活)

假设我们有一个三层的神经网络,每一层节点keep的概率是0.8,而失活的概率是0.2。

该怎么操作呢?

想法是按照保留概率,生成一个对应维度的0-1矩阵,1代表这个节点被保留,而0表示这个节点被失活。

如上图d3那一行命令,先生成一个对应维度的矩阵,其中每个元素都是服从0-1均匀分布的随机数,而在这些随机数中,小于0.8的值我们记为1。对于均匀分布,我们知道一个数小于0.8的概率就是0.8,所以通过这个操作我们可以使所有节点中有近0.8的节点被保留,而0.2的被失活。

然后a3*d3(elementwise),我们得到这一轮迭代过程中的系数矩阵(d3等于1的系数在a3中被保留),绿框中的操作是为了修正或弥补因为dropout操作而遗漏的那部分,以保证Z期望不变。比如我们有50个节点,在失活概率为0.2的情况下,约有10个节点被失活,这时我们求Z时就会因为这些失活的节点而影响Z值的计算,所以为了保证Z的期望不变,我们用a除以keep-prob以保证Z的期望不变。

在训练阶段使用drop-out,在每一次迭代过程中我们都按照概率随机失活一些节点,但是在模型训练完之后,进行预测时,我们可以不再使用drop-out(no drop-out),因为这时就算使用drop-out进行多轮计算,计算的最终结果和未使用drop-out也是相似的,所以没有必要在预测时也进行多轮的drop-out去得到预测结果。

扫描二维码关注公众号,回复: 2376629 查看本文章

1.7 why dose drop-out work?

为什么drop-out是有用的呢?

intuition:因为我们知道drop-out的机制是在每一轮迭代中按照概率随机失活一些节点,那么在拟合时因变量便不会过度依赖某一单一变量,而是会将权重分散开,有点类似于二范数压缩权重的意思。

但是二范数对不同权重衰减不同(depending on the size of the activations being multiplied that way),且L2与drop-out应用方式有些不同,L2相比于drop-out甚至更适用于不同的输入范围。

在使用drop-out正则化时,超参数为保留概率(keep-prob),对于不同层这个概率可以不同。如上图中神经网络所示,一般对于输入层的样本我们不采取drop-out,即保留概率设为1,而对于维度较高的系数矩阵,可使用较低的keep-prob以减少过拟合,对于接近输出层的维度较低的参数矩阵,我们可以不使用drop-out。

drop-out一般多用于CV,成为正则化的默认选择,但也有缺点,比如因为在每一轮迭代中随机删除节点,使得目标函数J不再被明确定义,这使复查梯度下降的性能变得困难。一般情况下,我们可以绘制出如上图左下角的图,即目标函数J的值随着梯度下降迭代次数而单调递减,以检验梯度下降性能,而在drop-out的情况下,我们无法绘制该图,失去了这个调试工具。

版权声明:尊重博主原创文章,转载请注明出处https://blog.csdn.net/kkkkkiko/article/details/81164363

猜你喜欢

转载自blog.csdn.net/kkkkkiko/article/details/81164363