对抗自编码器 AAE

用对抗判别器(而非 KL 惩罚)把聚合后验匹配到先验的自编码器,介于 GAN 与自编码器之间。

对抗自编码器(AAE)是一种以对抗方式正则化隐空间的生成式自编码器。编码器 q(zx)q(z\mid x) 与解码器 p(xz)p(x\mid z) 负责重构输入,另有一个独立的判别器,负责把聚合后验

x输入编码器q(z | x)z编码解码器p(x | z)重构重构损失p(z)先验样本判别器 D编码还是先验?对抗匹配 q_Z → p_Z

对抗匹配的直观演示 —— 拖动训练进度,看判别器准确率:

对抗博弈 · 有判别器
先验 p(z)编码 q(z)
判别器准确率90%
50% — 100%

AAE 用 GAN 的方式做同样的匹配:判别器学着区分编码与先验(分界线与两侧着色就是它),编码器学着骗过它。点「训练」会交替进行——D 步:判别器重新拟合,准确率跳高;编码步:编码挪向先验,准确率掉下来——于是准确率呈锯齿状跌向 50%。最终判别器仍在,只是再也分不开两者。对照 WAE:同样的匹配,那里是一个闭式核 MMD、根本没有判别器。

直觉

设想隐空间里有两团点:编码器实际吐出的编码,与目标先验的采样。你想让这两团重叠。与其写下一个公式去度量它们隔多远,不如请一位裁判——也就是判别器——它唯一的任务是看一个点、猜它来自哪一团。编码器随后被”付钱”去挪动自己的编码,直到裁判再也分不清。当裁判沦为瞎猜(准确率 50%),两团便重合了。演示里那条准确率曲线就是全部剧情:起初很高(两团可分),编码器训练得好就把它压向随机水平。与之对照,WAE 用闭式的核 MMD 度量同一桩重叠,全程没有裁判。

qZ(z)=q(zx)pX(x)dxq_Z(z)=\int q(z\mid x)\,p_X(x)\,dx

把这个积分读作一次平均:对每个数据点 xx,编码器给出一个编码分布 q(zx)q(z\mid x),而 qZq_Z 是把它们全部按 xx 在数据 pXp_X 中出现的频率加权后的混合。它是隐空间这团点在”忘掉每个点来自哪个输入”之后的边缘形状。重构损失只约束编码器与解码器,对抗损失只约束编码器与判别器;两条路径共用同一个编码器,于是重构保真与先验匹配在一次前向传播里一并完成。AAE 不去显式惩罚某个散度,而是训练判别器 DD 来分辨编码究竟取自 qZq_Z 还是取自 pZp_Z,再让编码器学着骗过它——相当于把 GAN 博弈搬进隐空间:

minqmaxD  EpZ[logD(z)]+EqZ[log(1D(z))].\min_{q}\max_{D}\; \mathbb{E}_{p_Z}[\log D(z)] +\mathbb{E}_{q_Z}[\log(1-D(z))].

式中每个符号都各有所司。D(z)(0,1)D(z)\in(0,1) 是判别器估计的”zz 是真先验采样”的概率。内层 maxD\max_D 训练判别器:在先验采样 zpZz\sim p_Z 上把 D(z)D(z) 推向 11,在编码 zqZz\sim q_Z 上推向 00——两个期望恰是把两团各自贴对标签的对数似然。外层 minq\min_q 训练编码器(即定义 qZq_Z 的那个条件分布 qq):编码器无法直接让判别器输出更”假”,于是反向使力,去产出被判别器打高分、当成真货的编码。在均衡处 qZ=pZq_Z=p_Z,编码器遂把其聚合编码塑成先验的形状,此后采样 zpZz\sim p_Z 并解码即可生成新数据。

深入

在最优处,判别器恢复出一个密度比D\*(z)=pZ(z)/ ⁣(pZ(z)+qZ(z))D^\*(z)=p_Z(z)\big/\!\big(p_Z(z)+q_Z(z)\big),由此可读出 qZ/pZq_Z/p_Z。把 D\*D^\* 代回目标,可见编码器此时是在极小化 qZq_ZpZp_Z 之间的 Jensen–Shannon 散度(差一个加性常数)——与原始 GAN 在生成图与真图之间极小化的是同一个散度,只不过这里发生在两个隐分布之间。所以”骗过判别器”并非凑数的启发式,而是某个具体统计距离的、基于样本、由网络估计的替身。对抗匹配因而经由一个学得的分类器隐式地估计散度,区别于变分自编码器的显式 KL 或 Wasserstein 自编码器的核 MMD。代价是:这个密度比只在判别器恰好处于最优时才正确;实践中 DD 总滞后于移动着的 qZq_Z,一旦 DD 训练不足,交给编码器的梯度就是有偏的——这正是熟悉的极小极大脆弱性。

