CycleGAN学习

学习笔记是根据李宏毅老师的CycleGAN课:(https://www.youtube.com/watch?v=wulqhgnDr7E)整理的。

  • 从非成对数据中学习,指的是我们有部分特征X和部分标签y,这些X和y并非完全一一匹配,学习目标是通过多层神经网络学习从X到y的映射关系。这种任务有区别于psudo labelling和 back translation问题, 这两类问题对应的网络在训练过程中仍需要一定的标签,可看作是semi-supervised learning问题,它的训练资料中仍包括了匹配的数据X和y。

问题描述

尝试学习一个网络,使得网络可以学习从domain X 到 domain y 的映射,尝试的办法为套用原始GAN的思想,将input noise改成从domain X采样得到的数据,得到generated image,Discriminator分辨来自生成的图片是否属于domain y.

但是,按照上述做法生成图片并不能保证学到从domain X到domain y的映射,原因在于Generator的作用是基于采样得到的照片学习y上的另一张图,这里缺乏任何可能的约束使得生成的图片与输入图片是强相关(即匹配)的。为了强化输出于输入间的关系,基于以上做以下改进:

问题解决

训练两个Generator G 1 G_1 G1, G 2 G_2 G2:
G 1 : X → y G_1: X \rightarrow y G1:Xy
G 2 : y → X G_2: y \rightarrow X G2:yX
G 1 G_1 G1尝试将domain X上的图片转变为domain y上的图片,将 G 1 G_1 G1的输出作为 G 2 G_2 G2,使 G 2 G_2 G2做从domain y到domain X的映射,并在损失函数中设计一项,使 G 1 G_1 G1的输入与 G 2 G_2 G2的输出越接近越好。

就实验结果来看,神经网络都是有惰性的,给定输入,网络不会刻意去学习比较复杂的分布(例如, G 1 G_1 G1通过学习,具备了将“眼镜”特征转化为"一颗痔"特征的本领, 相应地, G 2 G_2 G2通过学习,具备了将“一颗痔”特征转化为"眼镜"特征的本领),它在大部分时候直接传递原始特征。

以上仅仅为单边CycleGAN,其作用为约束了在生成和判别的过程中,domain X的初始状态应该和cycle过程之后的输出保持一致,如下图所示:
单边CycleGAN
同理,将X和y视成是等价的两类数据,我们可以构造出另一边CycleGAN,即将y作为原始输入,然后构造 G 3 G_3 G3 G 4 G_4 G4分别学习 y → X y \rightarrow X yX X → y X \rightarrow y Xy 的映射,中间生成的向量X交由判别器D,观察其是否来自于domain X. 如下图所示。

另半边CycleGAN
合起来即为CycleGAN模型,如下图:
CycleGAN

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值