Vetores de tokens e semelhança

O vetor de um token é o registo da companhia que ele mantém. Funciona bem para palavras com companhia específica e falha para as que aparecem ao lado de tudo.

A carregar a simulação interativa...

Estes vetores contam companhia; os de um transformer são aprendidos 🖖

Todos os números aqui vêm de contar quantas vezes dois tokens aparecem a menos de quatro posições um do outro, convertido numa pontuação que é alta quando o emparelhamento é mais frequente do que o acaso permitiria. É um método real com um nome real, e não é o que está dentro de um modelo de linguagem. Os embeddings de um transformer começam aleatórios e vão sendo ajustados durante o treino até ajudarem a prever o token seguinte, pelo que acabam por codificar aquilo que facilitou a previsão — incluindo coisas que nenhum método de contagem encontraria. O que sobrevive à comparação é a forma: um token torna-se uma direcção, e a proximidade é o ângulo entre direcções.

Um vizinho próximo não é um sinónimo 🖖

Os vizinhos de ␣Earth são ␣planet, ␣Sun, ␣Jupiter e ␣Moon — nenhum deles significa Terra. Os de ␣star são ␣yellow, ␣white e ␣red, que são as suas propriedades e não os seus sinónimos. É isto que a semelhança distribucional mede de facto: não o que um token significa, mas aquilo de que o corpus falava quando o usou. Dois tokens pontuam alto quando são discutidos na mesma companhia, e ser discutido em conjunto é uma relação muito mais ampla do que significar o mesmo.

Aqui não há mapa nenhum, e isso não é uma omissão 🖖

Cada vetor tem uma dimensão por cada outro token ao lado do qual pode aparecer — 2742 ao todo — e nada nesta página reduz isso a duas. O cosseno não precisa disso: o ângulo entre duas direcções está definido em qualquer número de dimensões, e a grelha acima mostra directamente todos os pares de ângulos. Os diagramas de dispersão planos que viu noutros sítios são uma projecção, escolhida por legibilidade e não por exactidão, e dois tokens que aí parecem vizinhos podem estar longe no espaço onde os números realmente vivem.

Problema resolvido na íntegra

  1. Terra e Sol a 0,299 em 13 encontros 6 passos

    O painel pontua ␣Earth em relação a ␣Sun em 0,299. Earth ocorre 230 vezes no corpus e Sun 150, ao longo de 385 078 tokens que abrem 2 770 646 posições de contexto entre si, e os dois encontram-se a 4 tokens ou menos um do outro 13 vezes. Calcule quanto desse 0,299 valem esses 13 encontros.

    1. Uma coordenada por palavra de contexto, e os vetores são escalados para comprimento 1 antes de qualquer comparação. Esse escalonamento é o que faz da similaridade por cosseno um simples produto escalar: 0,299 é uma soma de produtos, um termo por cada palavra de contexto que os dois tokens têm em comum.

    2. Uma coordenada é uma razão de surpresa, não uma contagem — a frequência com que o par efetivamente surge junto em comparação com a frequência com que um corpus baralhado os colocaria juntos. A surpresa negativa é truncada a 0, pelo que o vetor regista aquilo por que um token é atraído e não tem forma de registar o que evita.

    3. Primeiro, o acaso. Earth ocupa 230 das 385 078 posições e Sun 150, pelo que, ao longo de todas as 2 770 646 posições, seria de esperar o par 0,6446 vezes — menos de 1 ocorrência em todo o corpus.

    4. Ocorrem 13 vezes, 20,17 vezes o previsto pelo acaso, e a coordenada é o logaritmo dessa razão: 3,004. Ambos os vetores recebem o mesmo valor, porque a contagem e as duas frequências leem-se da mesma forma em qualquer um dos sentidos.

    5. Agora, a escala. O vetor de Earth tem 419 coordenadas positivas e um comprimento de 30,381; o de Sun tem 302 e um comprimento de 29,144. Dividindo 3,004 por cada um deles, as coordenadas unitárias são 0,0989 e 0,1031.

    6. O seu produto, 0,0102, é a contribuição total desses 13 encontros. Earth e Sun partilham 105 palavras de contexto no total; somando todos os 105 produtos obtém-se 0,2992, que a ferramenta arredonda para 0,299 — pelo que a evidência direta fornece 3,4% da pontuação.

    Resposta

    A ferramenta apresenta 0,299, e as vezes em que estas duas palavras efetivamente se encontram correspondem a 0,0102 desse valor. O resto é companhia: 105 palavras de contexto partilhadas entre os 2 742 tokens que têm sequer um vetor. Daqui decorrem duas coisas. Como o truncamento remove todas as coordenadas negativas, cada um dos 105 produtos é positivo, pelo que a escala varia de 0 a 1 em vez de -1 a 1 — um par sem nada em comum obtém a pontuação 0, e não o oposto de 1. Lido como um ângulo, 0,299 corresponde a 72,6°, o que coloca Earth e Sun a 17,4° de não partilharem nada. E a classificação acima da pontuação é mais fina do que a evidência subjacente: ␣planet lidera a lista de vizinhos de Earth com 0,307, superando Sun por 0,008, enquanto a coordenada única entre Earth e Sun vale 0,0102 por si só. Basta uma palavra de contexto para alterar qual o token considerado mais próximo.

Percurso de aprendizagem

Como um LLM escolhe a palavra seguinte

Conduz a Temperatura e amostragem

Referências (2)

Problemas de exemplo

  • Mesmo tema - ␣Earth e ␣Sun pontuam 0,299. O vizinho mais próximo de Earth é ␣planet com 0,307 — os tokens de astronomia ficam juntos porque o corpus os trata juntos.
  • Quase sinónimos - ␣speed e ␣velocity pontuam 0,282, e ␣speed é o vizinho mais próximo de ␣velocity entre os 2742 tokens. Palavras usadas indiferentemente mantêm companhia indiferente.
  • Temas diferentes - ␣Earth e ␣velocity pontuam 0,122 — menos de metade do valor Earth–Sun. Temas diferentes, vizinhos diferentes.
  • Duas palavras frequentes - ␣the e ␣is pontuam 0,505, o par mais alto aqui e superior a ␣Earth e ␣Sun com 0,299. Nenhum partilha significado com o outro; ambos simplesmente aparecem ao lado de tudo.
  • Estrela e luz - ␣star e ␣light pontuam 0,262, e os vizinhos de star são ␣yellow, ␣white e ␣red — o corpus fala das estrelas pela cor.