toco O que é uma Rede Adversária Generativa (GAN)? - Unite.AI
Entre em contato
Masterclass de IA:

AI 101

O que é uma Rede Adversária Generativa (GAN)?

mm
Atualização do on

Redes Adversárias Generativas (GANs) são tipos de arquiteturas de redes neurais capaz de gerar novos dados que está de acordo com os padrões aprendidos. As GANs podem ser usadas para gerar imagens de rostos humanos ou outros objetos, para realizar a tradução de texto para imagem, para converter um tipo de imagem em outro e para melhorar a resolução de imagens (super resolução), entre outras aplicações. Como os GANs podem gerar dados totalmente novos, eles estão à frente de muitos sistemas, aplicativos e pesquisas de IA de ponta. No entanto, como exatamente as GANs funcionam? Vamos explorar como as GANs funcionam e dar uma olhada em alguns de seus principais usos.

Definindo modelos generativos e GANs

Uma GAN é um exemplo de modelo generativo. A maioria dos modelos de IA pode ser dividida em uma de duas categorias: modelos supervisionados e não supervisionados. Modelos de aprendizado supervisionado são normalmente usados ​​para discriminar entre diferentes categorias de entradas, para classificar. Em contraste, os modelos não supervisionados são normalmente usados ​​para resumir a distribuição de dados, muitas vezes aprendendo uma distribuição Gaussiana dos dados. Como eles aprendem a distribuição de um conjunto de dados, eles podem extrair amostras dessa distribuição aprendida e gerar novos dados.

Diferentes modelos generativos têm diferentes métodos de geração de dados e cálculo de distribuições de probabilidade. Por exemplo, o Modelo Naive Bayes opera calculando uma distribuição de probabilidade para os vários recursos de entrada e a classe generativa. Quando o modelo Naive Bayes faz uma previsão, ele calcula a classe mais provável tomando a probabilidade das diferentes variáveis ​​e combinando-as. Outros modelos generativos de aprendizado não profundo incluem modelos de mistura gaussiana e alocação de dirichlet latente (LDA). Modelos generativos baseados em deep leaning incluir Máquinas Boltzmann Restritas (RBMs), Autoencoders Variacionais (VAEs)e, claro, GANs.

As redes adversárias generativas foram proposto pela primeira vez por Ian Goodfellow em 2014, e eles foram aprimorados por Alec Redford e outros pesquisadores em 2015, levando a uma arquitetura padronizada para GANs. GANs são, na verdade, duas redes diferentes unidas. GANs são composto por duas metades: um modelo de geração e um modelo de discriminação, também chamados de gerador e discriminador.

A Arquitetura GAN

As Redes Adversárias Gerativas são construído a partir de um modelo gerador e um modelo discriminador juntos. O trabalho do modelo gerador é criar novos exemplos de dados, com base nos padrões que o modelo aprendeu com os dados de treinamento. O trabalho do modelo discriminador é analisar imagens (supondo que seja treinado em imagens) e determinar se as imagens são geradas/falsas ou genuínas.

Os dois modelos são colocados um contra o outro, treinados de acordo com a teoria dos jogos. O objetivo do modelo gerador é produzir imagens que enganam seu adversário – o modelo discriminador. Enquanto isso, o trabalho do modelo discriminador é superar seu adversário, o modelo gerador, e capturar as imagens falsas que o gerador produz. O fato de os modelos serem colocados uns contra os outros resulta em uma corrida armamentista onde ambos os modelos melhoram. O discriminador recebe feedback sobre quais imagens eram genuínas e quais imagens foram produzidas pelo gerador, enquanto o gerador recebe informações sobre quais de suas imagens foram marcadas como falsas pelo discriminador. Ambos os modelos melhoram durante o treinamento, com o objetivo de treinar um modelo de geração que pode produzir dados falsos que são basicamente indistinguíveis de dados reais e genuínos.

Uma vez que uma distribuição gaussiana de dados foi criada durante o treinamento, o modelo generativo pode ser usado. O modelo do gerador é inicialmente alimentado com um vetor aleatório, que ele transforma com base na distribuição gaussiana. Em outras palavras, o vetor semeia a geração. Quando o modelo é treinado, o espaço vetorial será uma versão comprimida, ou representação, da distribuição gaussiana dos dados. A versão compactada da distribuição de dados é chamada de espaço latente ou variáveis ​​latentes. Posteriormente, o modelo GAN pode pegar a representação do espaço latente e extrair pontos dela, que podem ser fornecidos ao modelo de geração e usados ​​para gerar novos dados altamente semelhantes aos dados de treinamento.

O modelo discriminador é alimentado com exemplos de todo o domínio de treinamento, que é composto de exemplos de dados reais e gerados. Os exemplos reais estão contidos no conjunto de dados de treinamento, enquanto os dados falsos são produzidos pelo modelo generativo. O processo de treinamento do modelo discriminador é exatamente o mesmo que o treinamento básico do modelo de classificação binária.

