o problema
Em 2013 a NLP de produção tratava palavra como índice em vocabulário: átomo sem interior, sem noção de que “cachorro” e “gato” têm algo em comum. Isso não era burrice, era engenharia. N-gram é simples, robusto e treina em trilhões de palavras, e modelo simples com muito dado costumava ganhar de modelo complexo com pouco. O problema é que em várias tarefas o dado acaba. Reconhecimento de fala depende de transcrição de qualidade, que existe na casa dos milhões de palavras. Tradução automática, para a maioria dos idiomas, tem alguns bilhões e ponto final. Onde não dá para escalar o dado, sobra escalar o método.
O método melhor já existia: representações distribuídas aprendidas por rede neural, que batiam N-gram. Só que ninguém tinha conseguido treinar nenhuma das arquiteturas propostas em mais que algumas centenas de milhões de palavras, com vetores de 50 a 100 dimensões. O modelo neural de linguagem feedforward gastava a maior parte do compute na camada escondida não-linear entre a projeção e a saída — e essa camada é justamente a parte que não interessa a quem só quer os vetores. Estava se pagando o preço de um modelo de linguagem inteiro para levar embora o subproduto.
a ideia
Se o objetivo é o vetor e não a previsão, corte tudo que serve só à previsão. Os autores tiram a camada não-linear e ficam com um classificador log-linear sobre a camada de projeção. O modelo resultante prevê pior — e treina em ordens de grandeza mais dado, o que compensa com folga.
O que sustenta a aposta é uma observação anterior: a similaridade entre esses vetores não é escalar, é direcional. Existe uma direção que significa plural, outra que significa capital-de-país, outra que significa feminino. Daí a aritmética: vector(“biggest”) − vector(“big”) + vector(“small”) cai perto de “smallest”. O paper trata isso como métrica, não como curiosidade, e monta um teste com 8.869 perguntas semânticas e 10.675 sintáticas onde a resposta só conta se for o vizinho mais próximo exato.
como funciona
São duas arquiteturas. No CBOW, quatro palavras antes e quatro depois entram, seus vetores são somados na mesma posição de projeção — a ordem se perde, daí “bag of words” — e o modelo classifica qual é a palavra do meio. Custo por exemplo: N×D + D×log2(V). No skip-gram, o caminho inverte: a palavra atual entra e o modelo prevê as vizinhas. Com janela máxima C, sorteia-se R entre 1 e C por palavra e fazem-se 2R classificações; palavras distantes são amostradas menos, porque importam menos. Custo: C×(D + D×log2(V)). Nos experimentos, C = 10.
O log2(V) vem da hierarchical softmax com árvore de Huffman sobre o vocabulário: palavra frequente ganha código binário curto, e com vocabulário de um milhão isso dobra a velocidade de avaliação frente a uma árvore balanceada. Numa rede com camada escondida esse ganho seria marginal; sem ela, a normalização da saída vira o custo dominante e o detalhe passa a valer.
O treino é SGD com backpropagation, learning rate inicial de 0,025 caindo linearmente até zero. O corpus é o Google News, cerca de 6 bilhões de tokens, vocabulário cortado no milhão de palavras mais frequentes. No DistBelief, com 50 a 100 réplicas e Adagrad, o skip-gram de 1.000 dimensões sobre os 6 bilhões chega a 65,6% de acerto total em 2,5 dias × 125 cores; o NNLM de 100 dimensões chega a 50,8% em 14 × 180.
o que isso custou
O modelo não sabe nada sobre a forma da palavra. Os próprios autores dizem que 100% é inatingível: sem morfologia, boa parte das perguntas sintáticas depende de o vetor ter memorizado cada flexão como item separado. Sinônimo conta como erro, e entidades de mais de um token — “New York” — ficaram de fora do teste.
Cada arquitetura falha onde a outra vence, e não há uma que domine: skip-gram para semântica, CBOW para sintaxe e para velocidade (um dia contra três, numa CPU). E os vetores não substituem um modelo de linguagem: no Sentence Completion da Microsoft, o skip-gram sozinho fica em 48,0%, abaixo da LSA. Só a combinação com RNNLMs chega a 58,9%. O que se ganhou foi um bom espaço de representação, não um bom preditor.
onde isso aparece hoje
A limitação de morfologia foi endereçada de frente por Neural Machine Translation of Rare Words with Subword Units, que quebra a palavra em pedaços em vez de tratá-la como átomo — hoje todo tokenizer de LLM é descendente dessa linha. A camada de embedding que abre qualquer transformer é a mesma ideia, agora treinada junto com o resto em vez de antes. E a noção de que texto vira ponto num espaço onde proximidade significa sentido é o pressuposto de Sentence-BERT, de Dense Passage Retrieval e de toda a infraestrutura de busca vetorial que veio depois, como o HNSW.