
<a id="n27-title"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N27.html#n27-title)


# 既不想要唯一答案，也不能只换几个噪点

王德泉 · Coding with AI · Lecture 04


<a id="n27-a55750059c0c"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N27.html#n27-a55750059c0c)

固定建筑的门窗布局，三次随机选择却得到同一张砖墙图。随机输入确实不同，但输出没有利用这份差别。给生成器接上一根随机数输入线，不足以证明它学会了条件下的多种答案。


<a id="n27-5affd1cb3113"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N27.html#n27-5affd1cb3113)

我们想要的是砖、灰泥、木饰面这类可比较的外观变化，同时让门窗继续在规定位置。把门挪走带来了明显变化，却违背内容条件；只增加几个像素噪点虽能让两幅图不完全相同，也没有提供新的设计方案。因此应分别检查外观是否成立、条件是否保持、变化是否有任务意义。三者不能由一个“图像距离很大”的数字包办。


[课程图解] 保持布局的材质变化有用；移门是违约，增加噪点不是所需的设计差异。；图中标签与关系：固定门窗布局 自然、守约 门位违约 只有噪点变化 回路提供训练约束；自然、守约、有用变化仍须分别检查。 BicycleGAN：两条训练回路，让变化受到约束 ① 图像回路 目标图 y 编码 E 编码 z 生成 G 重建图 ŷ 条件 x 与目标图比较 ② 随机回路 随机 z 生成 G 生成图 ŷ 编码 E 恢复 ẑ 条件 x 恢复不出 z，就付出训练代价
保持布局的材质变化有用；移门是违约，增加噪点不是所需的设计差异。


<a id="n27-c223cdaec7bf"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N27.html#n27-c223cdaec7bf)

**“怎样让模型真的用上随机选择？”** BicycleGAN 在配对翻译中把两种回路结合起来。一条从配对目标取得潜在表示，再要求条件与该表示能重建目标；另一条先抽取潜变量生成图像，再要求能从生成图中恢复这次潜变量。后一项让“完全忽略随机输入”更难满足目标。图像重建与潜变量恢复有不同职责：前者守住配对关系，后者鼓励输出保留潜在选择的信息。它们是促进多解建模的约束，不是无条件保证每种变化都符合人的语义。


<a id="n27-b5b134da18f0"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N27.html#n27-b5b134da18f0)

图像翻译文献这里说的 multimodal，常指同一条件下有多个可能输出，并非一定指文字、声音、图像等多种媒介。


<a id="n27-fbbc39a00330"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N27.html#n27-fbbc39a00330)

如果没有逐图配对，MUNIT 提出另一种建模假设：把内容与风格分开，跨域共享内容表示，在目标域采样风格，再组合生成。它用重建等要求支持这种分工。这里必须追问“什么算内容、什么算风格”：对本题，门的位置属于内容、墙面材质可以变化；另一个任务也许恰好要求识别材质。分解是否成立，需要由任务和结果检验，不能由两个变量的命名决定。


<a id="n27-b0ba74d492ae"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N27.html#n27-b0ba74d492ae)

比较这类模型时，应固定同一输入、相同采样预算并展示全部候选。只挑三张差异最大的成功图，会藏掉重复、违约与失败。也不要把课堂构造的材质图当成 BicycleGAN 或 MUNIT 的实验成绩；它们让我们看清想要求的变化，而论文和实验协议负责检验具体方法是否做到。


<a id="n27-6e806d3e1ddb"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N27.html#n27-6e806d3e1ddb)

有了控制入口，编辑错误仍可能发生在不同阶段。下一页从原图、反演重建和改色结果的三次对照，找出究竟是哪一步改坏了什么。


<a id="n27-training-circuits"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N27.html#n27-training-circuits)


## BicycleGAN：两条训练回路，让变化受到约束


<a id="n27-states"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N27.html#n27-states)


## 画面怎样推进


<a id="n27-b0"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N27.html#n27-b0)

条件门窗不变，三次随机输入却给出同一外观。随机入口存在，并不保证生成器使用这份变化。

