learning loss for active learning 论文学习笔记
learning loss for active learning 论文学习笔记
这是CVPR 2019上的一篇文章,作者是韩国人。
本文是设计了一个不针对具体任务的主动学习方法,在主model上附加了一个副model,主model可以是分类任务的model,也可以是检测任务的model;而副model是为了预测data的loss,从而将所有的data的loss排序选出topK个加入标签来进行主动学习训练。
作者提出,现有的主动学习方法总共分为三类:
- 基于uncertainty的(如找分类任务决策边界,二分类任务中分类概率0.5的,monte carlo dropout)
- 基于diversity(找到数据分布和whole dataset一致的small dataset)
- 基于expected model change(对网络的影响有多大)
副model利用主model里面的多个特征层来进行预测loss和训练,所以副model的结构比较简单,带来的负担也比较小。而且这个结构能够相对固定,面对不同的任务时都可以表现的比较好,因为本文主动学习的目的就是找到loss比较大的未标注数据,数据没有标注所以不能直接计算loss,需要将loss未卜先知预测出来,如何设计一个网络来学习预测未知数据的loss便是本文的主要目标。
此文所提出的主动学习方法分为以下几步:
- 从unlabeled的数据池里随机挑选出K个添加标签,完成初始化。
- 用标注好的数据集训练网络(包括主、副网络)。
- 用副网络(loss predict model)来对整个数据集预测每张图片的loss。
- 选出topK个loss最高的图片添加标注后加入训练集。
- 重复2-4,直至模型表现良好或者标注成本达到极限。
本文最重要的任务就是设计loss predict model以及设计损失函数。model如下图所示
经过全局平均池化后将多个channel上拼接成一个一维的1*128的向量,在不同的feature map处输出几个向量,将几个向量拼接成一个向量后用全连接层输出为一个loss值。
输入一张图片,model产生两个输出,一个是输出的结果(boundingbox 和类别),另一个是预测的loss,将这张的图片的groundtruth和输出结果可以产生一个gt—loss,predict—loss和gt-loss可以再得到一个关于预测的loss 的loss,我们可以用这两个部分来进行训练。
但是这个Lloss不能直接用差方均值,甚至这个值里面不能用到关于gt-loss的值,因为对于同一个图片在不同的epoch或者不同的cycle中,他的gt-loss是要减小的,如果只是用了均方误差的话,他只会学习如何跟踪loss的变化,并不具有实用意义。所以作者设计了一个新的关于loss的loss的定义方法。
Li和Lj是组成了图片对的两张图片,mini-bantch为B,将B分成B/2个图片对,对每个图片对来进行计算loss。
如果Li大于Lj,如果预测Li小于预测的Lj+一部系统,则系统会增加预测Li,降低预测的Lj。
所以最终的训练loss是
作者在分类任务、目标检测、人体关键点都做了实验,实验结果都好于其他方法,就不把他们吹牛逼的图放上来了,我要自己做了实验复现后再贴图。
点都做了实验,实验结果都好于其他方法,就不把他们吹牛逼的图放上来了,我要自己做了实验复现后再贴图。