本文提出了一个比较有趣的 ZSDA(zero-shot domain adaptation) 的学习策略。
- 假如现在我们有两个 UIT(Style Transfer) 的任务,
- 原本我们可以构建两个 CycleGAN 就可以解决上面的问题,或者把数据混合在一起,训练一个更高鲁棒性的 CycleGAN.
- 但实际上,有时候我们并没有右下角的目标域的图像,这时候我们希望基于上面的 gray num. 和 color num. 数据集训练一个 UIT 模型,它也能够应用到下面的 gray letter→color letter,但现实中,本质上仍旧是统计学的深度学习算法并不能有这样的泛化能力。
- 但如果我们知道了 gray num.∼gray letter 之间的某种对应关系 Aligns,那么,color num.∼color letter 之间也必然存在某种对应关系 Alignt。我们可以利用这样的对应关系来作为监督信息,代替缺失的 color letter 数据。因为存在:[gray letter]→[Aligns]→[gray num.]→[UIT]→[color num.]→[Alignt]→[color letter]
所以,理论上,这两个对应关系的限制是充分的。
1. CoCoGAN
首先,我们需要了解 CoGAN
。

- 其基本思想是,除去样式,两个域在 content 方面是共享的,因此有两个生成器,起始于同一个 content latent space,同时两个网络共享底层(深层特征 content),异于高层(浅层特征 appearance);同样有两个鉴别器,异于底层,共享高层。
- 因此,其目标函数为:
g1,g2maxf1,f2minV(f1,f2,g1,g2)≡Ex1∼px1[−logf1(x1)]+Ez∼pz[−log(1−f1(g1(z)))]+Ex2∼px2[−logf2(x2)]+Ez∼pz[−log(1−f2(g2(z)))] 其中,gi 是生成器/解码器,fi 是鉴别器,i=1,2。
其次,我们可以理解 CoCoGAN

同样的,所谓的 Conditional 是指加了一个 c 用于决定让模型处理哪一个任务。
- 我们称 gray num.→color num. 是一个(与目标任务)无关的任务(irrelevant task/IR)
- 我们称另一个 gray letter→color letter 是目标/相关任务(relevant task/R)
-
c=0 时,处理 IR;c=1 时,处理 R.
假如我们四个域的图像数据都有:Xsir,Xtir,Xsr,Xtr,那么可以直接使用 CoGAN
的对抗 loss,即,我们使用
gs,gtmaxfs,ftminV(fs,ft,gs,gt)≡Exs∼pxs[−logfs(xs,c)]+Ez∼pz[−log(1−fs(gs(z,c),c))]+Ext∼pxt[−logft(xt,c)]+Ez∼pz[−log(1−ft(gt(z,c),c))] 但实际上,第三项 Ext∼pxt[−logft(xt,c)] 只能取到 c=0,那么这样的训练是不充分的,结果是 gt 过分偏向于 gray num.→color num.,对于 c=1 的时候,要么 gt(z,1) 也是 彩色数字,要么就什么也不是,而不是理想的彩色字母。
因此,我们需要增加新的限制——
2. Representation Alignment
在高层表征中,如 encoder 和 decoder 之间。
real datars(Xsir,c=0)≡rt(Xtir,c=0) ≈fake datart(T(Xsir),c=0) real datars(Xsr,c=1)≡rt(Xtr,c=1) ≈fake datart(T(Xsr),c=1) 假如我们认为下面的对齐存在:rs(Xsir,c=0)∼rs(Xsr,c=1) 则必然会有: rt(Xtir,c=0)∼rt(Xtr,c=1) 即在两个源域 IRS 和 RS 以某种方式对齐,则其对应的目标域 IRT 和 RT 必定也以某种方式对齐。
但是由于我们没有:rt(Xtr,c=1),所以需要近似地在合成图像 fake data 上去对齐
那如果我们现在希望用 task classifier 去表达这种限制,可以有:
令 l(.) 为 logistics 函数
在源域上有:hsmaxLs≡Align: real data in SExs∼pXsir[l(hs(xs))]+Exs∼pXsr[l(hs(xs))]+Align: fake data in SEz∼pz[l(hs(gs(z,c=0)))]+Ez∼pz[l(hs(gs(z,c=1)))] 同时,在目标域上有:htmaxLt≡Align: real data in TExt∼pXtir[l(ht(xt))]+Align: fake data in TEz∼pz[l(ht(gt(z,c=0)))]+Ez∼pz[l(ht(gt(z,c=1)))]
这里有个疑问,既然在这里有 a×b≤2a2+b2≤2a+b,不应该是最大化 ab 则必然 最大化 a+b?为什么这里使用的是加法而不是乘法?
此外就是,上面的两条式子是为了好看,实际上只有 Align: real data in S 和 Align: fake data in T 是起作用的。这就是我们要对齐的东西。
这里也给出了,当我们试图对齐两个分布的时候,可以通过引入 task classifier 来拉近,目标是让两个分布的输入趋近于同一个值(在这里是 logistics 值都 →1),
但是这样会容易导致分类器对任何输入都输出是 1 ,这是不对的,从作者的设置来看,这个分类器的 loss 是不对的,只用在了鉴别器的优化。即:
(fs^,ft^,hs^,ht^)=fs,ft,hs,htargminV(fs,ft,gs^,gt^)−(Ls+Lt) (gs^,gt^)=gs,gtargmaxV(fs^,ft^,gs,gt) 但无论如何,本文提出了一个比较好的 DA 的学习策略,通过另外一组无关的任务,构建一个 aligement 来作为额外的限制。
这一节我们带大家系统认识一下几个手写数据集:

总共四个数据集({DM,DF,DN,DE}),但是,实际上每个数据集只有 Gray 版本,我们称之为 G−Domain(第1行),我们需要制作不同 style 的其他 3 个 版本/domains。
- 制作 Color 版本(第2行)C−Domain
对于每一张灰度图 I∈Rh×w×1,从彩色图像数据集 BSDS500
中选择一张图像,随机 crop 出一个块 P∈Rm×n×3,然后合并:Ic=∣I−P∣。
- 制作 Edge 版本(第3行)E−domain
对彩色图像使用 Canny edge detector
Ie=canny(Ic)
- 制作 Negative 版本(第4行)N−Domain
In=255−I
这一节我们介绍实验
1. baseline
-
ZDDA 这是另外一个唯一使用 DL 于 ZSDA 任务的方法
-
CoCoGAN w/o T 不使用对应关系作为额外限制的 CoCoGAN
2. 模型评价指标
同样以最开始的例子讲述:
- 得到训练后的模型 gs,gt
- 让 c=1,随机采取一些随机数 z,获取 xsr=gs^(z,c=1) 和 xtr=gt^(z,c=1),我们认为 xsr,xtr 是同一个字母。
- 利用已有的 Xsr 的数据集训练一个字母分类器 Cs(xsr)
- 用这个分类器 Cs(xsr) 去对 {xsr} 做识别,也就得到了 {xtr} 的标签
- 用这些标签信息去训练一个字母分类器 Ct(xtr)
- 用这个鉴别器去对 Xtr 作分类,根据该数据集本身的 GT 计算 Ct(xtr) 分类的准确度
3. 实验结果

结果当然是碾压对方其他两个 baselines.