简介
参考资料[1][2]:Open set domain adaptation的解读,截至发文,谷歌学术引用88。第1篇是会议版本,发表在,第2篇是期刊版本,发表在
上。第2篇相对第一篇增加了使用线性映射进行域对齐的理论来源(参考资料3,4),增加了一些实验。附上作者的开源代码:https://github.com/Heliot7/open-set-da。由于开源代码比较复杂,解读能力有限,没有复现。
关键字
开放集(open set),域适应(domain adaptation) ,深度学习,机器学习
正文
1. 概述
首先提出了OSDA问题场景,通过两个步骤迭代来解决问题。步骤一通过距离度量相似度,为target域中的样本分配伪标签,分离出know和unknow;步骤二根据分离出的know样本,通过线性映射对齐source和target域。迭代至收敛后,在source上训练分类器应用到target上完成任务。该过程相当于逐步将source样本移动至target域内,最后训练分类器。
2. 应用场景
应用的场景参考下图,该图参考了资料[6]自行绘制。文献[1]的应用场景是图中第2个,source和target都含有unknow的情况。
3. 基本思路和解决方案
按照问题来,先分离know和unknow,再对齐域,最后正常学习。分离know和unknow时,使用的相似度度量为样本距离类中心的距离;对齐域时用线性映射,映射的目标是类内距离最小化。
4. 具体方法和实现
(1)分离know和unknow
如何为target样本分配伪标签呢?最常用的就是利用距离作为相似度度量,由于是利用距离作为相似度度量,所以首先要定下来是和谁的距离作为度量,比较朴素的就是与类中心的距离了,这里已知的类中心只能由source提供,source一共提供了k个需要预测的know类,以及1个unknow类的类中心,也就是共有k+1个类中心。那么target样本距离哪个类中心近,就归为哪个类。但是这里存在source和target不同域(分布不同)的情况,因此离的比较远的样本可信度就比较低,所以为了提高算法的效果,在分配伪标签的过程中,增加了一种类别不能确定的类别。这样,target的样本有三种可能性。第1种是属于某个know类;第2种是属于unknow类;第3种是类别尚未明确,称为异常点。凡是target样本与类中心的距离超过一定阈值λ的都属于第3种异常点,剩下的离哪个类中心近就属于哪个类(含source的unknow类),这里具体的阈值λ设置为target样本与所有类中心中最大距离和最小距离的一半。用数学表达式写下来就是:
其中dct,代表类别c的类中心与target的样本xt的距离。xct取值只能为0或1,为1时表示样本xt属于c类。ot类似只能为0或1,为1时代表xt属于尚未确定的类。约束条件1要求一个样本仅属于一个类,条件2要求每个类至少1个样本,条件3约束xct和ot取值只能为0或1。这里只讲无监督的情况。
(2)对齐source和target
对齐两个域,也就是减少source和target域数据的分布差异。怎么减少呢,把source的数据按照一定的规则映射到target中,这时候可以认为这两个域重叠了,那么分布差异就小了。这里用一个线性映射W来实现,source经过映射后,与target域中的同类样本间的总距离更小了,用数学来表达就是:
最后经过上面两个步骤的迭代收敛至f(w)小于一定的值0.01或最大迭代次数。迭代收敛后,将source样本通过训练好W映射至target中,使用libsvm训练出一个分类器,最后对target进行分类。
5. 对比方法
基于深度的对比方法有:LSVM,DAN,RTN,BP。基于深度的对比方法在分类层上使用Lsvm代替softmax层最后进行分类测试。
非深度的对比方法有:TCA,GFK,SA,CORAL。
另外还有OSR的方法,OS-SVM。
6. 数据集及实验设置
迭代次数:最大为10或满足下式度量小于0.01
分类器Svm:实验最后采用的linear svm,多分类器训练形式为ovo,用的是libsvm版本(参考文献[1]内的参考文献8)。惩罚参数C=0.001。其余设置参考文献[1]内的12和39。
异常点:阈值设置为
效果度量:使用类平均准确率,在原文中没有见到详细的说明,是参考资料[5]中的说明才基本明确其准确率的计算方法,共三种类型CS,OS,OS。
CS:使用source的share类训练,在target的share类上测试,计算每一个类的准确率再平均。
OS:使用source的所有类(含未知类,即将非share类整合成一个未知类)训练,在target的所有类(含未知类)上测试,计算每一个类的准确率再平均。
OS:使用source的所有类(含未知类,即将非share类整合成一个未知类)训练,在target的所有类(含未知类)上测试,仅计算share类的每一个类准确率再平均。
Office数据集:与Cal-tech共同的类为share类,剩下的按字母序,11-20为source的unknow类,21-31为target的unknow类。补充说明下,根据对文献内容的理解,Office数据集在本文中有两种形式,如果是深度的对比方法使用的是Office的原始形式,即图像,而本文提出的方法ATI以及非深度对比方法用的DeCAF7的特征。在深度对比方法中使用全部的样本作为训练集,在非深度对比方法中训练集的样本数量为A(20),W(8),D(8),随机抽样,共实验5次,准确率取均值和标准差。
Dense-Dataset:由Bing,Caltech256,Imagenet,Sun四个数据集公共类组成,共40类。取1-10作为share类,11-25作为source的unknow类,26-40作为target的unknow类。作为source的每类抽取50个样本,target每类30个样本,除了sun数据集,它只用20个样本。使用这些样本的DeCAF7特征完成学习。
Sparse-Dataset:由Pascal07,Caltech101,Office三个数据集组成,使用公共类作为share类,其余类都作为unknow。使用这些样本的DeCAF7特征完成学习。
动作识别数据集:Kinetics-UCF101。
合成数据集:VisDA‘17-Pascal3D。
7. 分析
分析:算法成功的关键是fc7特征本身具有较好的共同特征,适用于域适应的场景,其次fc7特征也适合线性映射完成域适应。
另外在期刊版本中增加了一个实验(table2),似乎证明了在两个迭代的步骤中起重要作用的是第一个伪标签赋值的步骤,这么说fc7特征符合高斯分布?异常点阈值的实验(fig5),说明在给定伪标签的样本数量不足的情况下,准确率也难以保证。
问题:异常点的确定这里有个作为超参数的阈值;source的unknow和target的unknow是不一样的,且有多个类,整合作为一个未知类,作为类中心进行聚类未必合适。期刊版本的fig3也说明了这种方法在target数量稀少时会失效。
参考资料
[1] Panareda Busto, Pau, and Juergen Gall. "Open set domain adaptation." Proceedings of the IEEE International Conference on Computer Vision. 2017.
[2] Busto, Pau Panareda, Ahsan Iqbal, and Juergen Gall. "Open Set Domain Adaptation for Image and Action Recognition." IEEE Transactions on Pattern Analysis and Machine Intelligence (2018).
[3] Bengio, Yoshua, et al. "Better mixing via deep representations." International conference on machine learning. 2013.
[4] Upchurch, Paul, et al. "Deep feature interpolation for image content changes." Proceedings of the IEEE conference on computer vision and pattern recognition. 2017.
[5] Saito, Kuniaki, et al. "Open set domain adaptation by backpropagation." Proceedings of the European Conference on Computer Vision (ECCV). 2018.
[6] Zhang, Hongjie, et al. "Improving Open Set Domain Adaptation Using Image-to-Image Translation." 2019 IEEE International Conference on Multimedia and Expo (ICME). IEEE, 2019.