Conditional Adversarial Domain Adaptation 条件对抗域适应

本博客参考知乎王晋东不在家的知乎文章以及论文原文得来

论文地址:https://arxiv.org/abs/1705.10667

王晋东不在家知乎主页:https://www.zhihu.com/people/jindongwang/activities

背景

对抗学习已经被嵌入到深度网络中通过学习到可迁移的特征进行域适应,并取得了不错的成果,作者指出当前的一些对抗域适应方法仍然存在问题:1.只是独立的对齐特征f而没有对齐标签,而这往往是不充分的 2.当数据分布体现出复杂的多模态结构时,对抗性自适应方法可能无法捕获这种多模态结构,换句话说即使网络训练收敛,判别器完全被混淆,分辨不出样本来自哪个域,也无法保证此时源域和目标域足够相似(没有捕获到数据的多模态结构)。 3.条件域判别器中使用最大最小优化方法也许存在一定的问题,因为与判别器强制不同的样本具有相同的重要性,然而那些不确定预测的难迁移样本也许会对抗适应产生不良影响。 作者提出的条件对抗域适应网络(CDANs)在一定程度上解决了这三个问题,针对1,CDAN通过对齐特征-类别的联合分布解决,针对2,CDAN使用了Multilinear Conditioning多线性调整的方法来解决,针对3,作者提出了在目标函数中添加Entropy Conditioning熵调整来解决。

CDAN结构

Conditional Adversarial Domain Adaptation 条件对抗域适应_第1张图片

上图框架很好理解,框架的前段通过深度神经网络,比如Alexnet/ResNet对源域和目标域提取特征f,然后得出预测结果g,g得出预测标签,CDAN的框架与之前一篇论文《Simultaneous Deep Transfer Across Domains and Tasks》相似,只是在CDAN中将预测结果g与特征f的联合起来输入到判别器D中, ⨂ \bigotimes 表示的是使用多线性映射对f和g进行联结。

在最近的条件生成对抗网络Conditional Generative Adversarial Networks(CGAN)中揭示了不同的分布可以在相关信息上调整生成器和判别器匹配的更好,例如:将标签和附属状态关联。CGAN可以在具有高可变性和多模态的分布数据集中生成全局一致图像。受到CGAN的启示,作者观察到在对抗域适应中,分类器预测结果g中携带了潜在的揭露了多模态结果的判别信息,这可以在对齐特征f时用于调整,从而在网络训练过程中捕获多模态信息。通过连接变量 h = ( f , g ) h=(f,g) h=(f,g)在分类器预测结果g上调整域判别器D,这样可以解决上面所说的前两个问题,而最简单的一种连接方式就是 f ⨁ g f\bigoplus g fg,然后将 f ⨁ g f\bigoplus g fg丢入到域判别器D中,这种连接策略被现有的CGANs方法中广泛的采用,然而在这种连接策略中,f和g是相互独立的,导致了不能很好的捕捉到特征与分类器预测结果之间的相乘交互,而这对于域适应是至关重要的,作为结果,分类器预测中传达的多模态信息不能被充分利用来匹配复杂域的多峰分布。

多线性调整

至于为什么用多线性映射,而不是上面提到的 f ⨁ g f\bigoplus g fg呢?假设线性映射 ϕ ( x ) = x \phi(x)=x ϕ(x)=x和具有C类别数的one-hot标签变量y,均值映射 E x y [ x ⨁ y ] = E x [ x ] ⨁ E y [ y ] E_{xy}[x\bigoplus y] = E_x[x]\bigoplus E_y[y] Exy[xy]=Ex[x]Ey[y]分别独立的计算了x和y的均值,相反,均值映射 E x y [ x ⨂ y ] = E x [ x ∣ y = 1 ] ⨁ . . . . ⨁ E x [ x ∣ y = C ] E_{xy}[x\bigotimes y] = E_x[x|y=1]\bigoplus .... \bigoplus E_x[x|y=C] Exy[xy]=Ex[xy=1]....Ex[xy=C]计算了每一个C类条件分布 P ( x ∣ y ) P(x|y) P(xy)的均值。比 f ⨁ g f\bigoplus g fg好的是,多线性映射模拟了不同变量之间的乘法相互作用,并且多线性映射相比于 f ⨁ g f\bigoplus g fg最大的优势就是多线性映射 f ⨂ g f\bigotimes g fg能够完全捕捉到复杂数据分布后的多模态结构。而多线性映射的一个劣势则是维度爆炸,假如 d f / d g d_f/d_g df/dg表示向量f和g的维度,那么线性映射 f ⨂ g f\bigotimes g fg的维度则是 d f ∗ d g d_f*d_g dfdg,二者的维度通常较大,因此很容易发生维度爆炸。文章通过随机方法来解决这个问题。即随机抽取f和g上的某些维度做多线性映射: T ⨀ ( f , g ) = 1 d ( R f f ) ⨀ ( R g g ) T_{\bigodot}(f,g) = \frac{1}{\sqrt{d}} (R_f f) \bigodot (R_g g) T(f,g)=d 1(Rff)(Rgg),其中 ⨀ \bigodot 表示逐元素运算, R f / R g R_f /R_g Rf/Rg分别表示随机矩阵,其只被采样一次并且在训练过程中固定。d则是需要采样的维度。经过作者论证,在 T ⨀ T_{\bigodot} T上进行内积近似的等于 T ⨂ T_{\bigotimes} T上进行内积,因此,可以直接采用 T ⨀ T_{\bigodot} T用于计算以方便效率。在文中,作者采用了一下随机采样策略:

即当f和g的维度相乘大于4096时,采用随机策略进行多线性映射,小于就使用正常的多线性映射。

熵调整

就像上面所说,条件域判别器中使用最大最小优化方法也许存在一定的问题,因为与判别器强制不同的样本具有相同的重要性,然而那些不确定预测的难迁移样本也许会对抗适应产生不良影响。为了减少这种影响,作者通过熵 H ( g ) = − ∑ c = 1 C g c l o g ( g c ) H(g) = - \sum_{c=1}^C g_c log(g_c) H(g)=c=1Cgclog(gc)来定量分类器预测结果的不确定性,而预测结果的确定性则可以被计算为 e − H ( g ) e^{-H(g)} eH(g)。然后通过这种基于熵的确定性策略调整域判别器,然后最终的CDAN使用minimax的目标函数则为:

Conditional Adversarial Domain Adaptation 条件对抗域适应_第2张图片

其实就是正常的minimax在其中加入了熵作为权重系数进行调整。

参考

Long M, Cao Z, Wang J, et al. Conditional Adversarial Domain Adaptation. NIPS 2018.

Hoffman J, Tzeng E, Darrell T, et al. Simultaneous Deep Transfer Across Domains and Tasks[J]. 2015, 30(31):4068-4076.

你可能感兴趣的:(深度学习,迁移学习)