Note:[ wechat:Y466551 | 可加勿骚扰,付费咨询 ] 2024年4月6日19:08:16

论文信息

论文标题:Contrastive Adaptation Network for Unsupervised Domain Adaptation
论文作者:Guoliang Kang, Lu Jiang, Yi Yang, Alexander G Hauptmann
论文来源:CVPR 2019
论文地址:download 
论文代码:download

1 前言

  例子:

  

  Left:在适应之前,源数据和目标数据之间存在域偏移;

  Middle:类不可知的自适应在域级将源数据和目标数据对齐,忽略了样本的类标签,因此可能导致次优解。因此,一个标签的目标样本可能与不同标签的源样本不一致;

  Right:本文执行跨域的类感知对齐。为了避免错位,只减少了类内域的差异。将类间域差异最大化,提高了模型的泛化能力。

2 相关工作

2.1 类无关对齐

  MMD 距离(Maximum mean discrepancy),度量在再生希尔伯特空间中两个分布的距离,是一种核学习方法。 两个随机变量的距离为:

    MMD[F,p,q]:=supfF(Ep[f(x)]Eq[f(y)])

    MMD[F,X,Y]:=supfF(1mi=1mf(xi)1ni=1nf(yi))

  理解:如果两个分布一样时,那么只要采样的样本足够多,那么不论函数域怎么定义,其 MMD 距离都是 0,因为不论通过什么样的函数映射后,两个一样的分布映射后的分布还是一样的,那么他们的期望之差都为 0 ,上界也就是 0

  MMD 的平方公式:

    MMD[F,X,Y]=[1m2i,j=1mk(xi,xj)2mni,j=1m,nk(xi,yj)+1n2i,j=1nk(yi,yj)]12

  在实际应用中,对于第 l 层,MMD 的平方值是用经验核均值嵌入来估计的:

    D^lmmd=1ns2i=1nsj=1nskl(ϕl(xis),ϕl(xjs))+1nt2i=1ntj=1ntkl(ϕl(xit),ϕl(xjt))2nsnti=1nsj=1ntkl(ϕl(xis),ϕl(xjt))(2)

  其中,xsSSxtTTns=|S|nt=|T|ST 分别表示从 ST 中采样的小批量源数据和目标数据。kl 表示深度神经网络第 l 层选择的核。

  MMD 公式推导 

3 方法

3.1 对比域差异

  CDD 明确地考虑类信息,并衡量跨域的类内和类间的差异。最小化类内域差异以压缩类内样本的特征表示,而最大以类间域差异使彼此的表示更远离决策边界。联合优化了类内和类间的差异,以提高了自适应性能。

  所提出的对比域差异(CDD)是基于条件数据分布之间的差异。MMD 没有对数据分布的类型(例如边际或条件)的任何限制,MMD 可以方便地测量 P(ϕ(Xs)Ys)Q(ϕ(Xt)Yt) 之间的差异:

    DH(P,Q)supfH(EXs[f(ϕ(Xs)Ys)]EXt[f(ϕ(Xt)Yt)])H

  假设:

    μcc(y,y)={1 if y=c,y=c0 otherwise 

  DH(P,Q) 核均值平方嵌入

    D^c1c2(y^1t,y^2t,,y^ntt,ϕ)=e1+e22e3(3)

  其中:
    e1=i=1nsj=1nsμc1c1(yis,yjs)k(ϕ(xis),ϕ(xjs))i=1nsj=1nsμc1c1(yis,yjs)e2=i=1ntj=1ntμc2c2(y^it,y^jt)k(ϕ(xit),ϕ(xjt))i=1ntj=1ntμc2c2(y^it,y^jt)e3=i=1nsj=1ntμc1c2(yis,y^jt)k(ϕ(xis),ϕ(xjt))i=1nsj=1ntμc1c2(yis,y^jt)(4)

  Note:1:当 c1=c2=c 时,它测量类内域差异;2:当 c1c2 时,它成为类间域差异。

  CDD 完整计算如下:

    D^cdd=1Mc=1MD^cc(y^1:ntt,ϕ)intra 1M(M1)c=1Mc=1ccMD^cc(y^1:ntt,ϕ)inter (5)

3.2 对比自适应网络

  多层对比自适应损失:

    D^Lcdd=l=1LD^lcdd(6)

  源域交叉熵:

    ce=1ni=1nslogPθ(yisxis)(7)

  目标函数:

    minθ=ce+βD^Lcdd(8)

3.3 CAN 优化

3.3.1 CAN 的框架

  

3.3.2 交替优化

  步骤:

  1)使用源域标签计算相应的类中心 Ot,c :

    Osc=i=1ns1yis=cϕ1(xis)xi)$

    1yis=c={1 if yis=c;0 otherwise. ,c={0,1,,M1}

  2)计算目标样本与类中心之间的距离:

    dist(a,b)=12(1abab)

  3)聚类更新:

    (1) 对每个目标域的样本找到所对应的聚类中心: y^it=argmindistc(ϕ(xit),Otc);

    (2) 更新聚类中心: Otci=1Nt1y^it=cϕ1(xtt)ϕ1(xi)

  迭代直到收敛或者抵达最大聚类步数停止;
  4)聚类结束后,每个目标域的样本 xit 被赋予一个标签 y^it
  5)设定一个阈值 D0[0,1]  ,将属于某个簇但是距离仍然超过给定阈值的数据样本删除,不参与本次计算 CDD,仅保留距离小于 D0 的样本:

    T^=(xt,y^t)dist(ϕ1(xt),Ot,y^t)<D0,xtT

  6)此外,为了提供更准确的样本分布的统计数据,假设每个类别挑选出来的集合 T^ 的大小至少包含某个数量 N0 的样本,不然这个类别本次也不参与计算 CDD,即最后参与计算的类别集为: 

    CTe={ci|T|1y^it=c>N0,c{0,1,,M1}}

  算法如下:
  

5 Experiment

  

  

posted @   别关注我了,私信我吧  阅读(1086)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?
Live2D
点击右上角即可分享
微信分享提示