O gerador

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

Um diagrama de uma rede adversária generativa. No centro do
          diagrama, há uma caixa com o rótulo "#39;discriminator'". Duas ramificações são inseridas nesta
          caixa à esquerda.  A ramificação superior começa no canto superior esquerdo do
          diagrama com uma caixa denominada 'imagens do mundo real'. Uma seta leva
          deste cilindro para uma caixa etiquetada como "#39;Exemplo'". Uma seta da caixa 'Sample' alimenta na caixa 'Discriminator'. A ramificação inferior
          alimenta a caixa 'Discriminator' começando com uma caixa denominada 'Entrada
          aleatória'. Uma seta leva da caixa 'Random Input' para uma caixa denominada
          'Generator'. Uma seta vai da caixa 'Generator' para uma segunda
          'Sample'. Uma seta vai da caixa 'Sample' para a
          'Discriminator. No lado direito da caixa 'Discriminador' ,
          duas setas levam a duas
          caixas no lado direito do diagrama. Uma seta leva a uma caixa
          com o rótulo "##99;Perda do decretador"'. A outra seta leva a uma caixa chamada 'Perda do gerador'. Uma caixa amarela rotulada com uma seta apontando para a esquerda e
 a palavra 'Backpropagation' é desenhada em torno da caixa 'Random Input'
 da caixa 'Generator', da caixa inferior

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:

  1. Amostra de ruído aleatório.
  2. Produza a saída do gerador de um ruído aleatório de amostra.
  3. Receba uma classificação de discriminador "Real" ou "Fake" para saída de gerador.
  4. Calcule a perda com base na classificação do discriminador.
  5. Faça o retropropagação pelo discriminador e pelo gerador para conseguir gradientes.
  6. 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.