本文提出了一个比较有趣的 ZSDAZSDAZSDA(zero-shot domain adaptation) 的学习策略。
- 假如现在我们有两个 UIT(Style Transfer)UIT(Style~Transfer)UIT(Style Transfer) 的任务,
- 原本我们可以构建两个 CycleGANCycleGANCycleGAN 就可以解决上面的问题,或者把数据混合在一起,训练一个更高鲁棒性的 CycleGANCycleGANCycleGAN.
- 但实际上,有时候我们并没有右下角的目标域的图像,这时候我们希望基于上面的 gray num.gray~num.gray num. 和 color num.color~num.color num. 数据集训练一个 UITUITUIT 模型,它也能够应用到下面的 gray letter→color lettergray~letter \rightarrow color~lettergray letter→color letter,但现实中,本质上仍旧是统计学的深度学习算法并不能有这样的泛化能力。
- 但如果我们知道了 gray num.∼gray lettergray~num.\sim gray~lettergray num.∼gray letter 之间的某种对应关系 AlignsAlign_sAligns,那么,color num.∼color lettercolor~num.\sim color~lettercolor num.∼color letter 之间也必然存在某种对应关系 AligntAlign_tAlignt。我们可以利用这样的对应关系来作为监督信息,代替缺失的 color lettercolor~lettercolor letter 数据。因为存在:[gray letter]→[Aligns]→[gray num.]→[UIT]→[color num.]→[Alignt]→[color letter] [gray~letter]\rightarrow [Align_s] \rightarrow [gray~num.]\rightarrow [UIT]\rightarrow[color~num.]\rightarrow[Align_t]\rightarrow[color~letter] [gray letter]→[Aligns]→[gray num.]→[UIT]→[color num.]→[Alignt]→[color letter]
所以,理论上,这两个对应关系的限制是充分的。
1. CoCoGAN
首先,我们需要了解 CoGAN
。
- 其基本思想是,除去样式,两个域在 content 方面是共享的,因此有两个生成器,起始于同一个 content latent space,同时两个网络共享底层(深层特征 content),异于高层(浅层特征 appearance);同样有两个鉴别器,异于底层,共享高层。
- 因此,其目标函数为:
maxg1,g2minf1,f2V(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)))] \max_{g_1,g_2} \min_{f_1,f_2} V(f_1,f_2,g_1,g_2)\equiv \Bbb E_{x_1\sim p_{x_1}}[-\log f_1(x_1)]+\Bbb E_{z\sim p_z}[-\log (1-f_1(g_1(z)))] + \Bbb E_{x_2\sim p_{x_2}}[-\log f_2(x_2)]+\Bbb E_{z\sim p_z}[-\log (1-f_2(g_2(z)))] 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)))] 其中,gig_igi 是生成器/解码器,fif_ifi 是鉴别器,i=1,2i=1,2i=1,2。
其次,我们可以理解 CoCoGAN
同样的,所谓的 ConditionalConditionalConditional 是指加了一个 ccc 用于决定让模型处理哪一个任务。
- 我们称 gray num.→color num.gray~num.\rightarrow color~num.gray num.→color num. 是一个(与目标任务)无关的任务(irrelevant task/IRIRIR)
- 我们称另一个 gray letter→color lettergray~letter\rightarrow color~lettergray letter→color letter 是目标/相关任务(relevant task/RRR)
- c=0c=0c=0 时,处理 IRIRIR;c=1c=1c=1 时,处理 RRR.
假如我们四个域的图像数据都有:Xsir,Xtir,Xsr,Xtr{X_s^{ir},X_t^{ir},X_s^r,X_t^r}Xsir,Xtir,Xsr,Xtr,那么可以直接使用 CoGAN
的对抗 loss,即,我们使用
maxgs,gtminfs,ftV(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))]
\max_{g_s,g_t} \min_{f_s,f_t} V(f_s,f_t,g_s,g_t)\equiv \Bbb E_{x_s\sim p_{x_s}}[-\log f_s(x_s,c)]+\Bbb E_{z\sim p_z}[-\log (1-f_s(g_s(z,c),c))] + \Bbb E_{x_t\sim p_{x_t}}[-\log f_t(x_t,c)]+\Bbb E_{z\sim p_z}[-\log (1-f_t(g_t(z,c),c))]
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)]E_{x_t\sim p_{x_t}}[-\log f_t(x_t,c)]Ext∼pxt[−logft(xt,c)] 只能取到 c=0c=0c=0,那么这样的训练是不充分的,结果是 gtg_tgt 过分偏向于 gray num.→color num.gray~num.\rightarrow color~num.gray num.→color num.,对于 c=1c=1c=1 的时候,要么 gt(z,1)g_t(z,1)gt(z,1) 也是 彩色数字,要么就什么也不是,而不是理想的彩色字母。
因此,我们需要增加新的限制——
2. Representation Alignment
在高层表征中,如 encoderencoderencoder 和 decoderdecoderdecoder 之间。
rs(Xsir,c=0)≡rt(Xtir,c=0)⏟real data ≈rt(T(Xsir),c=0)⏟fake data
\underbrace{r_s(X_s^{ir},c=0) \equiv r_t(X_t^{ir},c=0)}_{real~data} ~~~~~~~~\approx \underbrace{r_t(T(X_s^{ir}),c=0)}_{fake~data}
real datars(Xsir,c=0)≡rt(Xtir,c=0) ≈fake datart(T(Xsir),c=0) rs(Xsr,c=1)≡rt(Xtr,c=1)⏟real data ≈rt(T(Xsr),c=1)⏟fake data
\underbrace{r_s(X_s^{r},c=1) \equiv r_t(X_t^{r},c=1)}_{real~data} ~~~~~~~~ \approx \underbrace{r_t(T(X_s^{r}),c=1)}_{fake~data}
real datars(Xsr,c=1)≡rt(Xtr,c=1) ≈fake datart(T(Xsr),c=1) 假如我们认为下面的对齐存在:rs(Xsir,c=0)∼rs(Xsr,c=1)
r_s(X_s^{ir},c=0) \sim r_s(X_s^{r},c=1)
rs(Xsir,c=0)∼rs(Xsr,c=1) 则必然会有: rt(Xtir,c=0)∼rt(Xtr,c=1)
r_t(X_t^{ir},c=0) \sim r_t(X_t^{r},c=1)
rt(Xtir,c=0)∼rt(Xtr,c=1) 即在两个源域 IRSIR_SIRS 和 RSR_SRS 以某种方式对齐,则其对应的目标域 IRTIR_TIRT 和 RTR_TRT 必定也以某种方式对齐。
但是由于我们没有:rt(Xtr,c=1)r_t(X_t^{r},c=1)rt(Xtr,c=1),所以需要近似地在合成图像 fake datafake~datafake data 上去对齐
那如果我们现在希望用 task classifier\rm task~classifiertask classifier 去表达这种限制,可以有:
令 l(.)l(.)l(.) 为 logistics 函数
在源域上有:maxhsLs≡Exs∼pXsir[l(hs(xs))]+Exs∼pXsr[l(hs(xs))]⏟Align: real data in S+Ez∼pz[l(hs(gs(z,c=0)))]+Ez∼pz[l(hs(gs(z,c=1)))]⏟Align: fake data in S \max_{h_s} L_s \equiv \underbrace{ {\Bbb E}_{x_s\sim p_{X_s^{ir}}}[l(h_s(x_s))] + {\Bbb E}_{x_s\sim p_{X_s^{r}}}[l(h_s(x_s))] }_{{\rm Align}:~real~data~in~S} + \underbrace{ {\Bbb E}_{z\sim p_z}[l(h_s(g_s(z,c=0)))] + {\Bbb E}_{z\sim p_z}[l(h_s(g_s(z,c=1)))]}_{{\rm Align}:~fake~data~in~S} 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)))] 同时,在目标域上有:maxhtLt≡Ext∼pXtir[l(ht(xt))]⏟Align: real data in T+Ez∼pz[l(ht(gt(z,c=0)))]+Ez∼pz[l(ht(gt(z,c=1)))]⏟Align: fake data in T \max_{h_t} L_t \equiv \underbrace{ {\Bbb E}_{x_t\sim p_{X_t^{ir}}}[l(h_t(x_t))]}_{{\rm Align}:~real~data~in~T} + \underbrace{ {\Bbb E}_{z\sim p_z}[l(h_t(g_t(z,c=0)))] + {\Bbb E}_{z\sim p_z}[l(h_t(g_t(z,c=1)))]}_{{\rm Align}:~fake~data~in~T} 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≤a2+b22≤a+b2a\times b \le {{a^2+b^2}\over{2}} \le {{a+b}\over{2}}a×b≤2a2+b2≤2a+b,不应该是最大化 ababab 则必然 最大化 a+ba+ba+b?为什么这里使用的是加法而不是乘法?
此外就是,上面的两条式子是为了好看,实际上只有 Align: real data in S{\rm Align}:~real~data~in~SAlign: real data in S 和 Align: fake data in T{\rm Align}:~fake~data~in~TAlign: fake data in T 是起作用的。这就是我们要对齐的东西。
这里也给出了,当我们试图对齐两个分布的时候,可以通过引入 task classifier 来拉近,目标是让两个分布的输入趋近于同一个值(在这里是 logistics 值都 →1\rightarrow 1→1),
但是这样会容易导致分类器对任何输入都输出是 111 ,这是不对的,从作者的设置来看,这个分类器的 loss 是不对的,只用在了鉴别器的优化。即:
(fs^,ft^,hs^,ht^)=arg minfs,ft,hs,htV(fs,ft,gs^,gt^)−(Ls+Lt) (\hat{f_s},\hat{f_t},\hat{h_s},\hat{h_t})=\argmin_{f_s,f_t,h_s,h_t} V(f_s,f_t,\hat{g_s},\hat{g_t})-(L_s+L_t) (fs^,ft^,hs^,ht^)=fs,ft,hs,htargminV(fs,ft,gs^,gt^)−(Ls+Lt) (gs^,gt^)=arg maxgs,gtV(fs^,ft^,gs,gt)(\hat{g_s},\hat{g_t})=\argmax_{g_s,g_t} V(\hat{f_s},\hat{f_t},g_s,g_t)(gs^,gt^)=gs,gtargmaxV(fs^,ft^,gs,gt) 但无论如何,本文提出了一个比较好的 DADADA 的学习策略,通过另外一组无关的任务,构建一个 aligementaligementaligement 来作为额外的限制。
这一节我们带大家系统认识一下几个手写数据集:
总共四个数据集({DM,DF,DN,DE}\{ D_M,D_F,D_N,D_E \}{DM,DF,DN,DE}),但是,实际上每个数据集只有 GrayGrayGray 版本,我们称之为 G−DomainG-DomainG−Domain(第1行),我们需要制作不同 style 的其他 3 个 版本/domains。
- 制作 ColorColorColor 版本(第2行)C−DomainC-DomainC−Domain
对于每一张灰度图 I∈Rh×w×1I\in\Bbb R^{h\times w\times 1}I∈Rh×w×1,从彩色图像数据集
BSDS500
中选择一张图像,随机 crop 出一个块 P∈Rm×n×3P\in \Bbb R^{m\times n\times3}P∈Rm×n×3,然后合并:Ic=∣I−P∣I_c=|I-P|Ic=∣I−P∣。
- 制作 EdgeEdgeEdge 版本(第3行)E−domainE-domainE−domain
对彩色图像使用 Canny edge detector
Ie=canny(Ic)I_e=canny(I_c)Ie=canny(Ic)
- 制作 NegativeNegativeNegative 版本(第4行)N−DomainN-DomainN−Domain
In=255−II_n=255-IIn=255−I
这一节我们介绍实验
1. baseline
- ZDDAZDDAZDDA 这是另外一个唯一使用 DL 于 ZSDA 任务的方法
- CoCoGAN w/o TCoCoGAN~w/o~TCoCoGAN w/o T 不使用对应关系作为额外限制的 CoCoGANCoCoGANCoCoGAN
2. 模型评价指标
同样以最开始的例子讲述:
- 得到训练后的模型 gs,gtg_s, g_tgs,gt
- 让 c=1c=1c=1,随机采取一些随机数 zzz,获取 x~sr=gs^(z,c=1)\widetilde{x}_s^r=\hat{g_s}(z,c=1)xsr=gs^(z,c=1) 和 x~tr=gt^(z,c=1)\widetilde{x}_t^r=\hat{g_t}(z,c=1)xtr=gt^(z,c=1),我们认为 x~sr,x~tr\widetilde{x}_s^r,\widetilde{x}_t^rxsr,xtr 是同一个字母。
- 利用已有的 XsrX_s^rXsr 的数据集训练一个字母分类器 Cs(xsr)C_s(x_s^r)Cs(xsr)
- 用这个分类器 Cs(xsr)C_s(x_s^r)Cs(xsr) 去对 {x~sr}\{\widetilde{x}_s^r\}{xsr} 做识别,也就得到了 {x~tr}\{\widetilde{x}_t^r\}{xtr} 的标签
- 用这些标签信息去训练一个字母分类器 Ct(x~tr)C_t(\widetilde{x}_t^r)Ct(xtr)
- 用这个鉴别器去对 XtrX_t^rXtr 作分类,根据该数据集本身的 GTGTGT 计算 Ct(xtr)C_t(x_t^r)Ct(xtr) 分类的准确度
3. 实验结果
结果当然是碾压对方其他两个 baselinesbaselinesbaselines.