半监督领域自适应之CCSA--Unified Deep Supervised Domain Adaptation and Generalization

文章目录

    • 介绍
    • 论文和实现
    • 模型架构

介绍

Unsupervised domain adaptation (UDA)无监督领域自适应不需要目标域任何标签数据,但是需要大量的目标域数据才能适应数据的分布,并没有任何的语义信息(标签)。半监督的领域适应只需要少量的目标域标签数据就能达到超过UDA的性能。实际应用中也更符合要求,我们可以在新的领域得到少量的标签数据。CCSA充分利用目标域少量(甚至一个)标签数据的语义信息,构建正负训练对,从而在目标域得到好的分类器。

论文和实现

论文:https://arxiv.org/abs/1709.10190v1
实现:https://github.com/samotiian/CCSA
https://github.com/dupanfei1/deep-transfer-learning-for-waveform/tree/master/semisupervised/CCSA_modu (个人修改)

模型架构

一、Domain adaptation
半监督领域自适应之CCSA--Unified Deep Supervised Domain Adaptation and Generalization_第1张图片

非对抗的方法,利用两个同样的网络(Siamese网络),分别对源域和目标域编码,最后在Loss层优化两个编码的相似性。使源域数据分布和目标域分布在语义上对齐,主要包含3个Loss:
 语义对齐loss 最小化 来自不同domain的同一类样本之间的距离
d是嵌入空间中的某种距离度量,比如欧式距离
在这里插入图片描述
 分隔loss 最大化 来自不同domain的不同类的样本之间的距离
k是某种相似性度量(分隔loss最大化等同于让相似度最小)
在这里插入图片描述
 分类loss保证识别准确率
在这里插入图片描述

细节
半监督领域自适应之CCSA--Unified Deep Supervised Domain Adaptation and Generalization_第2张图片
距离度量k采用欧氏距离
相似性度量采用(10)式的方法,m表示分隔度(超参数),当两个分布很相似时,k接近m;当不相似时,k接近0。

实现

def eucl_dist_output_shape(shapes):
    shape1, shape2 = shapes
    return (shape1[0], 1)

#对比loss 1 - alpha
def contrastive_loss(y_true, y_pred):
    margin = 1 #m值
    print y_true,y_pred
    return K.mean(y_true * K.square(y_pred) + (1 - y_true) * K.square(K.maximum(margin - y_pred, 0)))

半监督领域自适应之CCSA--Unified Deep Supervised Domain Adaptation and Generalization_第3张图片
最左边是原始数据聚类结果,中间是直接模型迁移的聚类结果,最右边是使用CCSA适应后的聚类结果。可以看到经过适应后同一类数据不管是来自哪个域都被聚在一起。

二、Domain generalization(待续)

半监督领域自适应之CCSA--Unified Deep Supervised Domain Adaptation and Generalization_第4张图片

你可能感兴趣的:(迁移学习)