A parte geradora de uma GAN aprende a criar dados falsos incorporando o feedback do discriminador. Ela aprende a fazer com que o discriminador classifique a saída como real.
O treinamento do gerador requer integração mais rígida entre o gerador e o discriminador do que o treinamento do discriminador. A parte da GAN que treina o gerador inclui:
- entrada aleatória
- generator, que transforma a entrada aleatória em uma instância de dados
- rede discriminatória, que classifica os dados gerados
- saída de discriminador
- perda do gerador, que penaliza o gerador por não enganar o discriminador
Figura 1: retropropagação no treinamento do gerador.
Entrada aleatória
Redes neurais precisam de algum tipo de entrada. Normalmente, inserimos dados com os quais queremos fazer algo, como uma instância que queremos classificar ou fazer uma previsão. Mas o que usamos como entrada para uma rede que gera instâncias de dados totalmente novas?
Na forma mais básica, uma GAN usa ruído aleatório como entrada. Depois, o gerador transforma esse ruído em uma saída significativa. Ao introduzir ruído, podemos fazer com que a GAN produza uma ampla variedade de dados, fazendo amostragem de diferentes locais na distribuição de destino.
Os experimentos sugerem que a distribuição do ruído não importa muito, então podemos escolher algo que seja fácil de usar, como uma distribuição uniforme. Por conveniência, o espaço de onde o áudio é amostrado geralmente é de uma dimensão menor que a dimensionalidade do espaço de saída.
Como usar o Discriminador para treinar o gerador
Para treinar uma rede neural, alteramos os pesos da rede para reduzir o erro ou a perda da saída. No entanto, na GAN, o gerador não está diretamente conectado à perda que estamos tentando afetar. O gerador é alimentado na rede do discriminador, e o discriminador produz a saída que estamos tentando afetar. A perda do gerador penaliza o gerador por produzir uma amostra que a rede discriminatória classifica como falsa.
Esse bloco extra de rede precisa ser incluído na retropropagação. A retropropagação ajusta cada peso na direção correta calculando o impacto do peso sobre a saída — como a saída mudaria se você alterasse o peso. No entanto, o peso do gerador depende do impacto dos pesos do discriminador em que ele é alimentado. Assim, a retropropagação começa na saída e flui de volta pelo diferenciador para o gerador.
Ao mesmo tempo, não queremos que o discriminador seja alterado durante o treinamento do gerador. Tentar atingir um alvo em movimento dificultaria ainda mais um problema para o gerador.
Então, treinamos o gerador com o seguinte procedimento:
- Amostra de ruído aleatório.
- Produza a saída do gerador de um ruído aleatório de amostra.
- Receba uma classificação de discriminador "Real" ou "Fake" para saída de gerador.
- Calcule a perda com base na classificação do discriminador.
- Faça o retropropagação pelo discriminador e pelo gerador para conseguir gradientes.
- Usar gradientes para alterar somente os pesos do gerador.
Esta é uma iteração do treinamento de geradores. Na próxima seção, vamos ver como combinar o treinamento do gerador e do discriminador.