Dropout解析

深度学习系列

第一篇 局部最优点+鞍点+学习率的调节
第二篇 并行计算 深度学习 机器学习
第三篇 长短期记忆网络(LSTM)是什么怎么工作的呢?
第四篇 Dropout解析 代码实现


文章目录

  • 深度学习系列
  • 前言
  • 一、基础知识
    • 1.Dropout改变模型怎么理解?
    • 2. 测试过程的Dropout
    • 3.Pytorch中的Dropout
    • 4. Dropout在什么模型上使用?
  • 二、Dropout为什么行?
  • 三、实际操作的问题
    • Dropout会影响结果?
  • 四、Reference
  • 总结


前言

Dropout是一个防止模型过拟合的方法,它通过随机dropout一些节点来改变模型。因为模型的过拟合是一个严重的问题,而当模型很大,数据很多的时候,我们不可能去训练不同的模型再去合并,所以使用Dropout防止过拟合,减少模型的复杂度


一、基础知识

1.Dropout改变模型怎么理解?

Dropout会在每一轮的时候,随机丢弃一些节点,使得每次模型的结构不一样,如下图,就是Dropout了某些节点后的全连接层。
Dropout解析_第1张图片
在下一次Dropout的时候,它就会dropout其他的节点,使得每次我们的模型不一样。

2. 测试过程的Dropout

使用Dropout的模型在测试的时候是无需Dropout的。我们在建立模型的阶段是通过设置一个概率值P,把一部分节点dropout,但是在测试阶段,我们是无需再去跑模型的,没有Dropout,所有节点都在,这就和建立模型的阶段不一样,会有一定误差,所以在测试阶段我们会对模型的权重进行调整,让它乘上P,让它的性能和模型建立阶段相似。如下图!

Dropout解析_第2张图片
但是这里会有一个问题,在测试阶段还有权重的计算量,一般我们是不希望在测试阶段还有太多的计算量。所以我们会做如下的变化,在模型建立阶段就让权重除于P,P是0-1的值,相当于乘一个倍数。这样去达到我们想要的效果。这里无论是去乘还是去除,都是为了保证使用或者不使用Dropout的期望值一样。使用了Dropout,其输出激活值的期望变为 p*a+(1-p)*0=pa,所以可以除p。

Dropout解析_第3张图片

3.Pytorch中的Dropout

Pytorch中的Dropout其实就是一个层,在torch.nn这个包中,使用的流程类似下图。Dropout是在每一层调用反向操作的时候会丢弃节点,当然,我们可以对多个层操作。
Dropout解析_第4张图片

4. Dropout在什么模型上使用?

一般是用在多层感知机的隐藏层的输出中,是用于全连接层的,很少用于CNN这些,像CNN这些有其他的办法,如权重衰退。

二、Dropout为什么行?

我认为最好的解释方式就是减少了特征的提取,节点之间通过权重进行微妙的联系,通过dropout一些节点,可以让特征之间的联系稍微少一点,这样子去避免过拟合。
但是Dropout可能会让模型的收敛变慢一点

三、实际操作的问题

Dropout会影响结果?

其实Dropout可以选择概率,如果调大了,可能欠拟合,调小了,还是过拟合,所以可以说这就是一个超参数,可以调整的。

四、Reference

Dropout: A Simple Way to Prevent Neural Networks from Overfitting


总结

以上就是我个人对Dropout的理解,希望配合上其他文章,能让初学者更容易理解。如果觉得有用,请大家点赞支持!!!!

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