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 ] := sup f ∈ F ( E p [ f ( x ) ] − E q [ f ( y ) ] ) MMD [ F , p , q ] := sup f ∈ F ( E p [ f ( x ) ] − E q [ f ( y ) ] )
MMD [ F , X , Y ] := sup f ∈ F ( 1 m m ∑ i = 1 f ( x i ) − 1 n n ∑ i = 1 f ( y i ) ) MMD [ F , X , Y ] := sup f ∈ F ( 1 m ∑ i = 1 m f ( x i ) − 1 n ∑ i = 1 n f ( y i ) )
理解: 如果两个分布一样时,那么只要采样的样本足够多,那么不论函数域怎么定义,其 MMD 距离都是 0 0 ,因为不论通过什么样的函数映射后,两个一样的分布映射后的分布还是一样的,那么他们的期望之差都为 0 0 ,上界也就是 0 0 。
MMD 的平方公式:
MMD [ F , X , Y ] = [ 1 m 2 m ∑ i , j = 1 k ( x i , x j ) − 2 m n m , n ∑ i , j = 1 k ( x i , y j ) + 1 n 2 n ∑ i , j = 1 k ( y i , y j ) ] 1 2 MMD [ F , X , Y ] = [ 1 m 2 ∑ i , j = 1 m k ( x i , x j ) − 2 m n ∑ i , j = 1 m , n k ( x i , y j ) + 1 n 2 ∑ i , j = 1 n k ( y i , y j ) ] 1 2
在实际应用中,对于第 l l 层,MMD 的平方值是用经验核均值嵌入来估计的:
^ D m m d l = 1 n 2 s n s ∑ i = 1 n s ∑ j = 1 k l ( ϕ l ( x s i ) , ϕ l ( x s j ) ) + 1 n 2 t n t ∑ i = 1 n t ∑ j = 1 k l ( ϕ l ( x t i ) , ϕ l ( x t j ) ) − 2 n s n t n s ∑ i = 1 n t ∑ j = 1 k l ( ϕ l ( x s i ) , ϕ l ( x t j ) ) ( 2 ) D ^ l m m d = 1 n s 2 ∑ i = 1 n s ∑ j = 1 n s k l ( ϕ l ( x i s ) , ϕ l ( x j s ) ) + 1 n t 2 ∑ i = 1 n t ∑ j = 1 n t k l ( ϕ l ( x i t ) , ϕ l ( x j t ) ) − 2 n s n t ∑ i = 1 n s ∑ j = 1 n t k l ( ϕ l ( x i s ) , ϕ l ( x j t ) ) ( 2 )
其中,x s ∈ S ′ ⊂ S x s ∈ S ′ ⊂ S ,x t ∈ T ′ ⊂ T x t ∈ T ′ ⊂ T ,n s = ∣ ∣ S ′ ∣ ∣ n s = | S ′ | ,n t = ∣ ∣ T ′ ∣ ∣ n t = | T ′ | 。S ′ S ′ 和 T ′ T ′ 分别表示从 S S 和 T T 中采样的小批量源数据和目标数据。k l k l 表示深度神经网络第 l l 层选择的核。
MMD 公式推导
3 方法
3.1 对比域差异
CDD 明确地考虑类信息,并衡量跨域的类内和类间的差异。最小化类内域差异以压缩类内样本的特征表示,而最大以类间域差异使彼此的表示更远离决策边界。 联合优化了类内和类间的差异,以提高了自适应性能。
所提出的对比域差异(CDD)是基于条件数据分布之间的差异。MMD 没有对数据分布的类型(例如边际或条件)的任何限制,MMD 可以方便地测量 P ( ϕ ( X s ) ∣ Y s ) P ( ϕ ( X s ) ∣ Y s ) 和 Q ( ϕ ( X t ) ∣ Y t ) Q ( ϕ ( X t ) ∣ Y t ) 之间的差异:
D H ( P , Q ) ≜ sup f ∼ H ( E X s [ f ( ϕ ( X s ) ∣ Y s ) ] − E X t [ f ( ϕ ( X t ) ∣ Y t ) ] ) H D H ( P , Q ) ≜ sup f ∼ H ( E X s [ f ( ϕ ( X s ) ∣ Y s ) ] − E X t [ f ( ϕ ( X t ) ∣ Y t ) ] ) H
假设:
μ c c ′ ( y , y ′ ) = { 1 if y = c , y ′ = c ′ 0 otherwise μ c c ′ ( y , y ′ ) = { 1 if y = c , y ′ = c ′ 0 otherwise
D H ( P , Q ) D H ( P , Q ) 核均值平方嵌入 :
^ D c 1 c 2 ( ^ y t 1 , ^ y t 2 , ⋯ , ^ y t n t , ϕ ) = e 1 + e 2 − 2 e 3 ( 3 ) D ^ c 1 c 2 ( y ^ 1 t , y ^ 2 t , ⋯ , y ^ n t t , ϕ ) = e 1 + e 2 − 2 e 3 ( 3 )
其中:
e 1 = n s ∑ i = 1 n s ∑ j = 1 μ c 1 c 1 ( y s i , y s j ) k ( ϕ ( x s i ) , ϕ ( x s j ) ) ∑ n s i = 1 ∑ n s j = 1 μ c 1 c 1 ( y s i , y s j ) e 2 = n t ∑ i = 1 n t ∑ j = 1 μ c 2 c 2 ( ^ y t i , ^ y t j ) k ( ϕ ( x t i ) , ϕ ( x t j ) ) ∑ n t i = 1 ∑ n t j = 1 μ c 2 c 2 ( ^ y t i , ^ y t j ) e 3 = n s ∑ i = 1 n t ∑ j = 1 μ c 1 c 2 ( y s i , ^ y t j ) k ( ϕ ( x s i ) , ϕ ( x t j ) ) ∑ n s i = 1 ∑ n t j = 1 μ c 1 c 2 ( y s i , ^ y t j ) ( 4 ) e 1 = ∑ i = 1 n s ∑ j = 1 n s μ c 1 c 1 ( y i s , y j s ) k ( ϕ ( x i s ) , ϕ ( x j s ) ) ∑ i = 1 n s ∑ j = 1 n s μ c 1 c 1 ( y i s , y j s ) e 2 = ∑ i = 1 n t ∑ j = 1 n t μ c 2 c 2 ( y ^ i t , y ^ j t ) k ( ϕ ( x i t ) , ϕ ( x j t ) ) ∑ i = 1 n t ∑ j = 1 n t μ c 2 c 2 ( y ^ i t , y ^ j t ) e 3 = ∑ i = 1 n s ∑ j = 1 n t μ c 1 c 2 ( y i s , y ^ j t ) k ( ϕ ( x i s ) , ϕ ( x j t ) ) ∑ i = 1 n s ∑ j = 1 n t μ c 1 c 2 ( y i s , y ^ j t ) ( 4 )
Note:1:当 c 1 = c 2 = c c 1 = c 2 = c 时,它测量类内域差异;2:当 c 1 ≠ c 2 c 1 ≠ c 2 时,它成为类间域差异。
CDD 完整计算如下:
^ D c d d = 1 M M ∑ c = 1 ^ D c c ( ^ y t 1 : n t , ϕ ) intra − 1 M ( M − 1 ) M ∑ c = 1 M ∑ c ′ = 1 c ′ ≠ c ^ D c c ′ ( ^ y t 1 : n t , ϕ ) inter ( 5 ) D ^ c d d = 1 M ∑ c = 1 M D ^ c c ( y ^ 1 : n t t , ϕ ) ⏟ intra − 1 M ( M − 1 ) ∑ c = 1 M ∑ c ′ = 1 c ′ ≠ c M D ^ c c ′ ( y ^ 1 : n t t , ϕ ) ⏟ inter ( 5 )
^ D c d d L = L ∑ l = 1 ^ D c d d l ( 6 ) D ^ L c d d = ∑ l = 1 L D ^ l c d d ( 6 )
源域交叉熵:
ℓ c e = − 1 n ′ n ′ s ∑ i ′ = 1 log P θ ( y s i ′ ∣ x s i ′ ) ( 7 ) ℓ c e = − 1 n ′ ∑ i ′ = 1 n s ′ log P θ ( y i ′ s ∣ x i ′ s ) ( 7 )
目标函数:
min θ ℓ = ℓ c e + β ^ D c d d L ( 8 ) min θ ℓ = ℓ c e + β D ^ L c d d ( 8 )
3.3 CAN 优化
3.3.1 CAN 的框架
3.3.2 交替优化
步骤:
1)使用源域标签计算相应的类中心 O t , c O t , c :
O s c = ∑ n s i = 1 1 y s i = c ϕ 1 ( x s i ) ∥ x i ) ∥ O s c = ∑ i = 1 n s 1 y i s = c ϕ 1 ( x i s ) ‖ x i ) ‖ $
1 y s i = c = { 1 if y s i = c ; 0 otherwise. , c = { 0 , 1 , … , M − 1 } 1 y i s = c = { 1 if y i s = c ; 0 otherwise. , c = { 0 , 1 , … , M − 1 }
2)计算目标样本与类中心之间的距离:
dist ( a , b ) = 1 2 ( 1 − a ⋅ b ∥ a ∥ ∥ b ∥ ) dist ( a , b ) = 1 2 ( 1 − a ⋅ b ‖ a ‖ ‖ b ‖ )
3)聚类更新:
(1) 对每个目标域的样本找到所对应的聚类中心: ^ y t i = arg min dist c ( ϕ ( x t i ) , O t c ) y ^ i t = arg min dist c ( ϕ ( x i t ) , O t c ) ;
(2) 更新聚类中心: O t c ← ∑ N t i = 1 1 ^ y t i = c ϕ 1 ( x t t ) ∥ ϕ 1 ( x i ) ∥ O t c ← ∑ i = 1 N t 1 y ^ i t = c ϕ 1 ( x t t ) ‖ ϕ 1 ( x i ) ‖
迭代直到收敛或者抵达最大聚类步数停止; 4)聚类结束后,每个目标域的样本 x t i x i t 被赋予一个标签 ^ y t i y ^ i t ; 5)设定一个阈值 D 0 ∈ [ 0 , 1 ] D 0 ∈ [ 0 , 1 ] ,将属于某个簇但是距离仍然超过给定阈值的数据样本删除,不参与本次计算 CDD,仅保留距离小于 D 0 D 0 的样本:
^ T = ( x t , ^ y t ) ∣ dist ( ϕ 1 ( x t ) , O t , ^ y t ) < D 0 , x t ∈ T T ^ = ( x t , y ^ t ) ∣ dist ( ϕ 1 ( x t ) , O t , y ^ t ) < D 0 , x t ∈ T
6)此外,为了提供更准确的样本分布的统计数据,假设每个类别挑选出来的集合 ^ T T ^ 的大小至少包含某个数量 N 0 N 0 的样本,不然这个类别本次也不参与计算 CDD,即最后参与计算的类别集为:
C T e = { c ∣ ∑ | T | i 1 ^ y t i = c > N 0 , c ∈ { 0 , 1 , ⋯ , M − 1 } } C T e = { c ∣ ∑ i | T | 1 y ^ i t = c > N 0 , c ∈ { 0 , 1 , ⋯ , M − 1 } }
算法如下:
5 Experiment
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?