我的推荐算法之路(11):DANN与DARec

一、Domain Adaptation

想象一个分类任务,假设现在我们手里有源域数据和目标域数据,其中源域数据是丰富并且有标记的,而目标域数据是充足但是没有标记的,但是源域和目标域的特征空间和标记空间相同。很显然,我们可以轻松的利用源域数据为源域建立一个分类器,但是由于目标域数据本身没有标记,那么我们无法通过常规方法为目标域构建分类器,这时候Domain adaptation 就可以发挥作用了。

从下图中可以看到(图片来自知乎),源域和目标域的特征都是 $\{x_1,x_2\}$,并且有相同的标记 $\{-1,+1\}$,但是在目标域数据的标记是不可获得的。此外,虽然源域和目标域的特征空间相同,但是两者的特征分布却不同。那么我们如何做到利用源域数据来帮助目标域进行分类呢?

这里最关键的一点就是在同一个特征空间中源域和目标域的分布不同,假设两者分布相同,那么我们就可以直接利用源域分类器对目标域数据进行分类了。因此,Domain adaptation的思想就是通过消除源域和目标域的分布差异,使得源域数据和目标域数据能同时被分开。在图中,通过映射函数 $\phi$ 将源域数据和目标域数据映射到某个空间中,并且将属于 +1 的样本混合在一起,属于 -1 的样本混合在一起。由于源域数据有标记,所以可以利用源域数据建立分类器。又因为源域数据和目标域数据混合在一起了,所以在分开源域样本的同时目标域样本也被分开了,这样任务就完成了。

二、Domain-Adversarial Training of Neural Networks(DANN)

在上面的 Domain Adaptation 过程中最关键的一点就是如何做到将源域样本和目标域样本混合在一起,并且还能保证被同时分开,DANN的主要任务也是做到这一点。

首先介绍一下DANN的应用背景:源域数据充足并且有标记,目标域数据充足但是无标记,源域和目标域的特征空间和标记空间相同,任务是借助源域数据对目标域数据进行分类。

网络分为三部分:

  • Feature extractor(特征提取器):提取后续网络完成任务所需要的特征;将源域样本和目标域样本进行映射和混合。
  • Label predictor (类别预测器):利用Feature extractor提取的信息对样本进行分类。
  • Domain classifier(域分类器):判断Feature extractor提取的信息来自源域还是目标域。

可见,DANN中的对抗思想蕴含在特征提取器和域分类器中。其中特征提取器的作用就像是第一张图中的映射函数 $\phi$ 。但是我们并不知道 $\phi$ 的具体形式,也就是说我们不知道特征提取器的训练目标是什么,无法用一个网络来拟合函数 $\phi$。因此后面添加了域分类器,用来和特征提取器进行对抗训练

特征提取器提取的信息会传入域分类器,之后域分类器会判断传入的信息到底是来自源域还是目标域,并计算损失。在反向传播更新参数的过程中,域分类器和特征提取器中间有一个梯度反转层(Gradient reversal layer),也就是说域分类器的训练目标是尽量将输入的信息分到正确的域类别(源域还是目标域),而特征提取器的训练目标却恰恰相反(由于梯度反转层的存在),特征提取器所提取的特征(或者说映射的结果)目的是域分类器不能正确的判断出信息来自哪一个域,因此形成一种对抗关系。可见,当域分类器不能将接收的信息正确分为源域样本还是目标域样本时,特征提取器的任务就圆满完成了,因为此时源域样本和目标域样本在某个空间中已经被混合在一起不能分开了。

然而上述过程存在一个问题,我们最终的目的是对目标域样本进行分类,那么我们如何保证特征提取器提取的信息是能够用来分类的呢?假如无论输入什么样本给特征提取器,它都输出一个单位向量,这样依旧可以“骗过”域分类器,但是却无法完成后续的分类工作。

这时就要靠Label predictor (类别预测器)了,因为源域样本是有标记的,所以在提取特征时不仅仅要考虑后面的域分类器的情况,还要利用源域的带标记样本进行有监督训练从而兼顾分类的准确性。

综上所述,当把特征提取器、域分类器和类别预测器都训练完成后,就可以做到把源域和目标域混合在一起并且进行分类了。

三、DRAec

DRAec假设源域和目标域有相同的用户集合,items则是不同的。其模型结构如下所示:

DRAec主要用到了user-items-ratings评分矩阵,因为其是稀疏的,因此首先将其通过自动编码器AutoEncoder进行降维处理,取中间隐藏层作为embeddings向量;接着,对源域和目标域的embeddings向量进行交错排列,并将它们通过DANN网络进行训练,最终训练完成的Rating Pattern Extractor就可以将源域和目标域的特征向量映射到同一特征空间,这样,我们就可以进行跨域推荐了。

原文链接:Deep Domain Adaptation for Cross-Domain Recommendation via Transferring Rating Patterns

四、参考链接