A parte do gerador de uma GAN aprende a criar dados falsos incorporando o feedback do discriminador. Ele aprende a fazer com que o discriminador classifique a saída como real.
O treinamento do gerador exige uma integração mais estreita entre o gerador e o discriminador do que o treinamento do discriminador. A parte do GAN que treina o gerador inclui:
- entrada aleatória
- rede de gerador, que transforma a entrada aleatória em uma instância de dados
- rede discriminadora, que classifica os dados gerados
- saída do discriminador
- perda de gerador, que penaliza o gerador por não enganar o discriminador
Figura 1: retropropagação no treinamento do gerador.
Entrada aleatória
As redes neurais precisam de alguma forma 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, um GAN usa ruído aleatório como entrada. O gerador transforma esse ruído em uma saída significativa. Ao introduzir ruídos, podemos fazer com que o GAN produza uma grande variedade de dados, fazendo amostragem em diferentes lugares na distribuição de destino.
Os experimentos sugerem que a distribuição do ruído não importa muito. Portanto, podemos escolher algo fácil de amostrar, como uma distribuição uniforme. Para conveniência, o espaço em que o ruído é amostrado geralmente tem dimensão menor do 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 nosso GAN, no entanto, o gerador não está diretamente conectado à perda que estamos tentando afetar. O gerador alimenta a rede discriminadora, 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 discriminadora classifica como falsa.
Esse bloco extra de rede precisa ser incluído na retropropagação. A propagação para trás ajusta cada peso na direção certa calculando o impacto do peso na saída, ou seja, como a saída mudaria se você mudasse o peso. No entanto, o impacto do peso de um gerador depende do impacto dos pesos do discriminador que ele alimenta. A propagação para trás começa na saída e flui de volta pelo discriminador para o gerador.
Ao mesmo tempo, não queremos que o discriminador mude durante o treinamento do gerador. Tentar atingir um alvo em movimento tornaria um problema difícil ainda mais difícil para o gerador.
Então, treinamos o gerador com o seguinte procedimento:
- Amostra de ruído aleatório.
- Produz a saída do gerador a partir do ruído aleatório amostrado.
- Receba a classificação "Real" ou "Fake" do discriminador para a saída do gerador.
- Calcular a perda da classificação do discriminador.
- Faça a propagação de volta pelo discriminador e pelo gerador para receber gradientes.
- Use gradientes para mudar apenas os pesos do gerador.
Esta é uma iteração do treinamento do gerador. Na próxima seção, vamos mostrar como equilibrar o treinamento do gerador e do discriminador.