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.

      cos⁡θ=a⋅b∥a∥ ∥b∥=a^⋅b^=∑ca^c b^c\cos\theta=\frac{a\cdot b}{\lVert a\rVert\,\lVert b\rVert}=\hat a\cdot\hat b=\sum_{c}\hat a_c\,\hat b_c
    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.

      ac=max⁡ ⁣(0, ln⁡nAc/P(fA/T) (fc/T))a_c=\max\!\left(0,\ \ln\frac{n_{Ac}/P}{(f_A/T)\,(f_c/T)}\right)
    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.

      E=P⋅fAT⋅fBT=2 770 646⋅230385 078⋅150385 078=0.6446E=P\cdot\frac{f_A}{T}\cdot\frac{f_B}{T}=2\,770\,646\cdot\frac{230}{385\,078}\cdot\frac{150}{385\,078}=0.6446
    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.

      nE=130.6446=20.17⟹aB=bA=ln⁡20.17=3.004\frac{n}{E}=\frac{13}{0.6446}=20.17\quad\Longrightarrow\quad a_B=b_A=\ln 20.17=3.004
    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.

      a^B=3.00430.381=0.0989,b^A=3.00429.144=0.1031\hat a_B=\frac{3.004}{30.381}=0.0989,\qquad \hat b_A=\frac{3.004}{29.144}=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.

      a^Bb^A=0.0102,∑ca^cb^c=0.2992,0.01020.2992=3.4%\hat a_B\hat b_A=0.0102,\quad \sum_{c}\hat a_c\hat b_c=0.2992,\quad \frac{0.0102}{0.2992}=3.4\%

    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.

    θ=arccos⁡0.299=72.6∘(θmax⁡=90∘)\theta=\arccos 0.299=72.6^\circ\qquad(\theta_{\max}=90^\circ)

Percurso de aprendizagem

Como um LLM escolhe a palavra seguinte

Referências (2)