Unified Deep Supervised Domain Adaptation and Generalization

article/2025/8/27 9:55:23

论文概述

问题研究背景:supervised domain adaptation(SDA),源域有大量带标签的数据,目标域仅有少量可使用的数据

问题的难点:目标域数据不足导致概率分布在语义上很难对齐和区分。对齐指的是源域图片类别之间的关系与目标域图片类别之间的关系尽可能的相似;区分指的是同一个domain中,不同类别的特征要尽可能不同。

方法的优点:适应的速度快,仅需要少量的数据就可以获得很不错的效果。易于拓展成DG方法。

具体的方法实现
一般来说,一个DA模型对应的 f u n c t i o n function function可以被看作是两个函数的组合 f = h o g . f=h\ o\ g. f=h o g. 其中 g : χ → Z , χ g:\chi \rightarrow Z,\chi g:χZ,χ代表输入的特征空间,Z代表embedding space。 h : z → y 。 h:z\rightarrow y。 h:zyh代表利用embedding space中的特征进行预测的函数。对于源域的数据有 f s = h s o g s f_s=h_s\ o\ g_s fs=hs o gs,对于目标域的数据有 f t = h t o g t f_t=h_t\ o\ g_t ft=ht o gt
为了对齐源域和目标域之间数据的分布(即上述中的g),常使用下面形式的loss:
L C A ( g ) = d ( p ( g ( X s ) ) , p ( X t ) ) L_{CA}(g)=d(p(g(X^s)),p(X^t)) LCA(g)=d(p(g(Xs)),p(Xt))
这个loss的作用就是让源域和目标域中的数据经过映射以后无法被分辨。用原文中的话来说就是 I n t h e e m b e d d i n g s p a c e Z , f e a t u r e s a r e a s s u m e d t o b e d o m a i n i n v a r i n t In\ the\ embedding\ space\ Z,\ features\ are\ assumed\ to\ be\ domain\ invarint In the embedding space Z, features are assumed to be domain invarint
上面的loss对于unsupervised domain adaptation来说很适合,但是存在一个很大的问题:没办法保证不同域之间的语义是对齐的。SDA相较于UDA就可以利用label信息来对齐语义。loss被改写成如下的形式:
L S A ( g ) = ∑ a = 1 C d ( p ( g ( X a s ) , p ( g ( X a t ) ) ) ) L_{SA}(g)=\displaystyle\sum_{a=1}^Cd(p(g(X^s_a),p(g(X^t_a)))) LSA(g)=a=1Cd(p(g(Xas),p(g(Xat))))
上述loss被称为semantic alignment loss,d是一个度量距离的函数,具体来说,它用来度量不同域中同一类别样本的特征在被映射到embedding space之后的距离,我们希望这个距离越小越好。

光有上述loss还不行,因为模型学习的方向可能使得所有的类别分布趋同。为了使得不同域的不同类别之间距离尽可能变大,需要加上下面的separation loss
L S ( g ) = ∑ a , b ∣ a ≠ b k ( p ( g ( X a s ) ) , p ( g ( X b t ) ) ) L_S(g)=\displaystyle\sum_{a,b|a\ne b }k(p(g(X^s_a)),p(g(X^t_b))) LS(g)=a,ba=bk(p(g(Xas)),p(g(Xbt)))
k表示相似性函数,当源域中的a类与目标域中b类靠的太近时会施加惩罚。
最后是个用来分类的loss L C L_C LC,多任务分类一般使用的是交叉熵函数。最后loss的表达形式如下:
L C C S A ( f ) = L C ( h o g ) + L S A ( g ) + L S ( g ) L_{CCSA}(f)=L_C(h\ o\ g) + L_{SA}(g)+L_S(g) LCCSA(f)=LC(h o g)+LSA(g)+LS(g)
由于目标域中的数据很少,文章中提出逐点计算loss。具体来说,作者将目标域中每个样本与源域中的样本进行配对,每个样本对应的embedding feature之间进行loss的计算。
在这里插入图片描述

代码实现

模型部分

class NetWork(nn.Module):def __init__(self):super().__init__()self.cnn = nn.Sequential(nn.Conv2d(1, 32, kernel_size=(3, 3)),nn.ReLU(),nn.Conv2d(32, 32, kernel_size=(3, 3)),nn.ReLU(),nn.MaxPool2d((2, 2)),nn.Dropout(0.25),nn.Flatten(),nn.Linear(1152, 120),nn.ReLU(),nn.Linear(120, 84),nn.ReLU())self.classifier = nn.Sequential(nn.Dropout(0.5),nn.Linear(84, 10))def forward(self, x):feature = self.cnn(x)prediction = self.classifier(feature)return prediction, feature

