2021李宏毅机器学习课程笔记——Domain Adaptation

注:这个是笔者用于期末复习的一个简单笔记,因此难以做到全面详细,有疑问欢迎大家在评论区讨论
https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/da_v6.pptx

I. Why Domain Adaptation

存在Domain Shift现象:训练数据与测试数据的分布差异较大。一个例子如下所示:
2021李宏毅机器学习课程笔记——Domain Adaptation_第1张图片
这就会导致我们训练的模型在遇到“未见过的不同域样本”时表现较差。实际上这一现象在工程中是非常常见的(可以认为是影响AI落地的一大问题)。一个解决Domain Shift的直观思路是进行Transfer Learning。

II. Transfer Learning

在源域上训练模型,然后在目标域上finetune。但是有个问题在于,目标域的数据(及标签)往往比较难获取(不然就可以直接当成源域加进训练集训练了),因此需要注意防止过拟合的问题。

III. Basic Idea

前面我们提到,源域与目标域的分布差异较大。那么既然差异较大,也就意味着还是有一些特征是两个域所共有的。那么,如果我们的模型能够去学会这两个域共有的特征(而不是只学源域所特有的特征;显然源域特有特征对模型在目标域上的性能贡献不大),就可以提升我们模型的泛化能力,减轻Domain Shift的影响。

一个例子如下所示:
2021李宏毅机器学习课程笔记——Domain Adaptation_第2张图片
源域的图片没有颜色,而目标域的图片有颜色,因此我们提取到的特征应该尽量不去包含颜色信息,即所谓的“服从相同分布”。

IV. Adversarial Training

至于怎么去提取"共有的特征",采用的是对抗训练的思路,流程如下所示:
2021李宏毅机器学习课程笔记——Domain Adaptation_第3张图片

  • 将源域图像(有标签)与目标与图像(无标签)送入特征提取器 θ f \theta _f θf以提取特征
  • 将上一步提取到的特征送入域分类器 θ d \theta _d θd。这个域分类器充当的就是对抗训练中的"判别器"角色,用来区分送入的这个特征到底是源域的还是目标域的。我们可以发现,如果特征提取器 θ f \theta _f θf提取到的是源域与目标域的公共特征的话,那么判别器自然无从区分;反之,如果特征提取器学到的都是些源域或目标域的特有特征,那么判别器很容易就能区分出来。
  • 将上一步提取到的特征送入标签预测器 θ p \theta _p θp,完成特定任务(这里是图像分类)。这一步的意义是,如果单纯想让特征提取器来欺骗域分类器的话,这实际上是个非常简单的任务,特征提取器直接提取些没用的废特征即可(或者干脆摆烂always zero)糊弄判别器,因此我们需要在尽可能保证模型分类性能的情况下去提取"有意义"的公共特征。
  • 关于损失函数的话,标签分类器与域分类器没什么特别的,一个是分类损失 θ p ∗ = min ⁡ θ p L \theta_{p}^{*}=\min _{\theta_{p}} L θp=minθpL,一个是判别损失 θ d ∗ = min ⁡ θ d L d \theta_{d}^{*}=\min _{\theta_{d}} L_d θd=minθdLd;主要需要注意的是特征提取器 θ f \theta _f θf的损失,其为 θ f ∗ = min ⁡ θ f L − L d \theta_{f}^{*}=\min _{\theta_{f}} L-L_{d} θf=minθfLLd,字面理解其实就是使标签分类器性能尽可能高( min ⁡ θ f L \min _{\theta_{f}} L minθfL),域分类器性能尽可能低( − L d -L_{d} Ld)。

你可能感兴趣的:(杂文,划水)