Transformers e mecanismo de atenção
A atenção por produto escalar passo a passo em PyTorch: múltiplas cabeças, codificação posicional, custo quadrático e o que a atenção não prova.
Até aqui, toda representação tinha o mesmo defeito: não sabia para qual palavra olhar. O saco de palavras ignora a ordem. Os embeddings estáticos dão um vetor fixo por palavra. As redes recorrentes, que dominaram a área até 2017, leem a frase palavra por palavra mantendo uma memória — mas essa memória se apaga, e o cálculo é sequencial por construção: não é possível processar a palavra 50 antes de ter processado a palavra 49.
Considere a frase « Le rapport que la commission avait commandé au cabinet parisien il y a deux ans est enfin arrivé » (em português: "O relatório que a comissão havia encomendado ao escritório parisiense há dois anos finalmente chegou"). Para concordar « arrivé », é preciso ligar esse particípio a « rapport », treze palavras atrás, ignorando todos os substantivos intermediários. Uma rede recorrente precisa carregar essa informação por treze etapas sucessivas, e ela se dilui no caminho. Esse é o problema das dependências de longa distância, e o francês, com suas orações relativas encaixadas e suas concordâncias à distância, as produz o tempo todo.
O artigo Attention Is All You Need, publicado por Vaswani e coautores em 2017, resolve os dois problemas de uma só vez com uma ideia de simplicidade desconcertante: em vez de transportar a informação de vizinho em vizinho, deixemos cada palavra olhar diretamente para todas as outras, e aprendamos quanto ela deve olhar para cada uma. A distância desaparece — « arrivé » acessa « rapport » em uma única operação — e, como todas as palavras calculam seu olhar simultaneamente, tudo se paraleliza em uma GPU.