CS231n课程笔记6.2:神经网络训练技巧之Ensemble、Dropout

    xiaoxiao2021-03-25  64

    CS231n简介

    详见 CS231n课程笔记1:Introduction。 注:斜体字用于注明作者自己的思考,正确性未经过验证,欢迎指教。

    1. Ensemble

    Karpathy表示:只要使用Ensemble,就可以得到2%的提升。 Ensemble就是训练多个模型,最后把各个模型的结果取均值。 详情请参考 Hinton Neural Network课程笔记10a:融合模型Ensemble, Boosting, Bagging,简单地说主要依赖于凸函数的函数值的期望大于期望的函数值。 Karpathy还提出了一种特殊的Ensemble,在训练一个模型的时候,对于训练过程中得到的参数进行融合。详情如下图:

    2. Dropout

    Dropout的实现参考 CS231n作业笔记2.5:dropout的实现与应用。 Dropout层每次根据概率随机设置某些节点为0。 测试的时候通过估算期望对于Dropout平衡。(可以理解为做了很多次Dropout之后的期望)。具体实现的时候为了保证预测函数与其他层相同,所以需要做一些形式变化,详情参考 CS231n作业笔记2.5:dropout的实现与应用。 Dropout的有效可以从两个角度来看:1. 共享权重的Ensemble(每次Dropout一部分构造一个新的模型)。2. 如果不使用Dropout,同一层内部的多个节点之间可能会协同合作(比如某个节点使得结果偏大,另一个节点的权重变小也会使得结果回归理想值),但这种合作的结果常常使得模型过于敏感,异受噪声影响(加入Regularization可以部分解决这个问题)。而Dropout使得每次都是不同组合的节点共同协作,所以它鼓励节点学到相对独立的权重,但又会有一定的协作能力在里面。所以Dropout起到了类似正则化的效果。

    转载请注明原文地址: https://ju.6miu.com/read-34435.html

    最新回复(0)