Redes Generativas Adversariais (GANs)
Deslize para mostrar o menu
Redes Generativas Adversariais (GANs) são uma classe de modelos generativos introduzidos por Ian Goodfellow em 2014. Elas consistem em duas redes neurais — o Gerador e o Discriminador — treinadas simultaneamente em um contexto de teoria dos jogos. O gerador tenta produzir dados que se assemelham aos dados reais, enquanto o discriminador tenta distinguir entre dados reais e dados gerados.
As GANs aprendem a gerar amostras de dados a partir de ruído resolvendo um jogo minimax. Ao longo do treinamento, o gerador se torna melhor em produzir dados realistas, e o discriminador se torna melhor em distinguir dados reais de falsos.
Arquitetura de uma GAN
Um modelo GAN básico consiste em dois componentes principais:
1. Gerador (G)
- Recebe um vetor de ruído aleatório z∼pz(z) como entrada;
- Transforma esse vetor, por meio de uma rede neural, em uma amostra de dados G(z) destinada a se assemelhar aos dados da distribuição real.
2. Discriminador (D)
- Recebe uma amostra de dados reais x∼px(x) ou uma amostra gerada G(z);
- Produz um escalar entre 0 e 1, estimando a probabilidade de que a entrada seja real.
Esses dois componentes são treinados simultaneamente. O gerador busca produzir amostras realistas para enganar o discriminador, enquanto o discriminador busca identificar corretamente amostras reais e geradas.
Jogo Minimax dos GANs
No centro dos GANs está o jogo minimax, um conceito da teoria dos jogos. Nesta configuração:
- O gerador G e o discriminador D são jogadores concorrentes;
- D busca maximizar sua capacidade de distinguir dados reais de dados gerados;
- G busca minimizar a capacidade de D de detectar seus dados falsos.
Essa dinâmica define um jogo de soma zero, onde o ganho de um jogador é a perda do outro. A otimização é definida como:
GminDmaxV(D,G)=Ex∼px[logD(x)]+Ez∼pz[log(1−D(G(z)))]O gerador tenta enganar o discriminador gerando amostras G(z) que sejam o mais próximas possível dos dados reais.
Funções de Perda
Embora o objetivo original do GAN defina um jogo minimax, na prática, funções de perda alternativas são usadas para estabilizar o treinamento.
- Perda do Gerador Não Saturante:
Isso ajuda o gerador a receber gradientes fortes mesmo quando o discriminador tem bom desempenho.
- Perda do Discriminador:
Essas funções de perda incentivam o gerador a produzir amostras que aumentam a incerteza do discriminador e melhoram a convergência durante o treinamento.
Principais Variantes das Arquiteturas GAN
Diversos tipos de GANs surgiram para lidar com limitações específicas ou para melhorar o desempenho:
GAN Condicional (cGAN)
GANs Condicionais expandem a estrutura padrão dos GANs ao introduzir informações adicionais (geralmente rótulos) tanto no gerador quanto no discriminador. Em vez de gerar dados apenas a partir de ruído aleatório, o gerador recebe tanto o ruído z quanto uma condição y (por exemplo, um rótulo de classe). O discriminador também recebe y para avaliar se a amostra é realista sob essa condição.
- Casos de uso: geração de imagens condicionadas por classe, tradução de imagem para imagem, geração de imagem a partir de texto.
GAN Convolucional Profundo (DCGAN)
DCGANs substituem as camadas totalmente conectadas dos GANs originais por camadas convolucionais e convolucionais transpostas, tornando-os mais eficazes para a geração de imagens. Também introduzem diretrizes arquiteturais como a remoção de camadas totalmente conectadas, uso de normalização em lote e emprego de ativações ReLU/LeakyReLU.
- Casos de uso: geração de imagens foto-realistas, aprendizado de representações visuais, aprendizado não supervisionado de características.
CycleGAN CycleGANs abordam o problema de tradução de imagens não pareadas. Diferente de outros modelos que exigem conjuntos de dados pareados (por exemplo, a mesma foto em dois estilos diferentes), CycleGANs conseguem aprender mapeamentos entre dois domínios sem exemplos pareados. Eles introduzem dois geradores e dois discriminadores, cada um responsável pelo mapeamento em uma direção (por exemplo, fotos para pinturas e vice-versa), e aplicam uma perda de consistência cíclica para garantir que traduzir de um domínio e retornar preserve a imagem original. Essa perda é fundamental para manter o conteúdo e a estrutura.
A Perda de Consistência Cíclica garante:
GBA(GAB(x))≈x e GAB(GBA(y))≈yonde:
- GAB mapeia imagens do domínio A para o domínio B;
- GBA mapeia do domínio B para o domínio A.
- x∈A,y∈B.
Casos de uso: conversão de fotos em obras de arte, tradução de cavalo para zebra, conversão de voz entre falantes.
StyleGAN
StyleGAN, desenvolvido pela NVIDIA, introduz controle baseado em estilo no gerador. Em vez de alimentar um vetor de ruído diretamente ao gerador, ele passa por uma rede de mapeamento para produzir "vetores de estilo" que influenciam cada camada do gerador. Isso permite controle refinado sobre características visuais como cor do cabelo, expressões faciais ou iluminação.
Inovações notáveis:
- Mistura de estilos, permite combinar múltiplos códigos latentes;
- Normalização Adaptativa de Instância (AdaIN), controla mapas de características no gerador;
- Crescimento progressivo, o treinamento começa em baixa resolução e aumenta ao longo do tempo.
Casos de uso: geração de imagens em ultra alta resolução (por exemplo, rostos), controle de atributos visuais, geração de arte.
Comparação: GANs vs VAEs
GANs são uma poderosa classe de modelos generativos capazes de produzir dados altamente realistas por meio de um processo de treinamento adversarial. Seu núcleo reside em um jogo minimax entre duas redes, utilizando funções de perda adversarial para melhorar iterativamente ambos os componentes. Uma compreensão sólida de sua arquitetura, funções de perda—incluindo variantes como cGAN, DCGAN, CycleGAN e StyleGAN—e seu contraste com outros modelos como VAEs fornece a base necessária para aplicações em áreas como geração de imagens, síntese de vídeo, aumento de dados e mais.
1. Qual das alternativas a seguir melhor descreve os componentes de uma arquitetura GAN básica?
2. Qual é o objetivo do jogo minimax em GANs?
3. Qual das afirmações a seguir é verdadeira sobre a diferença entre GANs e VAEs?
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo