Domain adaptation入门笔记

本文为我入门域适应的一些随手记,按照时间顺序进行排序,包含了一些思考和反馈。 摘录我阅读的文章原文部分使用斜体,关于思考总结的部分使用正常字体。 第一次阅读 阅读材料:迁移学习入门之一:域适应的背景,理论与方法 在机器学习中,Domain Shift是一个很常见的问题,即在训练数据与真实场景来自于不同的分布。 如在医学深度学习模型中,用A医院的数据(Source Domain)训练的模型往往在B医院(Target Domain)预测不准。在摄像头行人重识别(Re-ID)问题中,多个摄像头捕捉的场景分布完全不一致,导致单个行人在多个摄像头中的"重识别"变得较为困难。在联邦学习中,不同客户的数据分布不一致(non-iid)也是最常见的全局模型训练问题。 而domain adaptation即是对于domain shift的一种解决方案。与其他流派(如迁移学习和微调)不同的点在于,domain adaptation保留了在source domain上的高精度, 并通过一些方法缩小表示空间(将数据从原始输入形式“如图像、文本”转换后得到的特征向量所在的抽象空间,在当前语境下,它是源域与目标域数据通过特征提取层映射后的空间)上Source与target模型特征的距离。 在了解大方向后,文章给出了一些数学推导,我感觉有点难以理解,这里先记录一些定义和简单的公式: 文章定义一个domain由两个部分组成:$D,f$ $D$(分布函数):可以理解为“画风“或数据长什么样。比如源域$D_S$是高清图,目标域$D_T$是高斯模糊图。 $f$(标签函数):是数据的标签,如在二分类问题中输入一张图$x$,它到底是猫还是狗(0或1)。 在 Domain Adaptation 中,我们通常假设物体的本质不变,只是画风变了。 也就是说,一张猫的图片,无论变多模糊,它依然是猫。也就是: $f_S \approx f_T$, 但是 $D_s \neq D_T$ 什么是误差? 公式 : $$ \epsilon(h, f; \mathcal{D}) = \mathbf{E}_{\mathbf{x} \sim \mathcal{D}}|h(\mathbf{x}) - f(\mathbf{x})| $$ $h$ (hypothesis,假设):学习函数,就是我们训练的模型网络。 $f$:真实标签。 $\epsilon$ (error):误差。 这个公式大概是代码里写的 Loss 函数(或者说测试集上的错误率)。 它表示:在某种画风 $\mathcal{D}$ 下,你的模型 $h$ 预测的结果,和真实答案 $f$ 之间相差多少。 $\epsilon_S(h)$:模型在源域(清晰图)上的错误率。 $\epsilon_T(h)$:模型在目标域(模糊图)上的错误率。 我们手里只有源域的标签,所以我们只能把 $\epsilon_S(h)$ 训练得很小。但我们真正想要的是,$\epsilon_T(h)$ 也很小。 关键公式:泛化误差上界 $$ \epsilon_T(h) \le \epsilon_S(h) + d_1(\mathcal{D}_S, \mathcal{D}_T) + \text{常量} $$我们把这个公式拆成三块来看: 你要想让目标域错误率 $\epsilon_T(h)$ 很小(等号左边),你必须让等号右边的三项都很小: ...

March 6, 2026 · 3 min