O artigo sobre GANs diz que o discriminador usa o seguinte gradiente para treinar:
Os valores são amostrados, passados através do gerador para gerar amostras de dados e, em seguida, o discriminador é reproprogado usando as amostras de dados geradas. Uma vez que o gerador gera os dados, ele não desempenha mais nenhum papel no treinamento do discriminador. Em outras palavras, o gerador pode ser completamente removido da métrica, gerando amostras de dados e depois trabalhando apenas com as amostras.
Estou um pouco mais confuso sobre como o gerador é treinado. Ele usa o seguinte gradiente:
Nesse caso, o discriminador faz parte da métrica. Não pode ser removido como no caso anterior. Coisas como mínimos quadrados ou probabilidade logarítmica em modelos discriminativos regulares podem ser facilmente diferenciadas porque possuem uma definição agradável e bem formada. No entanto, estou um pouco confuso sobre como você retropropõe quando a métrica depende de outra rede neural. Você basicamente liga as saídas do gerador às entradas do discriminador e depois trata a coisa toda como uma rede gigante em que os pesos na porção do discriminador são constantes?
fonte
D_loss
eG_loss
? Maximizar sobre que espaço? IIUC,D_real
eD_fake
cada um é um lote, por isso estamos maximizando o lote ??Em pouco tempo: Sim. (Eu procurei algumas das fontes da GAN para checar isso)
Também há muito mais no treinamento da GAN, como: devemos atualizar D e G toda vez ou D em iterações ímpares e G em pares e muito mais. Há também um artigo muito bom sobre esse tópico:
https://arxiv.org/abs/1606.03498
fonte
Recentemente, enviei uma coleção de vários modelos GAN no repositório do github. É baseado em torch7 e muito fácil de executar. O código é simples o suficiente para entender com resultados experimentais. Espero que isso ajude
https://github.com/nashory/gans-collection.torch
fonte