IA generativa é um tipo de inteligência artificial capaz de criar novos conteúdos – como textos, imagens, músicas, vídeos ou até código – de maneira autônoma, com base em exemplos que ela já viu durante o treinamento.
Ela se chama “generativa” porque gera coisas novas, ao contrário de apenas classificar ou reconhecer dados, como faz a IA tradicional. Por baixo dos panos, os modelos generativos são redes neurais criadas a partir dos mesmos componentes essenciais.
Apresentaremos três tipos de modelos generativos de IA: redes adversárias generativas, modelos de difusão e large language models.
Redes Adversárias Generativas (GANs)
As Redes Adversárias Generativas são compostas de duas redes neurais separadas, treinadas em conjunto. A ideia por trás das GANs é simples, mas poderosa: colocar duas redes neurais para competirem entre si, como num jogo. São elas:
- Gerador:
- Tenta criar dados falsos que se pareçam com os reais.
- Começa com “barulho” (valores aleatórios) e tenta transformar isso em algo convincente.
- Discriminador:
- Tenta distinguir o que é real e o que é gerado.
- Recebe uma mistura de dados reais (por exemplo, fotos reais) e dados falsos (gerados pelo Gerador).
- Dá um veredito: “isso é real” ou “isso é falso”.
- Como o jogo funciona
- O Gerador tenta enganar o Discriminador com conteúdos cada vez melhores.
- O Discriminador tenta ficar cada vez mais esperto para não ser enganado.
- Com o tempo, os dois melhoram juntos. O Gerador aprende a criar coisas tão realistas que o Discriminador começa a se confundir.
Se o treinamento der certo, o Gerador se torna tão bom que cria conteúdos quase indistinguíveis dos reais. Quando o treinamento é concluído, o discriminador geralmente é descartado e o gerador é treinado a fim de gerar uma saída nova, amostrada aleatoriamente a partir do espaço aprendido dos dados de treinamento.
Em termos estruturais, podemos imaginar uma GAN como a imagem a seguir. O discriminador aceita dois tipos de entradas: dados reais e a saída do gerador (dados falsos). A saída do discriminador será um rótulo: “Real” ou “Falso”. Os algoritmos padrão de retropropagação e gradiente descendente treinam o gerador e o discriminador juntos, mas não simultaneamente.
Por exemplo, o treinamento com um minilote de dados reais – um subconjunto pequeno dos dados reais e disponíveis de treinamento – tem as seguintes etapas:
- Utiliza o gerador em seu estado atual para criar um minilote de dados falsos.
- Obtém os dados reais a partir de um minilote do conjunto de treinamento.
- “Descongela” os pesos do discriminador, de modo que o gradiente descendente possa atualizá-los.
- Passa as amostras falsas e reais pelo discriminador com rótulos 0 e 1, respectivamente.
- Usa a retropropagação com o intuito de executar um passo do gradiente descendente para atualizar os pesos do discriminador.
- “Congela” o discriminador, de modo que o gerador possa ser atualizado sem alterar o discriminador.
- Cria um minilote de entradas do gerador (o vetor aleatório na Figura 6.1).
- Passa as entradas do gerador pelo modelo combinado para atualizar os pesos do gerador. Marca cada uma das entradas do gerador como sendo reais.
- Repete tudo a partir da etapa 1 até que o modelo completo seja treinado.
O objetivo de uma GAN é aprender uma representação do conjunto de treinamento que possa ser considerado um gerador de dados. Pode-se considerar o gerador de dados uma função que recebe uma coleção aleatória de números, o vetor aleatório, e os transforma em uma saída que pode ter vindo do conjunto de treinamento. O gerador se comporta como um dispositivo de data augmentation. A entrada aleatória para o gerador se torna um exemplo do conjunto de treinamento. O gerador é um proxy para o processo real de geração de dados que criou o conjunto real de treinamento antes de mais nada. O vetor aleatório de números é extraído de uma distribuição de probabilidade (distribuição normal – curva de sino).
O vetor aleatório utilizado por uma GAN é conhecido como vetor de ruído. Ele distribui valores respeitando a curva normal, sendo a média 0, com a maioria dos intervalos de -3 a +3. Cada um dos n-elementos do vetor segue esse intervalo, significando que o próprio vetor é uma amostra de um espaço n-dimensional.
As GANs não necessitam de dados rotulados. Não nos interessa qual é a classe de uma amostra de treinamento, apenas se ela é um dado real.
Vamos criar uma rede adversária generativa utilizando o conjunto de dados de algarismos MNIST. O gerador aprenderá a transformar um conjunto aleatório de 10 números (vetor N = 10) em uma imagem de algarismo. Após treinado, podemos fornecer ao gerador qualquer combinação de 10 valores em torno de zero e ele gerará uma imagem nova de algarismo, imitando os algarismos escritos à mão que compõem o MNIST.
Convertemos o conjunto do MNIST em vetores 28×28, então cada amostra tem um vetor de 784 dimensões. Esses são os dados reais. Para a criação dos dados falsos, necessitamos de vetores aleatórios de 10 elementos, que serão criados extraindo 10 amostras de uma distribuição normal com valor médio de zero.
A parte geradora do modelo aceita um vetor de ruído de 10 elementos como entrada e gera um vetor de saída de 784 elementos, representando a imagem sintetizada de algarismo. O modelo gerador tem três camadas ocultas, com 256, 512 e 1.024 nós, e uma camada de saída de 784 nós para gerar a imagem. Os nós da camada oculta usam uma versão modificada da unidade linear retificada chamada leaky ReLU: geram a entrada se ela for positiva; no entanto, se for negativa, a saída será um valor pequeno e positivo, multiplicado pela entrada negativa. A camada de saída usa uma função de ativação tangente hiperbólica: cada um dos 784 elementos de saída estará no intervalo de –1 a +1. Isso é aceitável. É possível escalonar os valores de 0 a 255 ao gravar uma imagem no disco.
O gerador deve mapear entre a entrada do vetor de ruído aleatório e uma imagem de saída. O discriminador deve obter uma imagem como entrada, sugerindo um vetor de 784 dimensões. O discriminador tem três camadas ocultas, como o gerador, mas ao contrário: 1.024 nós, depois 512 nós, seguidos por 256 nós. A camada de saída do discriminador tem um nó com uma função de ativação sigmoide, que gera valores de 0 a 1, e nos permite interpretar qual a confiança do discriminador sobre a entrada ser real (saída próxima de 1) ou falsa (saída próxima de 0).
O gerador aceita um vetor aleatório de 10 elementos como entrada e gera um vetor de saída de imagem falsa de 784 elementos. O discriminador aceita um vetor de imagem, real ou falso, e gera uma predição, um número de 0 a 1. Imagens falsas devem gerar valores próximos de 0 e imagens reais valores próximos de 1. Caso o gerador seja treinado com eficiência, na maior parte do tempo, o discriminador será enganado, significando que a saída do discriminador será próxima de 0,5 para todas as entradas.
A rede inteira é treinada em 200 épocas com 468 minilotes, totalizando 93.600 passos de gradiente descendente. É possível exibir amostras do gerador após cada época a fim de analisar a rede à medida que aprende. A figura abaixo ilustra amostras após as épocas 1, 60 e 200, da esquerda para a direita.

O gerador tem desempenho precário após a primeira passagem, mas menos precário do que poderíamos imaginar. A maioria das imagens geradas se parece com números 1. Outras formas parecidas com algarismos apresentam ruídos.
Após as 60 épocas, o gerador gerou uma variedade de algarismos. Alguns estão corretos, outros ainda estão confusos ou parcialmente escritos. Após 200 épocas, quase todos os algarismos estão nítidos e bem definidos. O gerador está treinado e disponível para gerar imagens digitais sob demanda.
É importante mencionar que um vetor de entrada aleatório gera um algarismo aleatório, mas não podemos escolher qual deles. A GAN não nos permite selecionar o tipo de algarismo desejado, mas ela tem seus favoritos. Após todo o aprendizado, a predominância do número 1 é um sintoma de um problema denominado o colapso do modo: o gerador aprende desde o início a criar um exemplo muito bem, que engana o discriminador e fica retido, gerando somente esse resultado e não a diversidade de imagens que desejamos.
Mas existem formas de trabalharmos esta característica. E é isso o que abordaremos em nosso próximo artigo. Até lá!
Referências
Kneusel, Ronald T.. Como a Inteligência Artificial Funciona: Da Magia à Ciência
Comments (0)