模型部分,其中包括一个卷积神经网络用作特征提取器,它对应的就是function g。function h对应的是全连接层用来实现分类功能。模型会返回提取的特征feature以及分类器输出的概率分布。

loss

DA方法loss占据着核心地位。

def csa_loss(x, y, class_eq):margin = 1dist = F.pairwise_distance(x, y, 2)loss = class_eq * dist.pow(2)loss += (1 - class_eq) * (margin - dist).clamp(min=0).pow(2)return loss.mean()

x表示源域样本的embedding feature,y是目标域样本中的embedding feature,class_eq代表源域样本和目标域样本是否是同一种类。首先,计算两个特征图之间各像素点的二范数平方和,这是用于语义对齐的损失。后面,计算separation loss。semantic alighment loss和separation loss只会有一个存在。

训练过程

def train(net, loader):net.train()for i, (src_img, src_label, tar_img, tar_label) in enumerate(loader):src_img = src_img.to(device)src_label = src_label.to(device).long()tar_img = tar_img.to(device)tar_label = tar_label.to(device).long()src_pred, src_feature = net(src_img)_, tar_feature = net(tar_img)ce = entropy_loss(src_pred, src_label)csa = csa_loss(src_feature, tar_feature, (src_label == tar_label).float())loss = (1 - alpha) * ce + alpha * csaoptimizer.zero_grad()loss.backward()optimizer.step()if i % 100 == 0:print("loss : %4f" % (loss.item()))for i, (tar_img, tar_label, src_img, src_label) in enumerate(loader):src_img = src_img.to(device)src_label = src_label.to(device).long()tar_img = tar_img.to(device)tar_label = tar_label.to(device)src_pred, src_feature = net(src_img)_, tar_feature = net(tar_img)ce = entropy_loss(src_pred, src_label)csa = csa_loss(src_feature, tar_feature,(src_label == tar_label).float())loss = (1 - alpha) * ce + alpha * csaoptimizer.zero_grad()loss.backward()optimizer.step()

http://chatgpt.dhexx.cn/article/PWrQnD75.shtml

相关文章

Self-supervised Video Transformer 阅读

目录 1.介绍2.SVT2.1 SVT结构2.2 自监督训练Motion CorrespondencesCross-View Correspondences 2.3 SVT loss 1.介绍 本文是针对video transformer进行自监督训练,从一个给定的视频中,创建具有不同空间大小和帧率的局部和全局时空视图,自监…

最简单的self-supervised方法

从Kaiming的MoCo和Hinton组Chen Ting的SimCLR开始,自监督学习(SSL)成了计算机视觉的热潮显学。凡是大佬大组(Kaiming, VGG,MMLAB等),近两年都是搞了几个自监督方法的。从一开始的新奇兴奋地看着…

弱监督学习 weakly supervised learning 笔记

周志华 A Brief Introduction to Weakly Supervised Learning 2018 引言 在机器学习领域,学习任务可以划分为监督学习、非监督学习。通常,两者都需要从包含大量训练样本的训练数据集中学习预测模型。 监督学习的训练数据包括,数据对象向量…

Supervised Contrastive Learning浅读

目录 前言 1.方法介绍以及结构 2.思路的实现 2.1自监督对比学习 2.2有监督对比学习 3.结果 前言 本文是根据观看了知名油管up主,对Supervised Contrastive Learning这篇文论文的解读写了一点自己的理解,初次接触,理解甚浅。 在文章中…

supervised——>self-supervised

在CV中,以数据与神经网络为基础,我们通常以supervised的方式与unsupervised的方式来进行网络的训练,这些行为的目的都是为了想要使学到的网络能够具有较好的特征表示能力,以进行如分类、目标检测、语义分割等。这两种方式的主要异…

