没有标准答案,谁来告诉生成器哪里要改?
上一页把表示接回图像,留下了一个训练问题:随机起点并没有配给一张唯一正确的照片,生成器怎样知道自己该改什么?GAN 引入一个会学习的判别器。它看到参考数据与当前生成候选,学习两组之间可区分的线索;生成器则利用这个反馈,让自己的候选更难被区分。
先看杯子的例子。参考组的杯柄接在杯身上,当前候选却有不自然的连接。判别器如果学到了这个差别,就能通过可微的计算为生成器提供改进方向。它并不是把“杯柄向左移动三毫米”写成文字指令,而是由损失对生成图及生成器参数的导数,告诉训练过程怎样调整参数。课堂杯图用来说明这项关系;参考数据与生成候选是两组的角色名称,不是在鉴定图像是否来自实拍。
但反馈能负责到哪里,取决于判别器看到了什么。假设任务要求白色陶瓷杯,候选却是一只很逼真的金属杯。只读图像、学习外观自然度的判别器,可能没有理由拒绝它。若参考图与生成图的边框处理不同,它还可能学会识别边框,而不是我们关心的杯柄。要检查“符合这个条件”,就必须把相应条件与图像的关系纳入训练。外观像真的,并没有自动回答任务是否做对。
“生成器和判别器都在改变,会不会互相追着跑?” 会,二者通常交替训练。训练判别器时,生成样本充当当前反例,这一步只更新判别器。训练生成器时,暂时固定判别器的参数,但仍让反馈经过判别器传回生成图,再传到生成器。固定参数不等于切断这条导数路径;如果整段判别计算都不记录梯度,生成器就收不到这项反馈。交替训练有清楚的目标,但有限数据、容量和优化过程并不保证稳定收敛。
从整体看,训练希望改变的是生成器在各种随机起点上产生的分布,而不只是修好眼前这只杯子。理想分析中会讨论足够强的判别器和达到平衡时的关系;实际训练还需检查是否只学会少数样式、是否出现不稳定。损失下降不能单独替这些检查作答。
训练结束后的通常使用路径更短:抽取随机起点,送入生成器,得到一张候选。判别器帮助训练参数,并不要求每次生成都参与逐张筛选。任务若需要额外筛选,那是使用系统又增加的一道环节。
下一页把视野从一张移到一批:如果每张杯子都很漂亮,但六张几乎只有同一种杯形,这个生成器学到了多少可能性?
画面怎样推进
第1步
参考数据与候选的差别,为学习到的判别器提供训练线索;这里先比较杯柄连接。
打开这一停点第2步
反馈可能改善外观,但没有收到白色陶瓷条件的判别器,不能自动检查该要求。
打开这一停点第3步
训练后的生成器通常直接由随机起点出图;判别器并非每次使用必经的选图部件。
打开这一停点学习材料
与当前画面直接相关
没有给每个随机起点配真图,G怎样获得学习信号?
设某个生成样本在当前D处的分数为0.2,G的非饱和损失是−log(0.2)≈1.609;若分数变为0.6,损失降到约0.511。训练并不是拿这个差值直接移动杯柄,而是计算损失经D到生成图、再到G参数的导数,让同一套G参数改变未来一批输出。
这一步固定D参数,仍保留D对输入的导数:固定函数f(x)=2x,df/dx仍为2。轮到D学习时则只把生成图当作数值反例,不更新G。通常生成新图只运行G;D的反馈已经留在学到的参数中。
接着读:G步的目标与固定参数为何仍可反传。
连续阅读
CLS 04 · 对抗反馈与图像翻译
按连续正文理解这条方法的训练信号、使用过程与算例;数学与实践在相关问题旁展开。
先看:第4章,从对象和问题开始
阅读与实践
LAB 08 · 生成器与判别器的真实反馈
固定生成起点比较训练前中后;改变 D:G 更新比,分别读近模式比例与模式覆盖。
先看:先看保存结果与读图解释
在 Deepnote 阅读与运行LAB 03 · CycleGAN:可逆不等于语义正确
先读本册保存结果,再按实现顺序核对一个算例;最后只改一个变量。
先看:先看保存结果与读图解释
在 Deepnote 阅读与运行来源与进一步阅读
Generative Adversarial Networks
先认清G与D各自更新哪组参数,再追踪生成器训练时反馈经过D返回的路径。
先看:第5–14、15–29页
