Compreendendo a Linguagem dos Modelos de Linguagem
O que é token? RAG? Fine-tuning? Esses e outros conceitos sobre LLMs
Me siga no X | Me siga no LinkedIn | Apoie a Newsletter | Solicite uma consultoria
Não é surpresa que os Large Language Models (LLMs) têm emergido como ferramentas promissoras e versáteis nos mais diversos domínios, em particular, por conta de suas habilidades notáveis, desde a geração de textos literários até a solucionar desafios de programação complexos.
No entanto, como acontece com muitas inovações tecnológicas, o jargão e os termos técnicos associados podem ser desafiadores para os novatos.
Você já se perguntou o que exatamente é um "token" ou por que "fine-tuning" é crucial para a performance de um LLM? Ou talvez como "prompt engineering" ou o conceito de "Pass@N" influenciam a qualidade das respostas geradas por esses modelos?
Neste texto, exploraremos alguns dos principais termos aplicados nos mais diversos textos sobre LLMs, de uma maneira clara e concisa. Embora seja longe de ser um glossário completo, este texto pode ajudar a esclarecer, educar e capacitar novos leitores pelo mundo dos LLMs.
Chain of Thoughts (CoT ou Cadeia de Pensamentos)
Quando falamos em LLMs, "Chain of Thought" refere-se ao fluxo lógico de ideias e raciocínio no texto gerado pelos LLMs. Imagine, por exemplo, um fluxograma que delineia uma sequência de ações para resolver um problema. Assim como a CoT de um LLM segue uma lógica, o código de um software deve seguir uma sequência lógica para executar funções corretamente.
Encoder & Decoder (Codificador & Decodificador)
"Encoders" são partes dos LLMs que convertem um tipo específico de entrada (imagem, áudio, texto) em um espaço vetorial latente. Por outro lado, "Decoders" fazem o oposto: pegam um input desse espaço e reconstroem dados do tipo original.
Compare esses modelos com, por exemplo, à compressão e descompressão de dados. Um codificador pode pegar um arquivo grande e compactá-lo em um tamanho menor. O decodificador, então, descompacta o arquivo para seu tamanho original ou uma forma utilizável.
Few-shot learning (Aprendizado com Poucos Exemplos)
É uma técnica que treina modelos para se saírem bem em novas tarefas com poucos novos itens de dados rotulados. Pode-se, por exemplo, treinar um modelo para reconhecer bugs com apenas alguns exemplos de erros, isso é "few-shot learning". O modelo então usa esses exemplos para identificar problemas similares em códigos desconhecidos. Nos LLMs, esses exemplos são geralmente incluídos no prompt.
Fine-tuning (Ajuste Fino)
Depois de treinar um modelo em um grande conjunto de dados, o "fine-tuning" ajusta em um conjunto menor, potencialmente mais específico. Imagine um LLM treinado em literatura geral e depois especificamente em Shakespeare.
Generative AI (IA Gerativa)
IA Generativa foca na criação de novo conteúdo. Por exemplo, um LLM que compõe uma música ou escreve um poema é um exemplo de IA Generativa. IA Generativa também são exemplos sofisticados de criação de código automaticamente.
Linguistic Model (Modelo Linguístico)
Um modelo linguístico é uma representação matemática da estrutura e composição de uma linguagem. Ele é projetado para entender, interpretar e gerar linguagem humana de maneira coesa.
Estes modelos são fundamentais para muitas aplicações de processamento de linguagem natural, desde corretores ortográficos até tradutores automáticos. Por exemplo, quando você digita uma frase em um tradutor online, é um modelo linguístico que interpreta a estrutura e o significado da sua entrada e, em seguida, gera uma tradução adequada para o idioma desejado.
A evolução dos modelos linguísticos levou ao desenvolvimento dos LLMs, que são capazes de tarefas linguísticas ainda mais complexas.
Parameters (Parâmetros)
Os parâmetros são valores numéricos ajustados durante o treino dos LLMs. Imagine os parâmetros como as "configurações" de um LLM que definem como ele interpreta e gera conteúdo. Compare, por exemplo, com os valores que são passados para um método ou função. Como nos pesos de uma rede neural, os parâmetros ditam o comportamento das funções.
Prompt
É a entrada dada ao LLM para gerar uma resposta. Por exemplo, fazer uma pergunta a um LLM é dar-lhe um "prompt". De forma análoga, um prompt é um comando em um terminal, que espera uma entrada do usuário para executar uma ação.
Prompt engineering (Engenharia de Prompt)
É a arte de criar e otimizar prompts para obter resultados específicos. Imagine tentar obter a resposta mais especializada de um LLM; o processo de formulação e refinamento da pergunta é chamado de "engenharia de prompt".
RAG (Retriever-Augmented Generation):
RAG combina técnicas de recuperação de informação com geração de texto para aprimorar a capacidade de um modelo em fornecer respostas precisas e ricas em detalhes. Em vez de confiar apenas no conhecimento pré-treinado, um modelo RAG primeiro "busca" em uma grande base de dados ou corpus para encontrar trechos relevantes e, em seguida, usa esses trechos para gerar uma resposta.
Por exemplo, ao perguntar sobre um tópico histórico específico, o RAG pode recuperar artigos ou trechos relevantes antes de formular uma resposta detalhada, aumentando precisão e abrangência na informação fornecida.
ReAct (Raciocínio e Ação)
O framework ReAct permite que os LLMs gerem raciocínios e ações. Por exemplo, um LLM pode usar uma calculadora externa para resolver um problema matemático e, em seguida, interpretar o resultado.
Temperature (Temperatura)
Afeta o quão criativo ou determinístico é o conteúdo gerado. Uma temperatura alta pode fazer um LLM escrever uma história de ficção mais imaginativa, enquanto uma baixa pode mantê-la mais factual.
A temperatura pode ser comparada ao grau de aleatoriedade em um gerador de números aleatórios. A "temperatura" alta gera números mais variados, enquanto uma baixa gera números mais previsíveis.
Token
Um "token" é uma unidade com a qual um LLM lê e gera conteúdo. Por exemplo, em inglês, "chatting" pode ser dividido em "chat" e "ting" como dois tokens.
No contexto da programação, um "token" refere-se à menor unidade de código que tem um significado claro e representável. Ao analisar o código-fonte, os compiladores dividem o texto em tokens para entender e processar a estrutura do programa. Estes podem incluir palavras-chave (como if
, for
e while
), identificadores (nomes de variáveis ou funções), operadores (como +
, -
, *
e /
), delimitadores (como chaves {}
, parênteses ()
e vírgulas ,
), e literais (como números e strings).
A "tokenização" é o processo de converter uma sequência de caracteres de um programa em uma sequência de tokens. Por exemplo, a linha de código int age = 25;
pode ser dividida em tokens como: int
, age
, =
, 25
, e ;
.
Essa divisão facilita as análises proferidas pelo compilador, permitindo que o código seja corretamente convertido em instruções executáveis.
Top-N, Pass@N
Se um LLM gera 10 soluções para um problema, e a correta está entre as 3 primeiras, então é uma solução "Top-3". "Pass@N" é semelhante, mas focado em programação. Essa métrica conta quantas vezes um programa gerado por um LLM, que está dentro dos N principais candidatos gerados, passa com sucesso em um conjunto de testes ou satisfaz as condições especificadas.
O objetivo dessa métrica é entender não apenas se o modelo pode gerar uma solução correta, mas também quão consistentemente ele pode oferecer soluções viáveis dentro de suas principais tentativas
Zero-shot learning (Aprendizado sem Exemplos)
É quando um LLM faz previsões sobre tarefas que nunca viu antes. Imagine um LLM que foi treinado em reconhecimento de animais, mas nunca viu um "unicórnio" e ainda é capaz de identificar um a partir de uma descrição.
Pense em um software que pode reconhecer e lidar com novos erros sem ter sido explicitamente treinado para eles.
Conclusão
A compreensão dos intrincados mecanismos por trás dos Large Language Models torna-se fundamental para aqueles que desejam inovar e se beneficiar destes modelos.
Este glossário, embora longe de ser completo, não só serve como uma introdução para os recém-chegados, mas também como um recurso de consulta para os já familiarizados. Estar armado com o vocabulário adequado nos capacita a participar ativamente dessa revolução.