【论文阅读笔记】基于反向传播的无监督域自适应研究

你是否有过这样的经历:在MNIST数据集上训练出来的网络,同样去跑相近的数据集,比如MINIST-M,准确率大打折扣?或者是想跑另外一个没有标签的数据集却没有精力去标注?那么这篇文章可以提供一些启示,带你进入迁移学习的知识领域

原文地址

Unsupervised Domain Adaptation by Backpropagation

这篇文章主要提出了利用一个domain classifier来增强网络迁移性的方法,虽然比较直觉,但是其推理思想以及梯度反转层的描述非常清晰

可以看到,绿色部分是CNN,主要用来提取特征,蓝色部分分类器,粉色部分是domain classifier ,其中必要关键的就是那个gradient reversal layer,梯度反转层。


模型要应用到数据集分为两部分:源域(source domain)和目标域(target domain)。前者是可以很方便地训练的数据集,后者是很少有标签或者就没标签的数据集。这就是一个半监督或者无监督的学习问题。由于存在dataset bias,这个判别模型不能直接移植到目标域,否则下过会很差,在本文结构中CNN的作用主要是找到合适的features,这些features可以送到全连接分类器进行分类,同时送到domain classifier ,让domain分类器得到如何分辨domian的梯度,经过梯度反转,使得CNN搞出来的features更加迷惑domain classifier,最后使得domain classifier无法分辨出这两个domain。这时,任务就达到了,因为在无法分辨两个分类器的情况下,这些features彩色这两个domain共享的,这时把CNN网络迁移到另外这个分布,效果会好很多。这个和GAN的思想比较近似,但是对抗部分是和整个网络同时进行训练的。具体梯度更新方法如下:

文章提到,还有其他的方法来进行迁移学习,例如对两外一个domain进行转换等等,而本文利用对抗网络的框架来学习域不变特征在某些数据集的千以上超出了之前的state of art。

f代表卷积参数,y代表全连接参数,d代表domain分类器参数。梯度反传层本质上是如下方程,正传递时候不做任何改变,反向传播的时候吧值变为负的。这在tensorflow等比较广泛应用的框架内是比较容易做到的。


下面是一些相近domain之间的例子

下图是不同方法的准确度,source only指的是只在原来数据集上训练网络后迁移过去的,SA是其他一种出色的方法,这里不做赘述。第三行是本文方法达到的精度,最后一个是在目标域上直接训练的精度,算是上界。

下图是将为后的投影,蓝色代表源域,红色代表目标域,可以看出,采用domain classifier帮助训练的网络能更好地在进行迁移。

编辑于 2018-05-26

文章被以下专栏收录

    深度学习从精通到入门,标题有点搞笑,其实初衷有两个,第一就是希望广大像我一样的DL萌新们能脚踏实地从感性和基础的角度看待问题,第二就是真正的高手是大智若愚的,我们应该拒绝做华丽的调包侠!本专栏的文章也算是个人的学习笔记,个人智力毅力都属于一般水平,所以尽可能地用理性直白的角度探求问题本质,然后再精进细化战术水平。衷心希望大家能指出内容上的错误,感谢关注!