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