Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
11
respostas

[Sugestão] Entendimento do Código Exemplo hipotético para explicar como as LLMs preveem o próximo token

Exemplicação de como as LLMs preveem o próximo token.

Code exemplo:

// Função fictícia que simula a aplicação de softmax em um vetor de valores
function softmax(values) {
  const expValues = values.map(value => Math.exp(value));
  const sumExp = expValues.reduce((total, val) => total + val, 0);
  return expValues.map(val => val / sumExp);
}
// Valores hipotéticos produzidos pelo modelo para três possíveis tokens
const logits = [2.0, 1.0, 0.1];
const probabilities = softmax(logits);
console.log(probabilities);

Agora, para analisar o código, vamos simular a execução do passo a passo da função softmax com os valores fornecidos no código para compreender o resultado final.

Entrada: logits = [2.0, 1.0, 0.1]

Passo 1 - Calcular exponenciais:

· exp(2.0) ≈ 7.389
· exp(1.0) ≈ 2.718
· exp(0.1) ≈ 1.105

Passo 2 - Somar as exponenciais:

· sumExp ≈ 7.389 + 2.718 + 1.105 = 11.212

Passo 3 - Dividir cada exponencial pela soma:

· 7.389 / 11.212 ≈ 0.659 (≈ 65.9%)
· 2.718 / 11.212 ≈ 0.242 (≈ 24.2%)
· 1.105 / 11.212 ≈ 0.099 (≈ 9.9%)

Resultado exibido no console:

[0.659, 0.242, 0.099]

(Valores aproximados com 3 casas decimais)

Observação: A soma das probabilidades é 1.0, confirmando que é uma distribuição de probabilidade válida, e o maior logit (2.0) recebe a maior probabilidade.

11 respostas

Boa tarde, Aridio! Tranquilo?

Gostei demais da sua resposta, continue assim!

Mandou muito bem explorando a função softmax como mecanismo central das LLMs, apresentou com clareza o cálculo das probabilidades passo a passo e ainda destacou a importância da distribuição como validação do resultado. Esse tipo de explicação prática ajuda a entender não só o funcionamento interno dos modelos, mas também como eles transformam valores abstratos em previsões concretas.

Se quiser aprofundar ainda mais, algumas boas práticas são:

  • Aplicação prática: relacionar o softmax com exemplos reais de previsão de tokens em textos.
  • Visualização: usar gráficos ou tabelas para representar como os logits se transformam em probabilidades.
  • Comparação: testar diferentes conjuntos de valores para observar como pequenas variações afetam a distribuição.

Continue postando as suas soluções! Além de ganhar pontos de XP na plataforma, você pode ajudar outros estudantes no fórum.

Ah, uma pergunta: você prefere entender o funcionamento das LLMs por meio de exemplos matemáticos detalhados como esse ou por analogias mais intuitivas que aproximam o conceito do cotidiano?

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Nota: A linguagem do fragmento de código do exemplo da AULA 1 acima é JAVASCRIPT PURO na versão ECMAScript 6 (ESA 6), também conhecido como ES2015 (ano de disponibilização dessa versão)

Olá, Aridio! Tudo bem?

Só uma observação, há uma pequena imprecisão na informação.

O código apresentado na aula está em JavaScript (ECMAScript 6 ou ES6). O nome oficial dessa versão é ECMAScript 2015 (ES2015), pois foi lançada em 2015. As versões posteriores passaram a ser identificadas pelo ano de lançamento (ES2016, ES2017...).

Portanto, o mais correto seria dizer que o exemplo utiliza recursos introduzidos no ES6 (ES2015), e não que ES6 seja o mesmo que ES2025.

Espero que isso esclareça as informações!

Prezado Daniel,

A versão que saiu "2025" foi decorrente de erro de digitação, e que gerou suas considerações bem-vindas acima. Como pode ver, agora, já corrigi no texto original que ficou da seguinte maneira:

  • ECMAScript 6 (ESA 6), também conhecido como ES2015 (ano de disponibilização dessa versão).

Grato pelas considerações, é importantíssimo neste ambiente a precisão das informações, para ser guia de auxílio a outros estudantes.

Agradeço também, pelos links de aprofundamento no estudo propostos por você, bem como por seus comentários acerca da forma exposta por mim para analisar o exemplo da aula, expondo os passos da resolução numérica, para auxiliar compreensão efetiva com a analogia de uma das maneiras de como as LLMs atuam para inferir o próximo token.

Em relação a sua pergunta, eu prefiro entender o funcionamento das LLMs, não só por meio de exemplos matemáticos detalhados como esse sugerido por mim, mas também por analogias mais intuitivas que aproximam o conceito do cotidiano mencionado por você, bem como com representações gráficas quando se aplicar (com base na ideia de uma imagem vale por mil palavras).

