- Documentos da API
- CLI
- Guias de integração
- Blog
- Como as máquinas aprendem a entender as palavras: um guia para incorporações ao NLP
- Aprendizado baseado em solicitação com Transformers
- Efficient Transformers II: extração de conhecimento e ajustes finos
- Transformers eficientes I: mecanismos de atenção
- Modelagem de intenção hierárquica profunda não supervisionada: obtenção de valor sem dados de treinamento
- Corrigindo viés de anotação com Communications Mining
- Aprendizado ativo: melhores modelos de ML em menos tempo
- Está tudo nos números - avaliando o desempenho do modelo com métricas
- Por que a validação de modelos é importante
- Comparação do Communications Mining e do Google AutoML para inteligência de dados conversacional
Transformers eficientes I: mecanismos de atenção
Os negócios funcionam com comunicações. Os clientes entram em contato quando precisam de algo. Os colegas se conectam para realizar o trabalho. Na Communications Mining, nossa missão é mudar fundamentalmente a economia do trabalho de serviço na empresa - para desbloquear o valor de cada interação e tornar o serviço eficiente e escalável. Fazemos isso democratizando o acesso ao NLP e NLU de última geração.
Especificamente, os modelos do Communications Mining usam arquiteturas de aprendizado profundo chamadas Transformers. Os Transformers facilitam grandes melhorias no desempenho do NLU. No entanto, elas também exigem um uso intensivo de computação — tanto no treinamento dos modelos para aprender novos conceitos quanto no uso deles para fazer previsões. Esta série em duas partes analisará várias técnicas para aumentar a velocidade e reduzir o custo de computação do uso dessas grandes arquiteturas de Transformer.
Este post vai:
- Apresentar um breve histórico da incorporação de modelos ao NLP.
- Explique por que o mecanismo de auto-atenção do Transformer tem uma alta carga de trabalho computacional.
- Revise as modificações na arquitetura tradicional do Transformer que são mais computacionalmente eficientes para treinar e executar sem comprometer significativamente o desempenho.
O próximo post, abordará técnicas computacionais e de aproximação adicionais que geram maiores ganhos de eficiência. O próximo post vai:
- Explore técnicas de depuração, em que modelos menores são treinados para aproximar o desempenho de modelos maiores.
- Explique técnicas eficientes de ajuste fino, onde as atualizações de parâmetros são restritas.
- Forneça nossas recomendações para quando usar cada um desses métodos.
Ao longo da última geração, os métodos de NLP melhoraram significativamente na execução de uma ampla variedade de tarefas. Isso pode ser atribuído em grande parte a uma mudança de abordagens baseadas em engenharia de recursos guiadas manualmente para métodos orientados por aprendizado de máquina. As maiores melhorias no desempenho foram devido a progressos na aprendizagem de representação semântica pré-treinada não supervisionada. Isso envolve treinar um modelo que mapeia sequências de linguagem natural (por exemplo, palavras, frases) a vetores (sequências de números) que representam seu significado semântico. Esses vetores podem ser usados para executar a tarefa de interesse, por exemplo, reconhecimento de intenção, classificação de sentimento, reconhecimento de campo geral nomeado, etc.
Incorporações do Word
A mudança de paradigma começou nos anos 2010 com métodos de incorporação de palavras, como Word2vec e GloVe. Essas técnicas usam grandes conjuntos de dados de linguagem natural para aprender incorporações (outra palavra para vetores) de palavras de maneira não supervisionada. As incorporações codificam informações semânticas com base nos contextos em que as palavras ocorrem com frequência. Por exemplo, a palavra “computador” pode frequentemente ocorrer ao lado de palavras como “teclado”, “software” e “internet”; Essas palavras próximas comuns incorporam as informações que a incorporação de “computador” deve codificar.
As incorporações de palavras tradicionais têm um ponto fraco - são estáticas, ou seja, a incorporação de uma determinada palavra é sempre a mesma. Por exemplo, considere a palavra "banco" - que pode se referir à margem de um fluxo ou a uma instituição financeira; sua incorporação teria que codificar ambos os significados.
Incorporações contextuais
Para lidar com essa vulnerabilidade, foram desenvolvidos métodos contextuais de incorporação. Eles têm uma incorporação diferente para cada palavra, dependendo da sequência (por exemplo, frase, documento) no qual ocorre. Essa linha de trabalho foi inovadora; agora, é extremamente raro encontrar métodos de última geração que não dependam de incorporações contextuais.
Uma das primeiras técnicas populares de incorporação contextual foi o ELMo, que envolve o pré-treinamento de um modelo de rede neural recorrente (RNN) em um grande corpus de linguagem natural usando o objetivo de previsão da próxima palavra. As representações internas desse modelo são então usadas como entradas para modelos (normalmente pequenos) para executar tarefas supervisionadas. Na época, essa abordagem melhorou significativamente em relação ao estado da técnica anterior em várias tarefas.
Os RSNs processam cada palavra em uma sequência uma após a outra, portanto, podem ser lentos ao lidar com documentos longos. Como resultado, modelos como BERT e RoBERTa, que substituem o componente recorrente do ELMo pelo Transformer, mais amigável para a computação paralela, têm se tornado as abordagens mais procuradas. Esses modelos geralmente são pré-treinados com um objetivo de modelagem de idioma mascarado - um subconjunto de palavras em uma sequência é removido, e o modelo é encarregado de prever quais são as palavras que estão faltando.
No entanto, os modelos de linguagem modernos baseados no Transformer são geralmente muito grandes - eles podem conter bilhões de parâmetros e exigem muito computacionalmente para serem executados. O fluxo de trabalho típico é:
- Pré-treine o modelo de idioma em um conjunto de dados genérico não anotado.
- Pré-treine ainda mais o modelo de idioma em um conjunto de dados não anotados específico do domínio.
- Ajustar o modelo de idioma, usando dados anotados, para executar a tarefa supervisionada de interesse.
Embora a primeira dessas etapas geralmente seja um custo único, as duas últimas não são. E enquanto o poder computacional está ficando mais barato, as arquiteturas dos Transformers estão ficando maiores. Isso significa que o custo do desempenho de última geração não está necessariamente diminuindo.
Portanto, este post apresentará uma série de técnicas que reduzem a carga de trabalho computacional e, ao mesmo tempo, minimizam o impacto no desempenho.
A arquitetura do Transformer começa com uma camada de incorporação que pode ser aprendida. Cada camada subsequente constrói suas representações internas usando um mecanismo de 'auto-atenção', ou seja, a representação para cada palavra checa todas as outras palavras na sequência (veja a Figura 1 para um exemplo). Cada camada de auto-atenção inclui várias "cabeças" (cada cabeçalho faz sua própria auto-atenção).
Eles são concatenados nas matrizes N|D, Q, K e V , respectivamente. A matriz de atenção é calculada como:
A saída da camada de auto-atenção é então calculada como:
A saída final para cada camada é calculada concatenando as saídas de autoatenção para cada cabeçalho, e alimentando isso através de uma pequena rede feedforward.
Embora (ao contrário dos RSNs) a computação possa ser feita em paralelo, a Figura 1 mostra que haverá N2 operações de autoatenção a serem executadas para uma sequência com N palavras. Ou seja, a complexidade computacional é dimensionada de forma quadrada com o comprimento da frase. Ao considerar que os Transformers modernos usam dezenas de camadas, cada uma com dezenas de milhares de dimensões, há muitas operações a serem realizadas, mesmo para uma única sequência.
Logicamente, uma linha de pesquisa visa reduzir essa complexidade do N2 com mecanismos de autoatenção mais simples; esta é a maior área de pesquisa sobre arquiteturas de Transformer eficientes. Algumas abordagens populares são revisadas abaixo; veja este documento de pesquisa para uma cobertura mais abrangente.
Prestando atenção bloco por bloco
Uma maneira de reduzir o número de operações é restringindo quantas palavras na sequência o mecanismo de autoatenção examina. O BlockBERT faz isso segmentando a sequência em partes. Em um determinado cabeçalho de atenção, o mecanismo de atenção dentro de um bloco olha apenas para as palavras dentro de um dos blocos (consulte a Figura 2 para obter um exemplo). Cada cabeçalho de atenção em cada camada integra os fragmentos que o mecanismo de atenção examina. Isso significa que após dezenas de camadas, a incorporação de cada palavra provavelmente assistiu a toda a sequência. Dependendo do tamanho do modelo, quando comparado com o RoBERTa, o BlockBERT é 12% – 25% mais rápido para treinar, requer 19% – 36% menos memória e funciona quase tão bem em tarefas de resposta a perguntas (as pontuações F1 são ~0,8 pontos inferiores no SQuAD 2.0 ).
Combinar vários padrões de atenção
Em linhas semelhantes, o Longformer também restringe quantas palavras o mecanismo de auto-atenção analisa. Ela faz isso combinando vários padrões de atenção simples (consulte a Figura 3 para obter um exemplo).
- Janela deslizante
- Preste atenção apenas nas k palavras próximas.
- Janela deslizante expandida
- Preste atenção em cada última palavra, até um limite predefinido.
- Atenção global
- Em algumas posições pré-selecionadas, preste atenção em toda a sequência.
- Em todas as posições, preste atenção àquelas posições pré-selecionadas.
Com essa combinação de padrões de atenção, após várias camadas, a incorporação de cada palavra provavelmente assistiu a toda a sequência. Particularmente em sequências longas, o Longformer é muito mais rápido e usa menos memória do que o RoBERTa. Surpreendentemente, o Longformer realmente supera o RoBERTa em uma variedade de tarefas: resposta a perguntas, resolução de correferência e classificação de sentimentos.
BigBird é outra abordagem popular e é muito semelhante ao Longformer, exceto que, em vez da janela deslizante expandida, ele usa um padrão de atenção aleatório (ou seja, cada representação atende a um número fixo de palavras aleatórias na sequência).
Como usar uma aproximação de baixa classificação
Um tipo diferente de abordagem para as apresentadas até agora é o Linformer, que é baseado no resultado teórico de que a operação de auto-atenção é de baixa classificação. O Linformer projeta linearmente as matrizes de chave e valor (K e V) para baixo, ao longo da dimensão de comprimento, para uma sequência mais curta (comprimento fixo) sobre a qual toda a atenção pode ser aplicada (consulte a Figura 4 para um exemplo). Em comparação com a autoatenção padrão, para sequências curtas, o Linformer é 1,3 a 3 vezes mais rápido e, para sequências longas, é de 3 a 20 vezes mais rápido para executar. Em uma variedade de tarefas de classificação de texto, ele funciona comparativamente (e em certas tarefas, ligeiramente melhor do que) ao RoBERTa.
Esta série em duas partes analisa como tornar o NLP de última geração mais eficiente, explorando modificações nas técnicas de modelagem de linguagem baseadas no Transformer populares, mas exigentes computacionalmente. Este post:
- Apresentado um breve histórico do aprendizado de representação semântica em NLP, incluindo incorporações de palavras tradicionais e modelos de incorporação contextual.
- Explicou o mecanismo de auto-atenção que está no coração da arquitetura do Transformer, e por que sua execução é computacionalmente demorada.
- Mecanismos de atenção alternativos que são mais computacionalmente eficientes, sem abrir mão do desempenho.
O próximo post abordará:
- Uma visão geral dos métodos que treinam modelos pequenos para reproduzir as saídas de modelos grandes.
- Como ajustar modelos de idioma de maneiras eficientes em parâmetros.
- Nossas recomendações para cenários nos quais usar as diferentes abordagens eficientes do Transformer.
Se você quiser experimentar o Communications Mining em sua empresa, inscreva-se para obter uma avaliação ou assistir a uma demonstração.