Skip to content

IA generativa – Parte 1

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: 

  1. Utiliza o gerador em seu estado atual para criar um minilote de dados falsos. 
  2. Obtém os dados reais a partir de um minilote do conjunto de treinamento. 
  3. “Descongela” os pesos do discriminador, de modo que o gradiente descendente possa atualizá-los. 
  4. Passa as amostras falsas e reais pelo discriminador com rótulos 0 e 1, respectivamente. 
  5. Usa a retropropagação com o intuito de executar um passo do gradiente descendente para atualizar os pesos do discriminador. 
  6. “Congela” o discriminador, de modo que o gerador possa ser atualizado sem alterar o discriminador. 
  7. Cria um minilote de entradas do gerador (o vetor aleatório na Figura 6.1). 
  8. Passa as entradas do gerador pelo modelo combinado para atualizar os pesos do gerador. Marca cada uma das entradas do gerador como sendo reais. 
  9. 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

Comments (0)

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Previous
Next
Back To Top