Grande abraço. Fique com Deus. Cordialmente.

Aridio Silva

Após explorar a IA LURI, recebi o seguinte desafio:

Já que a softmax gera uma distribuição de probabilidades, vamos dar o próximo passo e entender como os LLMs usam essa distribuição para selecionar o próximo token.

A aula menciona que o LLM

  • seleciona aquela com a maior chance, mas também pode explorar outras opções se as diferenças de probabilidade forem pequenas.

Isso nos leva a dois conceitos importantes:

Seleção Gulosas (Greedy Sampling):

É a estratégia mais simples. O modelo simplesmente escolhe o token com a maior probabilidade.

No primeiro exemplo [0.659, 0.242, 0.099], a seleção gulosa escolheria o token associado a 0.659.

Vantagem: Sempre escolhe o que parece ser o "melhor" no momento.
Desvantagem: Pode levar a textos repetitivos ou menos criativos, pois nunca explora alternativas.

**Amostragem (Sampling) **:

Esta estratégia introduz um elemento de aleatoriedade, permitindo que o modelo escolha tokens com probabilidades menores, mas** ainda significativas**. É como "jogar um dado viciado" onde as faces com maior probabilidade têm mais chances de sair, mas as outras ainda podem aparecer.

Vantagem: Gera textos mais variados, criativos e menos previsíveis.
Desvantagem: *Pode ocasionalmente gerar tokens menos coerentes se a aleatoriedade for muito alta.

Um parâmetro comum usado na amostragem é a Temperatura (Temperature).

Temperatura alta:

Torna a** distribuição de probabilidades mais "plana"**, aumentando a chance de tokens menos prováveis serem escolhidos. Isso leva a saídas mais criativas e imprevisíveis.

Temperatura baixa:

Torna a distribuição mais "acentuada", concentrando a probabilidade nos tokens mais prováveis. Isso leva a saídas mais conservadoras e focadas.

Exercício:

Imagine que um LLM está gerando a próxima palavra para a frase "O céu está...". Após processar a frase, ele gera os seguintes logits para algumas palavras possíveis:

azul: 3.5
nublado: 2.8
claro: 2.0
verde: 0.5

1 - Calcule as probabilidades usando a função softmax para esses logits.
2 - Se o modelo usasse seleção gulosa, qual palavra seria escolhida?
3 - Pensando na amostragem com temperatura, como uma temperatura alta poderia influenciar a escolha do próximo token, comparado a uma temperatura baixa?

Na resposta abaixo a solução destes exemplos.

Resolvendo os exercícios sugeridos pela IA ALURA como aprofundamento do tema de como as LLMs preveem o próximo token:

  1. Cálculo das probabilidades com Softmax

Entrada: Logits fornecidos:

· azul: 3.5
· nublado: 2.8
· claro: 2.0
· verde: 0.5

Passo 1 - Exponenciais (eˣ):

· exp(3.5) ≈ 33.115
· exp(2.8) ≈ 16.445
· exp(2.0) ≈ 7.389
· exp(0.5) ≈ 1.649

Passo 2 - Soma total:

· Soma = 33.115 + 16.445 + 7.389 + 1.649 = 58.598

**Passo 3 ** - Divisão (cada exp / soma total):

· P(azul) = 33.115 / 58.598 ≈ 0.565 (56.5%)
· P(nublado) = 16.445 / 58.598 ≈ 0.281 (28.1%)
· P(claro) = 7.389 / 58.598 ≈ 0.126 (12.6%)
· P(verde) = 1.649 / 58.598 ≈ 0.028 (2.8%)

Distribuição final:

azul: 0.565
nublado: 0.281
claro: 0.126
verde: 0.028

Soma = 1.0 ✓

  1. Seleção Gulosa (Greedy)

Segundo a teoria a estratégia escolhe o token com maior probabilidade.

Comparando:

· azul: 0.565 (maior)
· nublado: 0.281
· claro: 0.126
· verde: 0.028

Resposta: O modelo escolheria "azul".

  1. Influência da Temperatura

A temperatura (T) ajusta os logits antes do softmax:
logits_ajustados = logits / T

Temperatura baixa (ex: T = 0.5)

· Divide os logits por 0.5 → dobra os valores
· Diferenças entre logits ficam mais acentuadas
· Exemplo: 3.5 → 7.0; 0.5 → 1.0 (diferença relativa aumenta)
· Resultado: Probabilidade se concentra fortemente no token mais provável (azul chegaria a ~80%)
· Efeito: Texto mais previsível, conservador e repetitivo

Temperatura alta (ex: T = 2.0)