Processo de Treinamento GAN

Vejamos todo o treinamento processo para uma tarefa hipotética de geração de imagens.

Para começar, o GAN é treinado usando imagens reais e genuínas como parte do conjunto de dados de treinamento. Isso configura o modelo discriminador para distinguir entre imagens geradas e imagens reais. Também produz a distribuição de dados que o gerador usará para produzir novos dados.

O gerador pega um vetor de dados numéricos aleatórios e os transforma com base na distribuição gaussiana, retornando uma imagem. Essas imagens geradas, juntamente com algumas imagens genuínas do conjunto de dados de treinamento, são alimentadas no modelo discriminador. O discriminador renderizará uma previsão probabilística sobre a natureza das imagens que recebe, gerando um valor entre 0 e 1, onde 1 é tipicamente imagens autênticas e 0 é uma imagem falsa.

Há um loop de feedback duplo em jogo, pois o discriminador de solo é alimentado com a verdade das imagens, enquanto o gerador recebe feedback sobre seu desempenho pelo discriminador.

Os modelos generativo e de discriminação estão jogando um jogo de soma zero um com o outro. Um jogo de soma zero é aquele em que os ganhos de um lado vêm à custa do outro lado (a soma de ambas as ações é zero ex). Quando o modelo discriminador é capaz de distinguir com sucesso entre exemplos reais e falsos, nenhuma alteração é feita nos parâmetros do discriminador. No entanto, grandes atualizações são feitas nos parâmetros do modelo quando ele não consegue distinguir entre imagens reais e falsas. O inverso é verdadeiro para o modelo generativo, ele é penalizado (e seus parâmetros atualizados) quando falha em enganar o modelo discriminativo, mas caso contrário seus parâmetros permanecem inalterados (ou são recompensados).

Idealmente, o gerador é capaz de melhorar seu desempenho a ponto de o discriminador não conseguir discernir entre as imagens falsas e reais. Isso significa que o discriminador sempre renderizará probabilidades de %50 para imagens reais e falsas, o que significa que as imagens geradas devem ser indistinguíveis das imagens genuínas. Na prática, as GANs normalmente não chegam a esse ponto. No entanto, o modelo generativo não precisa criar imagens perfeitamente semelhantes para ainda ser útil para as muitas tarefas para as quais os GANs são usados.

Aplicações GAN

As GANs têm uma série de aplicações diferentes, a maioria delas girando em torno da geração de imagens e componentes de imagens. As GANs são comumente usadas em tarefas em que os dados de imagem necessários estão ausentes ou limitados em alguma capacidade, como um método de gerar os dados necessários. Vamos examinar alguns dos casos de uso comuns para GANs.

Gerando novos exemplos para conjuntos de dados

As GANs podem ser usadas para gerar novos exemplos para conjuntos de dados de imagem simples. Se você tiver apenas alguns exemplos de treinamento e precisar de mais deles, GANs podem ser usados ​​para gerar novos dados de treinamento para um classificador de imagem, gerando novos exemplos de treinamento em diferentes orientações e ângulos.

Gerando rostos humanos únicos

A mulher dessa foto não existe. A imagem foi gerada por StyleGAN. Foto: Owlsmcgee via Wikimedia Commons, Domínio público (https://commons.wikimedia.org/wiki/File:Woman_1.jpg)

Quando suficientemente treinados, os GANs podem ser usados ​​para gerar imagens extremamente realistas de rostos humanos. Essas imagens geradas podem ser usadas para ajudar a treinar sistemas de reconhecimento facial.

Tradução de imagem para imagem

GANs excel na tradução de imagens. As GANs podem ser usadas para colorir imagens em preto e branco, traduzir esboços ou desenhos em imagens fotográficas ou converter imagens do dia para a noite.

Tradução de texto para imagem

A tradução de texto para imagem é possível através do uso de GANs. Quando fornecido com texto que descreve uma imagem e a imagem que o acompanha, um GAN pode ser treinado para criar uma nova imagem quando fornecido com uma descrição da imagem desejada.

Editando e Reparando Imagens

GANs podem ser usados ​​para editar fotografias existentes. GANs remover elementos como chuva ou neve de uma imagem, mas também podem ser usados ​​para reparar imagens antigas e danificadas ou imagens corrompidas. 

Super Resolution

Super resolução é o processo de pegar uma imagem de baixa resolução e inserir mais pixels na imagem, melhorando a resolução dessa imagem. As GANs podem ser treinadas para obter uma imagem e gerar uma versão de alta resolução dessa imagem. 

Blogueiro e programador com especialidades em Machine Learning e Aprendizagem profunda tópicos. Daniel espera ajudar outras pessoas a usar o poder da IA ​​para o bem social.