匹配先验的三种方式

这几种自编码器变体的主要差异在于如何度量隐分布与先验之间的偏差。VAE 惩罚逐样本 KL KL(qϕ(zx)p(z))\mathrm{KL}(q_\phi(z\mid x)\Vert p(z))(对数据求平均),作用于每个输入的后验,且需随机编码器。WAE 惩罚一个最优传输散度——在 WAE-MMD 形式下是一个闭式核差异——且仅作用于聚合后验 qZq_Z。AAE 同样惩罚该聚合 qZq_Z,但以对抗方式估计散度,训练一个判别器而非求值某个闭式量。第一种用显式解析惩罚;第二种用无需网络、基于样本的估计量;第三种用学得的估计量,以核的固定归纳偏置换取灵活性,代价是极小极大不稳定。

三者之间的权衡很具体。固定的核自带一套”远近”的内置观念——比如在一个 16 维隐空间里匹配高斯先验,带宽选错的 MMD 可能对一眼可见的失配视而不见,又或对无关紧要的差异过度敏感。AAE 的学得判别器没有这种固定标尺:原则上它能侦测 qZq_ZpZp_Z 之间任何有结构的缝隙,包括单个核会抹平的多峰或弯曲失配。它在适应性上挣得的,要在稳定性与可复现性上还回去,因为这把标尺本身就是一个移动的网络。VAE 则与二者都不同:它逐个约束每个后验,所以最易优化,但逐样本之力往往让不同输入的编码相互交叠、把重构糊化——而这正是 WAE 与 AAE 的”只匹配聚合”所要规避的失效模式。

半监督匹配

隐空间可拆分,使一块携带类别标签、另一块携带风格,再以各自独立的对抗惩罚把每块匹配到其自身先验——标签对应类别先验,风格对应连续先验——这样一来,AAE 便能利用少量已有标签,以半监督方式训练。具体地,代码把隐编码拆为 z=(zlabel,zstyle)z=(z_{\text{label}}, z_{\text{style}}),配两个判别器:一个把 zlabelz_{\text{label}} 匹配到标签上的类别先验,一个把 zstylez_{\text{style}} 匹配到连续先验。此外仅对有标签子集施加一项监督交叉熵损失,将 zlabelz_{\text{label}} 对齐到已知类别。

为何这能解耦,值得说清。zlabelz_{\text{label}} 上的类别先验把这一块推向近乎独热的顶点,于是它只能编码属于哪一类;输入的其余信息——类内变化——无处可去,只能落进 zstylez_{\text{style}},由其连续先验吸收。那一小撮标签随后只做一件事:把类别槽位与真实类名的对应关系固定下来,这件事所需的样本远少于从零学会各个类。训练后,固定 zlabelz_{\text{label}} 为某一类、重采 zstylez_{\text{style}},便能生成该类的新样本——一种可控生成,从同一套匹配机器里自然落出,不需另设条件模型。

AAE 介于 GAN 与自编码器之间:它保留自编码器的重构目标与隐结构,却借用 GAN 的对抗密度比机制来强制先验。它与 Wasserstein 自编码器旨趣相近——二者皆把聚合后验匹配到先验——并与变分自编码器的逐样本 KL 形成对照。这一聚合匹配思想经熵正则最优传输在 EVIA 中得到推广。

在 Cryo-ET 中的落点

Cryo-ET 重构里没有可供模仿的真值体,只有被缺失楔割伤的层析图。可用的监督是一个关于”真实结构长什么样”的先验,而”把一个分布匹配到先验”正是 AAE 在隐空间里解决的问题。AAE 核心的对抗密度比,与 CryoGEN-I 作为点估计复原器所用的机制是同一个——一个为重构有多”像结构”打分的判别器——它也继承了深入框里所述的同种极小极大不稳定。转向 CryoGEN-II 中那个闭式、基于传输的匹配,与让 WAE 越过 AAE 的,是同一步:用一个稳定的最优传输目标,换下那位学得的裁判。把聚合匹配的思想再推一程,EVIA 的熵正则传输支撑起 CryoWGEN,后者把单个复原体变成一族后验,从而暴露出缺失楔究竟把哪些细节留作未定。

← 生成与分布匹配