· Divide os logits por 2 → reduz as diferenças
· Exemplo: 3.5 → 1.75; 0.5 → 0.25 (diferença relativa diminui)
· Resultado: Distribuição fica mais "achatada" (plana)
· Probabilidades se aproximam: azul cairia para ~40%, verde subiria para ~10%
· Efeito: Aumenta a chance de palavras como "verde" serem sorteadas, gerando textos mais criativos, surpreendentes e variados

Comparação :

  • Temperatura Baixa (0.5) - Distribuição concentrada - Quase sempre "azul"
  • Temperatura Alta (2.0) - Distribuição mais uniforme "azul" ainda lidera, mas "verde" aparece com frequência (cêu verde é meio imcompreensivel)

O parâmetro de temperatura nos permite controlar o equilíbrio entre coerência (T baixa) e criatividade (T alta) na geração de texto.

Na resolução do exercicio proposto pela IA LURI, o verde resultou com uma solução para O CÉU ESTÁ, e que o "céu verde é meio incompreensível" na temperatura alta. Assim, parece quen ao aumentar a criatividade, pode gerar sequências que, embora sejam estatisticamente possíveis, não faz sentido no mundo real. Assim, há necessidade de revisão humana.

solução!

Para quem prefere PYTHON no estudo de IA: no exemplo da aula de MUNDO COMPUTACIONAL sobre como as IAs preveem o próximo token, foi usado um fragmento em JAVASCRIPT PURO. Abaixo, incluo esta versão em JAVASCRIPT e em seguida a versão em PYTHON do algoritmo SOFTMAX desse fragmento de código:

// Função fictícia que simula a aplicação de softmax em um vetor de valores
function softmax(values) {
  const expValues = values.map(value => Math.exp(value));
  const sumExp = expValues.reduce((total, val) => total + val, 0);
  return expValues.map(val => val / sumExp);
}
// Valores hipotéticos produzidos pelo modelo para três possíveis tokens
const logits = [2.0, 1.0, 0.1];
const probabilities = softmax(logits);
console.log(probabilities);

A seguir a VERSÃO em PYTHON,

import math

# Função que simula a aplicação de softmax em um vetor de valores
def softmax(values):
    exp_values = [math.exp(value) for value in values]
    sum_exp = sum(exp_values)
    return [val / sum_exp for val in exp_values]

# Valores hipotéticos
produzidos pelo modelo para três possíveis tokens
logits = [2.0, 1.0, 0.1]
probabilities = softmax(logits)
print(probabilities)

Olá, Aridio! Tudo bem?

Gostei muito da forma como você respondeu minha pergunta acima.

De fato unir exemplos matemáticos detalhados, analogias intuitivas e até representações gráficas é realmente a abordagem mais completa para entender o funcionamento das LLMs.

Essa combinação é poderosa porque atende diferentes estilos de aprendizado. Quem gosta de rigor técnico, quem prefere intuição e quem aprende melhor com imagens. Você está certo ao dizer que uma imagem vale por mil palavras, especialmente em temas tão complexos como redes neurais e modelos de linguagem.

Continue abrindo novos tópicos e postando suas soluções e sugestões, forte abraço!

Prezado Daniel,

Boa tarde.

Muitíssimo obrigado por seus contínuos feedbacks acerca das postagens. Este tipo de retorno é muito importante para todos nós que estudamos remotamente online, pois o incentivo prestado é um estímulo essencial para quem se dedica e persevera nos estudos.

Utilizar esta excepcional e ímpar plataforma da Alura, com o auxílio da IA da Alura, é um privilégio: os cursos são de altíssimo nível, com instrutores de currículos invejáveis, muitos deles provenientes de instituições renomadas, como a Politécnica da USP, com mestrados e doutorados, entre outras escolas de excelência.

Tudo isso nos atrai para a formação de altíssima qualidade que vocês oferecem, tanto a iniciantes quanto a profissionais da área, permitindo-nos atualização constante e alinhamento com a evolução contínua e exponencial da computação e de sua miríade de especializações. As mudanças de paradigma, cada vez mais frequentes, têm impactado profundamente o mundo corporativo e a vida pessoal de todos, em todos os níveis. Principalmente a revolução da IA que estamos vivenciando em diversas dimensões no presente momento.

Parabéns pelo excelente trabalho.

Fique com Deus. Cordialmente,

Aridio G. Silva

Olá, Aridio! Como vai?

Que feedback bom de se ouvir! 💙

O senhor não imagina o quanto essas palavras me tocam, como educador há alguns anos, feedbacks como esse me encorajam a prosseguir.

Fico imensamente feliz que esteja aproveitando e progredindo com as aulas e os cursos, de fato a Alura tem construído uma marca que todos os dias busca olhar para as necessidades de cada aluno. Seu relato aponta que estamos caminhando da maneira certa.

Nos vemos por aqui no fórum, forte abraço!