learning loss for active learning 论文学习笔记

learning loss for active learning 论文学习笔记

这是CVPR 2019上的一篇文章,作者是韩国人。

​ 本文是设计了一个不针对具体任务的主动学习方法,在主model上附加了一个副model,主model可以是分类任务的model,也可以是检测任务的model;而副model是为了预测data的loss,从而将所有的data的loss排序选出topK个加入标签来进行主动学习训练。

learning loss for active learning 论文学习笔记

​ 作者提出,现有的主动学习方法总共分为三类:

  1. 基于uncertainty的(如找分类任务决策边界,二分类任务中分类概率0.5的,monte carlo dropout)
  2. 基于diversity(找到数据分布和whole dataset一致的small dataset)
  3. 基于expected model change(对网络的影响有多大)

​ 副model利用主model里面的多个特征层来进行预测loss和训练,所以副model的结构比较简单,带来的负担也比较小。而且这个结构能够相对固定,面对不同的任务时都可以表现的比较好,因为本文主动学习的目的就是找到loss比较大的未标注数据,数据没有标注所以不能直接计算loss,需要将loss未卜先知预测出来,如何设计一个网络来学习预测未知数据的loss便是本文的主要目标。

此文所提出的主动学习方法分为以下几步:
  1. 从unlabeled的数据池里随机挑选出K个添加标签,完成初始化。
  2. 用标注好的数据集训练网络(包括主、副网络)。
  3. 用副网络(loss predict model)来对整个数据集预测每张图片的loss。
  4. 选出topK个loss最高的图片添加标注后加入训练集。
  5. 重复2-4,直至模型表现良好或者标注成本达到极限。

本文最重要的任务就是设计loss predict model以及设计损失函数。model如下图所示

learning loss for active learning 论文学习笔记
learning loss for active learning 论文学习笔记
​ 经过全局平均池化后将多个channel上拼接成一个一维的1*128的向量,在不同的feature map处输出几个向量,将几个向量拼接成一个向量后用全连接层输出为一个loss值。

​ 输入一张图片,model产生两个输出,一个是输出的结果(boundingbox 和类别),另一个是预测的loss,将这张的图片的groundtruth和输出结果可以产生一个gt—loss,predict—loss和gt-loss可以再得到一个关于预测的loss 的loss,我们可以用这两个部分来进行训练。

learning loss for active learning 论文学习笔记

​ 但是这个Lloss不能直接用差方均值,甚至这个值里面不能用到关于gt-loss的值,因为对于同一个图片在不同的epoch或者不同的cycle中,他的gt-loss是要减小的,如果只是用了均方误差的话,他只会学习如何跟踪loss的变化,并不具有实用意义。所以作者设计了一个新的关于loss的loss的定义方法。

learning loss for active learning 论文学习笔记
Li和Lj是组成了图片对的两张图片,mini-bantch为B,将B分成B/2个图片对,对每个图片对来进行计算loss。

如果Li大于Lj,如果预测Li小于预测的Lj+一部系统,则系统会增加预测Li,降低预测的Lj。

所以最终的训练loss是

learning loss for active learning 论文学习笔记

作者在分类任务、目标检测、人体关键点都做了实验,实验结果都好于其他方法,就不把他们吹牛逼的图放上来了,我要自己做了实验复现后再贴图。

点都做了实验,实验结果都好于其他方法,就不把他们吹牛逼的图放上来了,我要自己做了实验复现后再贴图。