Domain Agnostic Learning with Disentangled Representations
第一章 领域未知的表示学习
文章目录
前言
Domain Agnostic Learning with Disentangled Representations 为ICML2019的论文,主要用接纠缠解决domain agnostic。 没看之前,以为是一个multi-source to single-target.
论文是single-source 去预测 multi-target。而且在训练过程中,使用到了target数据,其实是一个领域自适应问题,不是zero-shot的问题。
这篇论文的主要流程。
一、方法介绍和相关代码
本文使用了解纠的方法,首先分解了domain feature 为domain-special 和 domain-invariant,关于domain的解纠缠使用了互信息和对抗反梯度domain分类。
然后基于domain-invariant的特征进行语义分类,然后语义分类结果的对抗,获取了无关语义的特征提取器。其中使用了domain-invariant 和 class-inrariant的互信息,让两种特征尽量不相关,最后保留了domain-invariant-class-special feature进行分类。
其中还使用了reconstruction的方法,希望能还原以前的数据,这样的方法一般可以用在监督学习中,供下游任务进行分类使用。。
二、解纠缠代码
首先论文先用generate 生成了F1这样的base feature,然后利用三个神经网络进行解纠缠:
self.C = nn.ModuleDict({
'ds': Classifier(source=source, target=target), ## domain-special
'di': Classifier(source=source, target=target), ## domain-inviriant
'ci': Classifier(source=source, target=target) ## class-inviriant
})
其实是一个神经网络映射到三个空间,接下来三个空间分别进入不同的分类器和loss进行约束。
2.1 约束1
交叉熵,对三个解纠缠的特征都进行了分类。
for key in ['ds', 'di', 'ci']:
_loss