从基本问题引入CGAN
对于text-to-image 的问题,传统的神经网络的方法将文本信息输入网络,输出图像。明显的一个问题,比如单词train 可能对应多张图像,那么最终生成的图像将是这么多张图像的堆叠。
引入GAN,此时discriminator做的工作不仅仅是判断生成是否为真,同时还要判别输出与要求是否匹配。算法流程大致如下:
从训练集中采样 { ( c 1 , x 1 ) , ( c 2 , x 2 ) … ( c m , x m ) } \{(c_1,x_1),(c_2,x_2)\dots(c_m,x_m)\} {
(c1,x1),(c2,x2)…(cm,xm)} ,从某种分布中采样(例如正态分布等)得到随机向量 { z 1 , z 2 … z m } \{z_1,z_2\dots z_m\} {
z1,z2…zm},从数据集中采样 { x 1 d , x 2 s … x n d } \{x_1^d,x_2^s\dots x_n^d\} {
x1d,x2s…xnd}。generator的生成则重新被定义为: x i g = G ( c i , z i ) x^g_i=G(c_i,z_i) xig=G(ci,zi)。同时discriminator的损失函数也要被重新定义为:
V = 1 m