Descubra o que são tokens em redes neurais, por que o ChatGPT usa tokens em vez de palavras e como isso afeta limites de contexto, diálogos longos e análise de texto. Aprenda como a tokenização impacta o processamento de linguagem natural e a geração de respostas.
Tokens em redes neurais são pequenos fragmentos de texto em que um modelo de linguagem, como o ChatGPT, divide uma solicitação antes de processá-la. Para o usuário, uma frase parece uma sequência normal de palavras, mas para o ChatGPT, ela é uma cadeia de tokens individuais convertidos em números.
Por isso, as limitações dos modelos de linguagem geralmente são indicadas em tokens, não em palavras ou caracteres. A quantidade de tokens determina quanto texto o modelo pode processar de uma vez, qual parte de um diálogo longo ele consegue considerar e o tamanho máximo da resposta que pode gerar.
Um token é a unidade de texto com a qual o modelo de linguagem trabalha. É mais fácil imaginá-lo como um pequeno pedaço de texto ao qual o sistema atribui um identificador numérico específico.
Nem sempre um token corresponde a uma palavra inteira. Dependendo do tokenizador utilizado, um token pode ser uma palavra curta e comum, parte de uma palavra maior, uma sequência de letras, números ou um sinal de pontuação.
Por exemplo, a frase simples:
"O gato está na mesa."
Para uma pessoa, são quatro palavras e um ponto final. A rede neural pode dividir de outra forma: algumas palavras permanecem inteiras, outras são segmentadas em partes. O resultado depende do dicionário e do algoritmo de tokenização do modelo.
Cada fragmento recebe um número. A rede neural não trabalha mais com a string "gato" ou "mesa", mas sim com suas representações numéricas.
Parece mais simples dar um número a cada palavra, mas esse método tem um problema: o número de palavras possíveis é praticamente ilimitado.
Uma palavra pode ter muitas formas. Por exemplo: trabalho → trabalhos → trabalhando. Se cada forma fosse tratada como um elemento único no dicionário, ele cresceria rapidamente. Além disso, temos nomes próprios, empresas, novos termos, erros de digitação, números, links e código.
Tokens permitem dividir palavras raras ou longas em partes mais familiares ao modelo. Assim, a rede neural pode processar sequências de caracteres que nunca viu como uma palavra completa em seu dicionário.
Por isso, "uma palavra = um token" está errado. Uma palavra comum pode ser um token só; uma palavra rara ou complexa, vários.
O mesmo vale para pontuação e números. Um número, uma data ou um endereço de site podem ser vários tokens. Para o modelo, tudo isso são elementos de uma única sequência, e não categorias separadas como "palavra", "vírgula" ou "número".
Por isso, dois textos com a mesma quantidade de palavras podem diferir bastante em número de tokens. O tamanho real para a rede depende do resultado da tokenização.
Quando o usuário envia uma mensagem ao ChatGPT, o texto não é transmitido no formato original. É processado primeiro por um tokenizador, que o divide em tokens.
Resumidamente, o processo é assim:
Por exemplo, ao perguntar: "Como funciona uma rede neural?", para o usuário são três palavras e um ponto de interrogação. O tokenizador pode dividir isso em vários fragmentos, cujas fronteiras nem sempre coincidem com as das palavras.
Cada token recebe um identificador do dicionário do modelo. Os números em si não têm significado para humanos - servem apenas para identificar elementos do dicionário.
É essa sequência de IDs numéricos que a rede processa a seguir.
A rede neural realiza operações matemáticas e não entende letras e palavras como humanos. Uma frase só adquire significado para o sistema quando seus elementos são convertidos em números.
Seria possível dar um número para cada palavra, mas isso não escala bem, já que a linguagem muda constantemente: surgem nomes, gírias, termos técnicos, etc. Além disso, uma palavra pode assumir várias formas.
A tokenização resolve isso ao usar um dicionário limitado de fragmentos comuns. Se a palavra existe no dicionário, vira um token; se não, o tokenizador a quebra em partes menores já conhecidas pelo modelo.
Assim, a rede pode trabalhar não só com frases, mas com nomes, números, links, código e novas palavras.
O dicionário de tokens é formado previamente na criação do modelo. Sequências comuns de caracteres são armazenadas como elementos grandes, pois isso reduz a sequência total.
Combinações raras são divididas em mais tokens. Por isso, palavras populares às vezes são codificadas em um só token, enquanto termos técnicos exigem vários.
O modo como o texto é segmentado depende do tokenizador, do dicionário e do idioma. Assim, uma mesma frase pode render diferentes quantidades de tokens em modelos diferentes.
Para detalhes sobre tokenizadores, formação de dicionário e conversão do texto em IDs, confira o artigo Tokenização de texto: como redes neurais transformam linguagem em números.
Usar palavras como unidades básicas não é prático. A língua é muito diversa: há milhões de formas, nomes, termos técnicos, abreviações e expressões novas. Se cada uma fosse um elemento do dicionário, ele ficaria imenso, e palavras desconhecidas exigiriam tratamento especial.
Tokens oferecem mais flexibilidade. Palavras comuns ou fragmentos frequentes podem ser armazenados inteiros; sequências raras, compostas de vários elementos menores. Assim, um só sistema processa texto, código, números, links e idiomas diferentes.
Isso também limita o tamanho do dicionário. Em vez de um conjunto infinito de palavras, o modelo usa um número fixo de tokens, cujas combinações representam praticamente qualquer texto de entrada.
Por isso, o ChatGPT conta tokens, não palavras. O número de palavras faz sentido para humanos, mas o que importa para o modelo é o comprimento da sequência efetivamente processada.
Após receber a solicitação, o modelo recebe uma sequência de tokens e a utiliza como contexto para prever a continuação.
O processo pode ser simplificado assim:
Por exemplo, para a frase "Capital da França é", o modelo calcula as probabilidades dos próximos tokens com base no contexto. Alguns têm baixa probabilidade, enquanto o fragmento para "Paris" tem uma das mais altas.
Após escolher o próximo token, ele é adicionado à sequência. O modelo repete o cálculo, agora considerando também o novo token. O ciclo se repete várias vezes, formando a resposta token por token com base no contexto existente.
O "próximo token" nem sempre é uma palavra completa - pode ser parte de uma palavra, pontuação ou outro fragmento. O usuário vê frases completas após a geração sequencial.
O ID numérico do token ainda não é o formato mais adequado para cálculos. Por isso, cada identificador é convertido em um conjunto de números - uma representação vetorial (embedding).
Essa representação permite à rede neural trabalhar com tokens em um espaço matemático multidimensional e considerar as relações entre eles.
Os vetores passam por camadas do modelo. A rede analisa não o token isolado, mas sua posição e relação com outros tokens no contexto.
O significado de um termo pode depender do que está ao lado ou apareceu antes na frase. Assim, a mesma sequência pode ser interpretada de formas diferentes dependendo do ambiente.
Ao final, o modelo constrói uma representação interna do contexto e calcula as probabilidades do próximo token, repetindo o processo até terminar a resposta ou atingir o limite de geração.
O token não tem tamanho fixo. Pode ser um caractere, várias letras, uma palavra inteira ou uma sequência mais longa. Por isso, não existe uma regra universal como "1 token = 4 caracteres".
Essas estimativas servem só para cálculos aproximados. Em inglês, um token pode corresponder a alguns caracteres, mas o valor depende do conteúdo e do tokenizador.
Uma palavra curta e comum pode ser um token só. Um termo técnico raro do mesmo tamanho pode ser dividido em vários. Números, símbolos e combinações incomuns também aumentam a quantidade de tokens.
Assim, frases do mesmo comprimento em caracteres podem ocupar espaços diferentes no contexto da rede.
O número de palavras não pode ser convertido exatamente em tokens por um coeficiente fixo. Às vezes, uma palavra corresponde a um token; outras, a dois, três ou mais.
Isso é evidente em palavras longas e raras: o tokenizador pode não ter a palavra toda em seu dicionário e dividi-la em fragmentos conhecidos.
Por exemplo, um termo técnico pode parecer uma unidade para o usuário:
"microarquitetura"
Mas no modelo, pode ser vários tokens. Na contagem de palavras, ainda é uma só, mas para o limite de contexto, conta como vários elementos.
O oposto também ocorre: uma combinação frequente pode ser um único token e ocupar menos espaço do que seu tamanho sugere.
Por isso, estimativas como "1000 tokens ≈ tantas palavras" servem apenas para cálculos grosseiros. Para contagem precisa, é preciso passar o texto pelo mesmo tokenizador do modelo usado.
O número final de tokens depende principalmente do texto e do dicionário do tokenizador.
A diferença não é porque a rede "entende menos" um idioma, mas devido à tokenização.
O dicionário é formado a partir de grandes volumes de texto. Se certas sequências ocorrem com frequência, o tokenizador as armazena como tokens grandes. Combinações raras são divididas em partes menores.
Assim, traduzir uma frase do inglês para o russo pode alterar o número de tokens, mesmo com significado e número de palavras semelhantes. Outro modelo, com outro tokenizador, pode gerar proporções diferentes.
Por isso, avaliar o tamanho de um documento apenas por páginas, palavras ou caracteres não é suficiente. O que importa para a rede é a quantidade de tokens após a tokenização.
Os tokens medem não só o comprimento de uma mensagem individual. O modelo tem uma janela de contexto - a quantidade de informação que pode considerar simultaneamente ao processar a solicitação e gerar a resposta.
O contexto pode incluir:
Tudo isso ocupa tokens. Assim, até uma nova solicitação curta pode ser processada junto com um histórico longo de conversa, que já usa parte do contexto disponível.
Pense na janela de contexto como a área de trabalho da rede neural. Enquanto a informação necessária estiver dentro dela, o modelo pode considerá-la na geração do próximo token.
Cada tipo de modelo tem um limite de contexto. Ele define quantos tokens o sistema pode processar em uma operação ou diálogo, considerando arquitetura e configurações do serviço.
Esse limite não pode ser traduzido diretamente em páginas ou palavras. Um documento pode usar tokens de forma econômica; outro, de tamanho semelhante, pode esgotá-los rapidamente por conta do idioma, código, números ou formatação.
O texto de entrada e a resposta podem compartilhar o limite, ou ter restrições separadas conforme o modelo e a interface.
Se parte da janela de contexto está ocupada por um documento grande, histórico de conversa e instruções, resta menos espaço para novos conteúdos. O tamanho máximo teórico não garante que o usuário poderá enviar uma solicitação daquele volume e receber uma resposta do mesmo tamanho.
Com o crescimento da conversa, a quantidade de informação aumenta. Se todo o diálogo não cabe mais no contexto ativo, o sistema precisa gerenciar o histórico para continuar a operar dentro do limite.
O mecanismo varia conforme o serviço e o modelo. Algumas mensagens antigas podem sair do contexto; certas informações podem ser resumidas ou transmitidas de forma compacta.
Por isso, em conversas longas, a rede pode considerar menos detalhes discutidos anteriormente. Para o usuário, o chat parece um diálogo contínuo, mas o modelo não processa todas as mensagens desde o início a cada resposta.
Essa é uma das razões pelas quais os tokens estão ligados à capacidade de uma rede neural manter o contexto em diálogos extensos.
Para saber mais sobre a mecânica de diálogos longos, veja o artigo Por que redes neurais esquecem diálogos longos: contexto, memória e Attention.
A limitação do contexto se destaca ao trabalhar com grandes volumes de informação.
Tokens são mais do que uma unidade técnica de contagem. Eles definem o volume real de informação que o modelo pode processar simultaneamente.
Não existe uma quantidade fixa de caracteres por token. Um token pode corresponder a um caractere, várias letras, uma palavra inteira ou outra sequência. Para estimativas, usa-se um valor médio, mas para textos específicos pode variar bastante. Só é possível saber o número exato usando o tokenizador do modelo escolhido.
A relação entre palavras e tokens não é constante. Palavras curtas e comuns podem ocupar um token; palavras longas ou raras, vários. Por isso, um texto de 1000 palavras não terá necessariamente a mesma quantidade de tokens em diferentes idiomas ou vocabulários. Para grandes solicitações, é melhor considerar diretamente o número de tokens.
Sim, a pontuação participa da tokenização, mas nem sempre cada sinal é um token separado. Dependendo do tokenizador, ponto, vírgula, parêntese ou outro símbolo pode ser um elemento próprio ou estar junto com outros caracteres. O mesmo vale para espaços, quebras de linha e símbolos matemáticos.
A quantidade de tokens depende do dicionário do tokenizador e das sequências de caracteres mais otimizadas. Se palavras e partes do inglês aparecem mais nos dados usados para criar o dicionário, podem ser codificadas em tokens maiores. Palavras russas podem exigir mais divisões. Mas isso não é regra geral: cada tokenizador e modelo tem suas particularidades.
Se a informação excede a janela de contexto, o modelo não pode processar toda a sequência de uma vez. Dependendo do serviço, parte do contexto antigo pode ser ignorada, processada de outra forma, ou o sistema pode limitar o tamanho da entrada ou resposta. Isso é especialmente importante em conversas longas, arquivos grandes e análise de código extenso.
Tokens em redes neurais são os elementos fundamentais pelos quais o modelo recebe e gera texto. Eles não correspondem exatamente a palavras ou caracteres: uma palavra pode ser um token ou ser dividida em vários.
O ChatGPT conta tokens porque isso permite representar a língua humana - vasta e em constante mudança - usando um dicionário limitado. Cada fragmento recebe um identificador numérico, que depois é convertido em uma forma adequada para os cálculos internos da rede.
A quantidade de tokens é também relevante na prática, pois define quanto espaço um pedido ocupa, quanta história pode entrar na janela de contexto e quanta informação o modelo pode considerar ao mesmo tempo. Por isso, ao lidar com textos longos, código ou diálogos extensos, o que importa não é o número de páginas ou palavras, mas o volume real do texto após a tokenização.