[返回这一课堂停点](https://codingai-lec04.pages.dev/classroom/N27.html?step=b0)


<a id="n27-b1"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N27.html#n27-b1)

材质候选保留在上方；下方同时显示两条 BicycleGAN 训练回路：目标图编码后，在条件 x 下重建；随机 z 生成图后，再从图中恢复 z。忽略 z 会使随机变量恢复产生训练代价。

[返回这一课堂停点](https://codingai-lec04.pages.dev/classroom/N27.html?step=b1)


<a id="n27-b2"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N27.html#n27-b2)

原有错门与噪点反例保持。回路是训练约束，不保证自然、守约和有用变化自动同时成立，三项仍要独立检查。

[返回这一课堂停点](https://codingai-lec04.pages.dev/classroom/N27.html?step=b2)


<a id="n27-b3"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N27.html#n27-b3)

MUNIT 面向未逐图配对的两个集合，另作共享内容与可变风格的分解假设；它与上一停点的配对 BicycleGAN 不能混作一件事。

[返回这一课堂停点](https://codingai-lec04.pages.dev/classroom/N27.html?step=b3)


<a id="n27-materials"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N27.html#n27-materials)


## 继续阅读与实验


<a id="n27-learning-unit-001"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N27.html#n27-learning-unit-001)


## BicycleGAN的两条回路，各自知道什么、批改什么？


<a id="n27-learning-unit-002"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N27.html#n27-learning-unit-002)

第一条从已知配对(A,B)开始：A是建筑布局，B是本次真实外观。编码器从B给出潜分布并抽z_B；G同时读取A与z_B，产生B̂。图像重建比较B̂与已知B，潜分布还受先验约束。这里z来自目标编码，不能写成任意随机起点；漏掉A也就丢了条件翻译。


<a id="n27-learning-unit-003"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N27.html#n27-learning-unit-003)

第二条先给A和先验抽取的z：G(A,z)生成B̃，再让编码器从B̃恢复ẑ，比较ẑ与本次z。这次没有一张唯一真图供重建，已知答案是潜变量。假设教学例中z等概率取0/1，而G忽略z、总出同一图，编码器只能给同一答案；最佳预测0.5仍有平均平方误差0.25，暴露了输入未被利用。


<a id="n27-learning-unit-004"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N27.html#n27-learning-unit-004)

图像重建守住配对目标，潜变量恢复促使输出留下随机选择的信息。后者不保证每个维度都对应人类命名的材质，仍需展示同条件的全部候选并检查意义与守约。


<a id="n27-learning-unit-005"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N27.html#n27-learning-unit-005)

接着读：[完整双回路](https://codingai-lec04.pages.dev/lecture.html#ch04-bicycle-loops)、[第一条的已知量](https://codingai-lec04.pages.dev/lecture.html#ch04-bicycle-first-loop)与[第二条的恢复目标](https://codingai-lec04.pages.dev/lecture.html#ch04-bicycle-second-loop)。


<a id="n27-chapter-reading"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N27.html#n27-chapter-reading)


### [CLS 04 · 对抗反馈与图像翻译](https://codingai-lec04.pages.dev/lecture.html#ch04)

按连续正文理解这条方法的训练信号、使用过程与算例；数学与实践在相关问题旁展开。

先看：第4章，从对象和问题开始


<a id="n27-lab08-practice"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N27.html#n27-lab08-practice)


### [LAB 08 · 生成器与判别器的真实反馈](https://codingai-lec04.pages.dev/course/notebooks/f16324b960a446e2aa03168c17e9fc0b.html)

固定生成起点比较训练前中后；改变 D:G 更新比，分别读近模式比例与模式覆盖。

先看：先看保存结果与读图解释


<a id="n27-lab03-practice"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N27.html#n27-lab03-practice)


### [LAB 03 · CycleGAN：可逆不等于语义正确](https://codingai-lec04.pages.dev/course/notebooks/caf19cffbd744fafb371912863a03e30.html)

先读本册保存结果，再按实现顺序核对一个算例；最后只改一个变量。

先看：先看保存结果与读图解释


<a id="n27-material-1"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N27.html#n27-material-1)


### [Toward Multimodal Image-to-Image Translation](https://proceedings.neurips.cc/paper/2017/file/819f46e52c25763a55cc642422644317-Paper.pdf)

分别追踪目标图到潜变量再重建、潜变量到生成图再恢复两条回路，解释为何随机数不应被忽略。

先看：第3节与图2


<a id="n27-material-2"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N27.html#n27-material-2)


### [Multimodal Unsupervised Image-to-Image Translation](https://arxiv.org/pdf/1804.04732v2)

检查共享内容与域内风格的假设，比较它与配对的BicycleGAN在哪些信息上不同。

先看：第3节与图2

