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


# 它回到了原图，却把房子翻译错了

王德泉 · Coding with AI · Lecture 04


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

上一页提出“回得来是否足够”，这一页给出一个明确反例。在这个课堂有限世界里，只有 A、B、C 三栋房屋，每栋在各自季节出现的机会相同。向冬景的转换故意采用 A→B、B→C、C→A；回程则严格按相反关系返回。


<a id="n26-35f795c5364e"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N26.html#n26-35f795c5364e)

从 A 夏景出发，中间得到 B 冬景，回程仍能恢复 A 夏景。B 与 C 也一样：每条回环都正确，每张冬景仍是一栋成立的冬季房屋，三种冬景各出现一次，目标域的等权构成也没有改变。可是三条跨季节身份关系全部错了。**域分布匹配与可逆性检查的是两件重要的事，但二者合起来仍未唯一指定语义对应。**


[课程图解] 三种等权身份经可逆错配仍覆盖目标域并全部回到起点，语义却可以全错。；图中标签与关系：往返正确，建筑身份仍然错配 A 夏 B 冬 去 回 B 夏 C 冬 去 回 C 夏 A 冬 去 回 再加一个检查： 目标域的输入 能否保持原样？
三种等权身份经可逆错配仍覆盖目标域并全部回到起点，语义却可以全错。


<a id="n26-8ff902a80328"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N26.html#n26-8ff902a80328)

这里的等权是构造反例的假设，不是从三张照片估计出自然世界的概率。若真实数据中身份频率不同，一些置换可能改变分布，从而被域外观检查识别；这说明额外信息会缩小歧义，而不推翻等权反例已经表明的逻辑边界。


<a id="n26-3e9a4d158379"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N26.html#n26-3e9a4d158379)

**学生问：“再要求冬景输入保持原样，能强迫 A 夏景变成 A 冬景吗？”** 这种 identity 约束要求夏→冬转换器拿到一张已在冬域的照片时，尽量不要无谓改动；反方向也可作类似约束。它规定的是目标域输入应如何处理，没有直接给出 A 夏景应该连到哪张冬景。两个域的输入可区分时，跨域错配与域内原样返回仍能同时满足。因此 identity 可以帮助保留颜色等属性，却不是跨域语义或人物身份的保证。


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

什么新信息能排除错配？例如明确给出“A 夏景对应 A 冬景”这一对。这立即排除把 A 送给 B 或 C 的候选，但仍允许 B、C 互换。三个身份的双射共有六种，固定 A 的正确去向后还剩两种。LAB03 的配对锚点实验会继续这个例子：增加一条对应信息，直接观察剩余映射怎样减少。


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

真实连续图像还有另一类风险：模型可能把恢复起点所需的信息藏在很小的变化里。相关隐写研究讨论的是这种机制；本页不用它来解释三房置换，也没有声称眼前图片就是实测隐写结果。有限域实验的好处，是不靠训练是否稳定就能把“检查通过”与“语义正确”拆开。


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

下一页再加一项要求：即使内容对应正确，我们也不希望每次都只得到同一种外观。怎样让随机输入带来有意义的多样性？


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


## 画面怎样推进


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

A夏变成B冬再回到A夏，直接分开语义正确与回环正确。

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


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

等权三身份经可逆置换，域构成和双向循环均可保持，跨域语义却全部错误。

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


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

目标域输入原样返回的identity约束，没有给出A夏应对应哪张冬景。

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


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


## 继续阅读与实验


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


## 一条正确配对，能排除多少错误映射？


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

课堂三栋等频房屋A/B/C之间共有3!=6种双射。任何双射配上它的逆映射，都能保持目标频率并让循环误差为零。固定“A夏景→A冬景”后，只剩B/C的2!=2种排列；一条锚点排除了四种，却还没有确定全部身份。


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

若再规定B的正确去向，C也随双射条件确定。这个算例说明配对增加的是对应关系信息。identity loss要求目标域输入少改动，不能替代这条跨域关系。讲义用四类建筑把同一计算扩展为24→6→2。


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

接着读：[四类建筑的可枚举算例](https://codingai-lec04.pages.dev/lecture.html#ch04-cycle-math)与[identity约束的实际含义](https://codingai-lec04.pages.dev/lecture.html#ch04-identity-loss)。


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


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

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

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


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


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

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

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


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


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

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

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


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


### [LAB 03｜可逆不等于语义正确](https://deepnote.com/project/6f83a923-d155-47be-be58-680db701ff7f/notebook/caf19cffbd744fafb371912863a03e30)

实验用四种形状，与课堂三栋房子的对象数不同。逐项检验错配、逆映射和新增锚点，勿将组合数直接照搬。

先看：“把一个完全错误的双射看清楚”及“加一个真正包含语义信息的条件”


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


### [Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks](https://junyanz.github.io/CycleGAN/CycleGAN.pdf)

对照真实图像方法的目标，确认有限反例证明的是不唯一性，而非所有网络必定失败。

先看：第3节与局限讨论

