Multi-Sample Dropout
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Multi-Sample Dropout相关的知识,希望对你有一定的参考价值。
参考技术A 1. 模型结构orginal dropout : 对单个样本,进行单次drop out。
2. 思想
stacking方法中的子模型 。事实证明,用 多个子模型 做模型 融合 可以提高模型的性能。
训练时,对原始数据进行变换,创建出多个分身。分身可能是带噪音,可能是不完整(此方法)。从而提高泛化能力。
3. 实现方法
训练阶段,每次dropout首先会随机的选取50%(这个比例可以自己设置)的神经元,其他50%被丢弃。
通过多次的dropout,从特征中选择了不同的 特征子集 进行训练,相当于重采样。
再通过共享的全连接层和loss层。
loss:每条样本,多个分身,得到的多个loss的平均值最小。
4. 优点
加快收敛,性能提升。dropout只使用在最后的几层,而全连接层的训练时间较快。因此,对比更大的 mini-batch,虽然可以达到相同的效果,但是实际上会增加计算的耗时。
实现简单:在 dropout 层后复制部分训练网络,并在这些复制的全连接层之间共享权重就可以了,无需新运算符。
5. 发散
传统的机器学习算法,如排序中常用的树模型。stack思想下,得到了不同的树。如果就用一棵树呢??泛化能力能变强吗?
Stacking是通过 一个 元分类器或者元回归器来 整合多个 分类模型或回归模型的集成学习技术。基础模型利用整个训练集做训练,元模型将基础模型的特征作为特征进行训练。(N->1) 。基础模型通常包含不同的学习算法,因此stacking通常是异质集成。
6. 缺点
1)模型的设计,存在训练和预测 不一致问题 。训练时,Dropout 往(某些层的)输入加上了乘性噪声。而预测时,理论上,应该是对同一个输入多次传入模型中(模型不关闭Dropout),然后把多次的预测结果平均值作为最终的预测结果。实际上,预测的时候用的是关闭Dropout的单模型,两者未必等价,这就是Dropout的训练预测不一致问题。
2)损失函数的设计,只有交叉熵。如果只有交叉熵这一项,模型的训练结果是“不同的Dropout下,目标类的得分都大于非目标类的得分”。
链接:https://kexue.fm/archives/8496
以上是关于Multi-Sample Dropout的主要内容,如果未能解决你的问题,请参考以下文章