O que são Redes adversárias generativas (GANs)?

As redes adversárias generativas (GANs) são um tipo de arquitetura de aprendizado profundo que usa duas redes neurais concorrentes para gerar novos dados. Essas duas redes, o gerador e o discriminador, são treinadas uma contra a outra, o que ajuda a produzir uma saída mais precisa. As GANs podem ser úteis em várias áreas, incluindo visão computacional, robótica, geração de imagens, síntese de vídeo e processamento de linguagem natural.

Como as GANs funcionam?

A melhor maneira de entender como as GANs funcionam é por meio de uma analogia: uma competição entre um falsificador de arte (o gerador) e um crítico de arte (o discriminador).

  • O falsificador (gerador): o objetivo do falsificador é criar pinturas que sejam indistinguíveis de verdadeiras obras-primas. De início, as tentativas são grosseiras e claramente falsas. Ele começa criando uma imagem aleatória (como jogar tinta em uma tela).
  • O crítico (discriminador): o trabalho do crítico é distinguir as pinturas reais das falsificações. No começo, isso é fácil. O crítico analisa a arte original e o trabalho do falsificador e dá feedback, basicamente dizendo: "Isso é falso".
  • O ciclo de feedback: o falsificador usa esse feedback para melhorar. Ele aprende o que faz uma pintura parecer real e ajusta a técnica. O crítico também melhora, aprendendo a identificar imperfeições mais sutis à medida que as falsificações melhoram.

Esse "jogo" de adversários continua, e as duas redes ficam cada vez mais inteligentes. Com o tempo, o falsificador fica tão habilidoso que o crítico não consegue mais distinguir a diferença. Nesse ponto, a GAN é treinada e pode gerar novos dados altamente realistas.

CNNs x GANs

As redes neurais convolucionais (CNNs) e as redes adversárias generativas (GANs) são arquiteturas de aprendizado profundo, mas têm pontos fortes e aplicações distintos. As CNNs são frequentemente usadas para tarefas de classificação de imagens e detecção de objetos, enquanto as GANs costumam ser projetadas para gerar novas instâncias de dados.

Recurso

CNNs;

GANs

Uso de dados

Conjuntos de dados rotulados em sua maioria

Conjuntos de dados rotulados ou não rotulados

Saída

Classificação, extração de atributos

Novas instâncias de dados diversas

Tipo de modelo

Modelos discriminativos

Generativa

Tarefas principais

Classificação de imagens, reconhecimento de objetos

Geração de imagens, aumento de dados, criação de dados sintéticos

Recurso

CNNs;

GANs

Uso de dados

Conjuntos de dados rotulados em sua maioria

Conjuntos de dados rotulados ou não rotulados

Saída

Classificação, extração de atributos

Novas instâncias de dados diversas

Tipo de modelo

Modelos discriminativos

Generativa

Tarefas principais

Classificação de imagens, reconhecimento de objetos

Geração de imagens, aumento de dados, criação de dados sintéticos

É importante observar que as CNNs costumam ser usadas em arquiteturas de GAN, geralmente como a rede discriminadora. A tarefa do discriminador de distinguir imagens reais de falsas é um problema de classificação de imagens, para o qual as CNNs, com suas fortes capacidades de extração de atributos, geralmente são mais adequadas.

Tipos comuns de GANs