自监督模型 Self-supervised learning(李宏毅2022

这个红色的怪物叫做ELMo 、最早的self-supervised learning model 作业四的模型也是个transformer,只有0.1个million 最早的是ELMo Cookie Monster等你来凑😼 T5是Google做的,跟车子也没什么关系, 在没有label情况下&#xff…

《论文笔记》—— Self-supervised Image-specific Prototype Exploration for Weakly Supervised Semantic Segment

摘要:基于图像级标签的弱监督语义分割(WSSS)由于标注成本低而备受关注。现有的方法通常依赖于类激活映射(CAM)来度量图像像素和分类器权重之间的相关性。然而,分类器只关注识别区域,而忽略每张图像中的其他有用信息,导致定位图不完…

Semi-supervised Learning(半监督学习)

目录 Introduction Why semi-supervised learning help? Semi-supervised Learning for Generative Model Supervised Generative Model Semi-supervised Generative Model Low-density Separation Assumption Self Training Entropy-based Regularization(基…

supervised contrastive learning 解读

SupCon 定义: Clusters of points belonging to the same class are pulled together in embedding space, while simultaneously pushing apart clusters of samples from different classes. novelties: 属于同一类的归一化后的特征表示靠得越近越好…

第十章 Supervised PCA

supervised pca很简单粗暴,计算 X X X的每一个纬度和 Y Y Y的相关性,取一个阈值,丢掉一些纬度,然后用普通的pca降维。 如何计算两个随机变量的相关性/相似性? 两个随机变量 X , Y X,Y X,Y,有一个函数 ϕ \p…

学习笔记|BERT——自监督学习的典范

1. 自监督学习的概念 在机器学习中,最常见的是监督学习(Supervised learning)。假设模型的输入是 x x x,输出是 y y y,我们如何使模型输出我们期望的 y y y呢?我们得拥有已标注的(label&#x…

supervised使用教程

安装 平台要求 引自官网(supervised.org/introductio…):Supervisor已经过测试,可以在Linux(Ubuntu 9.10),Mac OS X(10.4 / 10.5 / 10.6)和Solaris(对于Int…

如何使用镜像网站?

1. 使用清华大学镜像网站下载镜像 官网:清华大学镜像站 例如centOS: 1)查找centOS 2)找到对应的版本号 3)找到镜像地址 4)找到自己要下载的版本 DVD:标准版 mini:迷你版 everyt…

如何快速镜像一个网站

仅需下述几个步骤即可快速镜像一个网站,镜像的内容包括html,js,css,image等静态页面资源,暂时无法镜像有用户交互的动态页面。 1、安装wget工具,以ubuntu系统为例 sudo apt-get install wget 2、下载网站…

【数学与算法】泰勒公式_线性化_雅各比矩阵_黑塞矩阵

本文的所涉及的知识点,如果有相关知识盲区,请参考: 微分方程通杀篇 如何区分线性系统与非线性系统 本文是观看B站视频【工程数学基础】2_线性化_泰勒级数_泰勒公式所作的笔记。 其中, k k k 是第k个点, n n n是指每个点…

机器学习中的数学基础 Day1

O(n) o(n) order&#xff1a;阶&#xff0c;多次式阶&#xff0c;x^2x1 阶2 f(x)O(g(x))&#xff1a;存在x0、M&#xff0c;使得x>x0时&#xff0c;f(x)<Mg(x) 2x^2 O(x^2),M2,x0任意 x^2x1 O(x^2),M2,x010 f(x)o(g(x)):对于任意的ε&#xff0c;存在x0&#xff0…

Hessian矩阵正定与函数凹凸性的关系

1. 从矩阵变换的角度 首先半正定矩阵定义为: 其中X 是向量&#xff0c;M 是变换矩阵 我们换一个思路看这个问题&#xff0c;矩阵变换中&#xff0c;代表对向量 X进行变换&#xff0c;我们假设变换后的向量为Y&#xff0c;记做 于是半正定矩阵可以写成&#xff1a; 这个是不是很…

Jacobian and Hessian(雅克比矩阵和海塞矩阵)

雅克比矩阵&#xff08;Jacobian &#xff09; 雅可比矩阵 是一阶偏导数以一定方式排列成的矩阵, 其行列式称为雅可比行列式。 假设 F : R n → R m F: R_n \to R_m F:Rn​→Rm​ 是一个从欧式 n 维空间转换到欧式 m 维空间的函数. 这个函数由 m 个实函数组成:&#xff0c;记…

雅可比(jacobian)、黑塞矩阵(Hessian)

一、雅克比矩阵 雅可比矩阵和行列式&#xff08;Jacobian&#xff09;_雅可比行列式_JasonKQLin的博客-CSDN博客 在牛顿迭代法、L-M中求解非线性方程组&#xff0c;都会用到雅可比(一阶偏导数) 和黑塞矩阵&#xff08;2阶偏导数&#xff09;矩阵。 雅可比矩阵 是一阶偏导数以一…

math: 雅可比矩阵 黑塞矩阵

雅可比矩阵&#xff1a;一个多元函数的一阶偏导数以一定方式排列成的矩阵 黑塞矩阵&#xff1a;一个多元函数的二阶偏导数以一定方式排列成的矩阵 雅可比矩阵 在向量微积分中&#xff0c;雅可比 矩阵是一阶 偏导数以一定方式排列成的矩阵&#xff0c;其行列式称为 雅可比行列式…