Connect with us

IA 101

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

mm

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

Definindo Modelos Generativos e GANs

Um GAN é um exemplo de um 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 tipicamente usados para discriminar entre diferentes categorias de entradas, para classificar. Em contraste, modelos não supervisionados são tipicamente usados para resumir a distribuição de dados, frequentemente aprendendo uma distribuição gaussiana dos dados. Como eles aprendem a distribuição de um conjunto de dados, eles podem tirar 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 recursos de entrada e a classe generativa. Quando o modelo Naive Bayes renderiza uma previsão, ele calcula a classe mais provável, tomando a probabilidade das diferentes variáveis e combinando-as juntas. Outros modelos generativos não baseados em aprendizado profundo incluem Modelos de Mistura Gaussiana e Alocação Dirichlet Latente (LDA). Modelos generativos baseados em aprendizado profundo incluem Máquinas de Boltzmann Restritas (RBMs), Autoencoders Variacionais (VAEs) e, claro, GANs.

Redes Adversárias Generativas foram primeiramente propostas por Ian Goodfellow em 2014, e elas foram aprimoradas 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 compostas por duas metades: um modelo de geração e um modelo de discriminação, também referido como o gerador e o discriminador.

A Arquitetura GAN

Redes Adversárias Generativas são construídas a partir de um modelo de gerador e um modelo de discriminador juntos. O trabalho do modelo de gerador é criar novos exemplos de dados, com base nos padrões que o modelo aprendeu a partir dos dados de treinamento. O trabalho do modelo de discriminador é analisar imagens (supondo que ele 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 forma teórica de jogos. O objetivo do modelo de gerador é produzir imagens que enganem seu adversário – o modelo de discriminador. Enquanto isso, o trabalho do modelo de discriminador é superar seu adversário, o modelo de gerador, e capturar as imagens falsas que o gerador produz. O fato de os modelos serem colocados um contra o outro 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 é alimentado com 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 possa produzir dados falsos que sejam 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 de 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 vetor espaço será uma versão comprimida, ou representação, da distribuição de dados gaussiana. A versão comprimida da distribuição de dados é referida como espaço latente, ou variáveis latentes. Mais tarde, o modelo GAN pode então tirar pontos desse espaço latente e dar ao modelo de geração, que pode ser usado para gerar novos dados que sejam muito semelhantes aos dados de treinamento.

O modelo de discriminador é alimentado com exemplos de todo o domínio de treinamento, que é composto por 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 de discriminador é exatamente o mesmo que o treinamento de um modelo de classificação binária básico.

Processo de Treinamento GAN

Vamos dar uma olhada no processo de treinamento inteiro para uma tarefa hipotética de geração de imagens.

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

O gerador recebe um vetor de dados numéricos aleatórios e os transforma com base na distribuição gaussiana, retornando uma imagem. Essa imagem gerada, juntamente com algumas imagens genuínas do conjunto de dados de treinamento, é alimentada no modelo de discriminador. O discriminador renderiza uma previsão probabilística sobre a natureza das imagens que recebe, produzindo um valor entre 0 e 1, onde 1 é tipicamente uma imagem autêntica e 0 é uma imagem falsa.

Há um loop de feedback duplo em jogo, pois o discriminador é alimentado com a verdade dos dados, enquanto o gerador é dado feedback sobre seu desempenho pelo discriminador.

Os modelos generativo e discriminativo 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 é zero). Quando o modelo de discriminador consegue distinguir com sucesso entre exemplos reais e falsos, não são feitas alterações nos parâmetros do discriminador. No entanto, atualizações grandes são feitas nos parâmetros do modelo quando ele falha em distinguir entre imagens reais e falsas. O inverso é verdadeiro para o modelo generativo; ele é penalizado (e seus parâmetros são atualizados) quando ele falha em enganar o modelo discriminativo, mas caso contrário, seus parâmetros são inalterados (ou ele é recompensado).

Idealmente, o gerador é capaz de melhorar seu desempenho a um ponto em que o discriminador não possa discernir entre as imagens falsas e reais. Isso significa que o discriminador sempre renderizará probabilidades de 50% para imagens reais e falsas, significando que as imagens geradas devem ser indistinguíveis das imagens genuínas. Na prática, GANs normalmente não atingirão 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

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. GANs são comumente usados em tarefas em que os dados de imagem necessários estão faltando ou limitados de alguma forma, como um método de geração dos dados necessários. Vamos examinar alguns dos casos de uso comuns para GANs.

Geração de Novos Exemplos para Conjuntos de Dados

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

Geração de Rostos Humanos Únicos

A mulher nesta 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, 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 se destacam na tradução de imagem. GANs podem ser usados para colorizar imagens em preto e branco, traduzir esboços ou desenhos para imagens fotográficas, ou converter imagens de dia para noite.

Tradução de Texto para Imagem

A tradução de texto para imagem é possível por meio 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.

Edição e Reparo de Imagens

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

Super Resolução

A super resolução é o processo de tomar uma imagem de baixa resolução e inserir mais pixels na imagem, melhorando a resolução da imagem. GANs podem ser treinados para tomar uma imagem e gerar uma versão de maior resolução da imagem.

Blogueiro e programador com especialidades em Machine Learning e Deep Learning tópicos. Daniel espera ajudar os outros a usar o poder da IA para o bem social.