Advertisement

半监督学习调研

阅读量:

半监督学习:少量数据wiz label + 大量数据without label


论文:Temporal Ensembling For Semi-supervised Learning

首先引入一个background knowledge,

Exponential Moving Average :

为撒要叫exponential呢?从公式中可以看到,在当前的vt中,时间上更久远的v所占的成分呈指数级下降,作为对比,Simple Moving Average则是等权平均一段时间内的序列值


Π-model :对网络做dropout regularization(随机丢弃其中的一部分参数),同一输入(无标签数据)复制两份随机加上input augmentation(如翻转、平移、遮挡等)放到网络里跑,输出的差值平方加到原来的损失中进行梯度下降

(一个问题:无标签数据的cross entropy是怎么得到的?是用pseudo label还是什么呢)

原理:输入数据没有标签,但我们认为,即使加上一些随机性扰动,同一网络提取的深层次本质特征应该是相似的,因此可以作为衡量模型好坏的一个标准


Temporal Ensembling :1 无标签数据经过网络得到的结果 2 同一组数据各个epoch的 预测结果 EMA加权得到的总的预测结果 二者预测结果的square difference作为loss的一部分加到总损失中进行梯度下降

原理:对于一个正确分类的网络,每个epoch的运行结果应该是相似的,因此可以使用之前epoch的预测结果集成到当前输出中(不知道理论上怎么说明,至少论文作者是这么认为的,结果也证明是有效的)


论文:Mean teachers are better role models

Mean Teacher :一个网络复制两份,一份作为student model,另一份是teacher model,使用student中间层的参数,EMA加权更新teacher的weight

Q1 怎么保证teacher model的性能优于student model?

teacher model的weight是由student model权重EMA迭代产生

Q2 为什么说temporal ensembling每一个epoch进行一次EMA,而mean teacher每个step进行一次?

temporal ensembling中要把所有数据全部跑一遍再计算EMA,mean teacher可以每个step都更新参数

Q3 具体的训练流程

1 初始化student model和teacher model(完全相同)

2 对于dataloader的每一个数据,forward两次。student得到的结果与ground truth计算cross entropy,用student的参数经过EMA加权得到teacher的参数,teacher模型得到的预测结果和student计算consistency loss(MSE),由于使用的是resnet,total loss=cross entropy loss + consistency loss + residual loss

consistency cost

3 基于上面得到的损失函数进行随机梯度下降

ps.1 每次循环teacher网络的参数都会更新,因此EMA不是每个epoch进行一次

ps.2 EMA的decay开始设定得很大(0.999)(即之前的weight占比很小),随着teacher和student的weight参数差别减小,decay逐渐减小

参考资料

[1] 【半监督学习】Π-Model、Temporal Ensembling、Mean Teacher

https://www.cnblogs.com/wuliytTaotao/p/12825797.html

[2] Temporal Ensembling for Semi-Supervised Learning

https://arxiv.org/abs/1610.02242

[3] Mean teachers are better role models: Weight-averaged consistency targets improve semi-supervised deep learning results

https://arxiv.org/abs/1703.01780

[4] mean teacher

<>

全部评论 (0)

还没有任何评论哟~