Embora todas as GANs compartilhem a estrutura gerador-discriminador, diferentes variações foram desenvolvidas para resolver problemas específicos. Estes são alguns dos tipos mais importantes:

  • GAN condicional (cGAN): e se você quiser controlar o que a GAN cria? Uma cGAN permite adicionar uma condição. Em vez de gerar "um rosto aleatório", você pode pedir para gerar "uma mulher sorridente com cabelo loiro". Isso é essencial para aplicativos de conversão de texto em imagem.
  • CycleGAN: e se você quiser traduzir uma imagem de um estilo para outro sem ter pares de imagens perfeitamente correspondentes para treinamento (por exemplo, transformar uma foto de um cavalo em uma zebra)? A CycleGAN foi projetada para essa "tradução de imagem para imagem não pareada", o que a tornou famosa pela transferência de estilo e transfiguração de objetos.
  • StyleGAN: esse tipo de GAN se concentra na criação de imagens realistas de altíssima qualidade (principalmente rostos) e oferece ao usuário controle detalhado sobre o "estilo" da imagem, como idade, cabelo ou expressão.
  • GAN de super-resolução (SRGAN): essa GAN é especializada em pegar uma imagem borrada de baixa resolução e aumentar a escala para uma versão nítida de alta resolução, alucinando detalhes realistas.

Embora o conceito fundamental de usar duas redes adversárias permaneça consistente em todas as variações de GAN, os pesquisadores exploraram uma variedade de modificações arquitetônicas e de treinamento para lidar com limitações e melhorar o desempenho de aplicativos específicos.

Para que servem as GANs?

As GANs abriram novas possibilidades em vários setores. As aplicações geralmente se enquadram nestas áreas principais:

Criação e manipulação de conteúdo

Essa é a aplicação mais famosa das GANs. Ela inclui a geração de imagens realistas de pessoas, lugares e objetos, a criação de arte e música digitais e a ativação de ferramentas avançadas de edição de imagens, como transferência de estilo (fazer uma foto parecer uma pintura), super-resolução (melhorar a nitidez de imagens borradas) e síntese de texto para imagem.

Aumento e privacidade de dados

Dados de alta qualidade são o combustível do machine learning, mas podem ser raros, caros ou privados. As GANs ajudam a resolver esse problema gerando dados sintéticos. Na área da saúde, as GANs podem criar exames médicos realistas, mas anônimos, para treinar modelos de diagnóstico sem violar a privacidade dos pacientes. No setor financeiro, elas podem gerar dados sintéticos de transações para treinar sistemas melhores de detecção de fraudes. Isso ajuda a superar a escassez de dados e a equilibrar os conjuntos de dados.

Simulação e previsão

As GANs podem aprender os padrões em sistemas complexos para criar simulações realistas. Isso é usado para gerar diversos cenários para treinar carros autônomos, prever os próximos frames em um vídeo ou até mesmo descobrir possíveis estruturas moleculares na descoberta de medicamentos.

Detecção de anomalias e ameaças

Ao treinar uma GAN com dados "normais", ela fica muito boa em detectar qualquer coisa que não se encaixe no padrão. Ela é usada para detectar atividades financeiras fraudulentas, identificar intrusões de rede em segurança cibernética e encontrar defeitos na fabricação.

Como criar com GANs no Google Cloud

O desenvolvimento e a implantação de GANs exigem uma capacidade computacional significativa e uma plataforma de MLOps robusta. O Google Cloud oferece as ferramentas para oferecer suporte a todo o fluxo de trabalho:

  • Para criar e gerenciar modelos: a Vertex AI é uma plataforma gerenciada de machine learning que simplifica o processo de criação, treinamento e implantação de modelos complexos como GANs. Ele oferece um ambiente unificado para gerenciar seus dados e experimentos.
  • Para treinamento de alto desempenho: treinar GANs é uma tarefa exigente em termos computacionais. As Cloud TPUs são aceleradores de hardware personalizados do Google projetados para acelerar significativamente o treinamento de aprendizado profundo, permitindo que você itere em arquiteturas GAN complexas com muito mais rapidez.
  • Para uma implantação escalonável: depois que o modelo é treinado, o Google Kubernetes Engine (GKE) oferece um ambiente escalonável e eficiente para implantar GANs conteinerizadas como parte de um aplicativo maior.

Vá além

Comece a criar no Google Cloud com US$ 300 em créditos e mais de 20 produtos do programa Sempre gratuito.

Google Cloud