什么是dropout

  • 在神经网络中,很容易过拟合,dropout的第一个想法就是希望可以缓解过拟合
  • dropout的核心思想就是以概率$p$随机保留网络中的一个单元
  • 如下图,左边一个全连接的前馈神经网络
  • 右边是随机去掉一些单元后,一个子网络,也叫thinned networks

为什么dropout有用

  • 缓解过拟合的方法,最直观的想法就是:加权平均,我们建立多个预测模型,将最后的预测值加权平均
  • 上述想法在小的网络、模型中比较有效,但是如果模型非常大,那么就很难计算了
    • 如权重怎么求
    • 怎么生成多个模型?要么模型结构不一样,要么数据集不一样
  • 上述想法的一种逼近方法就是,生成数量为指数阶的模型,将这些模型的预测值求等权重的几何平均,这些模型是共享权重的
  • dropout就是上面逼近方法的技术
  • 训练过程中,下面的$l$是第$l$层网络,$\mathbf{y}^{(l)}$是某个样本第$l$层网络的输出,也是第$l+1$层网络的输入
    • 这里$r_{j}^{l}$要么为0,要么为1
    • 也就是以$p$的概率丢弃这个unit,丢弃的意思就是让上一层的输入值,变成0
    • 比如输入值$\mathbf{y}^{(l)}$是100维的向量,$p=0.1$,那么$\mathbf{y}^{(l)}$中大概有90个unit会变成0,10个unit会保持原来的值
  • 测试(就是预测)过程中,每个参数都要乘$p$
    • 这里乘$p$的想法就是,在训练过程中,输出值$y_{i}^{(l+1)}$比全连接网的输出值小,那么预测的时候也应该缩小。
    • 如有25个样本同时进行训练,那么就会有25个子网络
    • 这25个子网络,怎么做预测呢?每个子网络预测一遍,再求平均,但是这25个子网络计算太耗时了。而且,我们训练,会有很多批数据进来,每个样本都有一个子网络,如果每个子网络都记住的话,显存扛不住
    • 使用全网络进行预测输出值

dropout的原理

  • 假设模型有$n$个单元(unit),那么丢弃的组合总共有$2^{n}$种可能
  • 最好的办法就是把这$2^{n}$种模型都算一遍,但是这不现实
  • 每个单元有$p$的概率被丢弃

哲学时间

  • 文章说dropout不局限与前馈神经网络,那么attention也可以吗???
  • 文章第二节讲述了提出dropout时,从现实生活种感悟到的一些灵感

  • 这里讲述了有性繁殖的一些理论:

    • 有性生殖,孩子基因的一半来自父亲,一半来源于母亲
    • 无性生殖,孩子的基因大部份与上一代的相同,只有少部分基因不同
    • 无性生殖的孩子,更容易获得环境的适应性:因为上一代的基因很大程度上与环境是相符合的,那么孩子很容易获得上一代适合环境的基因
    • 有性生殖,孩子的基因是随机组合的,那么很容易破坏父母中那些适合环境的基因组合,也就是不利于个体的环境适应性
    • 但是,为什么真实世界里,有性生殖是有机体普遍的方式呢?
  • 有性生殖比较普遍现象的一种解释:
    • 在长时间里,自然选择的标准更倾向于基因的综合能力,而不是个体的适应性
    • 我的理解是,由于基因组合的多样性,保证了群体的多样性,也就是保证了种群面对各种环境的适应性,而无性生殖的繁衍,传承的环境适应性,只是当时的环境。如果环境一旦变化,这个适应性就大大衰减
    • 回到模型,模型可以看作是个体,每个unit看作是基因。这些unit的随机组合,导致了模型的多样性,也就提高了模型对未来数据(未来的环境变化)的处理能力
    • 换句话说,就是缓解了过拟合