Como o ChatGPT funciona: um mergulho profundo

Antes de começarmos, essa aqui é uma tradução livre de um compilado de twitts (ou xwitts, vai saber agora) do Dan Hollick, que você pode ver em Inglês aqui no Typefully. Eu recomendo consumir todo o conteúdo o blog do cara, sério, ele tem uma facilidade para explicar coisas complexas, que é fora do normal, depois do LLM busque pela explicação do QR code.

segure suas bundas


Como um Modelo de Linguagem Grande(Large Language Model ou LLM) igual o ChatGPT realmente funciona? Bem, ambos são incrivelmente simples e extremamente complexos ao mesmo tempo.

Segure suas bundas, este é um mergulho profundo.

Large Language Model

Você pode pensar em um modelo como o cálculo das probabilidades de uma saída com base em alguma entrada.

Em modelos de linguagem, isso significa que, dada uma sequência de palavras, eles calculam as probabilidades para a próxima palavra na sequência.

Como um autocompletar extravagante.

Ele é treinado em uma grande quantidade de dados.

Para entender de onde vêm essas probabilidades, precisamos falar sobre algo chamado Rede Neural.

Esta é uma estrutura semelhante a uma rede onde os números são alimentados em um lado e as probabilidades são cuspidas do outro.

Eles são mais simples do que você imagina.

Rede neural

Imagine que queiramos treinar um computador para resolver o simples problema de reconhecer símbolos em uma tela de 3x3 pixels.

Nós precisaríamos de uma rede neural como esta:

  • Uma camada de entrada
  • Duas camadas escondidas
  • Uma camada de saída

3x3 pixel display

Nossa camada de entrada consiste em 9 nós chamados neurônios - um para cada pixel. Cada neurônio teria um número de 1 (branco) a -1 (preto).

Nossa camada de saída consiste em 4 neurônios, um para cada um dos possíveis símbolos. Seu valor acabará sendo uma probabilidade entre 0 e 1.

entra e saída

Entre eles, temos fileiras de neurônios, chamadas de camadas "escondidas". Para o nosso caso de uso simples, só precisamos de dois.

Cada neurônio está conectado aos neurônios nas camadas adjacentes por um peso, que pode ter um valor entre -1 e 1.

Camadas escondidas

Quando um valor é passado do neurônio de entrada para a próxima camada, ele é multiplicado pelo peso.

Esse neurônio então simplesmente soma todos os valores que recebe, esmaga o valor entre -1 e 1 e o passa para cada neurônio na próxima camada.

Esmagar valores entre camadas

O neurônio na camada oculta final faz o mesmo, mas esmaga o valor entre 0 e 1 e passa isso para a camada de saída.

Cada neurônio na camada de saída detém uma probabilidade e o número mais alto é o resultado mais provável.

Resultado provável

Quando treinamos essa rede, alimentamos uma imagem para a qual sabemos a resposta e calculamos a diferença entre a resposta e a probabilidade da rede calculada.

Em seguida, ajustamos os pesos para nos aproximarmos do resultado esperado.

Mas como sabemos "como” ajustar os pesos?

Ajuste os pesos

Não vou entrar em detalhes, mas usamos técnicas matemáticas inteligentes chamadas Descida do Gradiente e Propagação Reversa para descobrir qual valor para cada peso nos dará o menor erro.

Continuamos repetindo esse processo até ficarmos satisfeitos com a precisão do modelo.

Precisão do modelo

Isso é chamado de rede neural de alimentação para frente - mas essa estrutura simples não será suficiente para resolver o problema do processamento de linguagem natural.

Em vez disso, os LLMs tendem a usar uma estrutura chamada transformador(transformer) e tem alguns conceitos-chave que desbloqueiam muito potencial.

Transformar arquitetura de rede neural

Primeiro, vamos falar sobre palavras(words).

Em vez de cada palavra ser uma entrada, podemos dividir as palavras em tokens que podem ser palavras, subpalavras, caracteres ou símbolos.

Observe como eles até incluem o espaço.

Tokenização

Assim como em nosso modelo, representamos o valor do pixel como um número entre 0 e 1, esses tokens também precisam ser representados como um número.

Poderíamos simplesmente dar a cada token um número único e encerrar o dia, mas há outra maneira de representá-los que adiciona mais contexto.

Token IDs

Podemos armazenar cada token em um vetor multidimensional que indique sua relação com outros tokens.

Para simplificar, imagine um plano 2D no qual traçamos a localização das palavras. Queremos que palavras com significados semelhantes sejam agrupadas mais juntas.

Isso é chamado de incorporação(embedding).

Incorporação

As incorporações(embeddings) ajudam a criar relações entre palavras semelhantes, mas também capturam analogias.

Por exemplo, a distância entre as palavras cachorro e cachorrinho deve ser a mesma que a distância entre gato e gatinho.

Também podemos criar incorporações(embeddings) para frases inteiras.

Frases inteiras

A primeira parte do transformador(transformer) é codificar nossas palavras de entrada nessas incorporações(embeddings).

Essas incorporações(embeddings) são então alimentadas para o próximo processo, chamado de atenção(attention), que adiciona ainda mais contexto às incorporações(embeddings).

A atenção(attention) é extremamente importante no processamento de linguagem natural.

O que é um modelo de linguagem grande?

As incorporações(embeddings) lutam para capturar palavras com múltiplos significados.

Considere os dois significados de 'banco'. Os seres humanos derivam o significado correto com base no contexto da frase.

'Dinheiro' e 'Praça' são contextualmente importantes para o banco de palavras em cada uma dessas frases.

Contexto para definir "banco"

O processo de atenção(attention) olha para trás, através da frase, para palavras que fornecem contexto ao banco de palavras.

Em seguida, repesa(re-weights) a incorporação(embedding) para que a palavra banco esteja semanticamente mais próxima da palavra 'praça' ou 'dinheiro'.

Contexto para definir "banco"

Esse processo de atenção(attention) acontece muitas vezes para capturar o contexto da frase em várias dimensões.

Depois de tudo isso, as incorporações(embeddings) contextualizadas são eventualmente passadas por uma rede neural, como essa simplesinha que observamos no inicio desse texto, que produz probabilidades.


Essa é uma versão massivamente simplificada de como um LLM igual ao ChatGPT realmente funciona.

Para entrar de cabeça nesse mundo, Stephen Wolfram tem mais detalhes nesse artigo aqui (ENG):
What Is ChatGPT Doing … and Why Does It Work?

Nazaré confusa.

Para algo um pouco mais acessível, tem essa série de vídeos do canal @3blue1brown sobre como as redes neurais aprendem. Tem uns gráficos bem legais aqui, mesmo que você não entenda toda a matemática.

Mas o que *é* uma Rede Neural? | Deep learning, capítulo 1

No blog CohereAI tem conteúdos excelentes explicando incorporações(embendding), atenção(attention) e transformadores(transformer):

- What Are Word and Sentence Embeddings? por Luis Serrano

- What Is Attention in Language Models? por Luis Serrano

Agora pode soltar suas bundas.

Okay!