communications-mining
latest
false
Importante :
Este conteúdo foi traduzido com auxílio de tradução automática.
Guia do desenvolvedor do Communications Mining
Last updated 27 de set de 2024

Efficient Transformers II: extração de conhecimento e ajustes finos

Este post de 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 Transformerpopulares, mas computacionalmente exigentes.

  • Explicado por que o mecanismo de auto-atenção do Transformer tem uma alta carga de trabalho computacional.
  • Mecanismos de atenção alternativos apresentados que são mais eficientes de executar sem comprometer significativamente o desempenho.

Este post vai:

  • Explore métodos que treinam modelos pequenos para reproduzir as saídas de modelos grandes.
  • Explicar como ajustar modelos de idiomas de forma eficiente.
  • Forneça nossas recomendações para cenários nos quais usar as diferentes abordagens eficientes do Transformer.

O post anterior incluiu um breve histórico do aprendizado de representação semântica no NLP e uma visão geral de como o mecanismo de autoatenção do Transformer funciona. Sugerimos primeiro ler essas seções para os leitores que podem não estar familiarizados. Este post também compartilha parte da notação introduzida no post anterior.

Separação de conhecimento

A depuração de conhecimento é uma área de pesquisa de Transformers mais eficientes, que treina pequenos modelos (alienados), incentivando-os a reproduzir as saídas de modelos grandes (professores). Essa é uma técnica que inicialmente ganhou notoriedade em tarefas de classificação na visão de computador, mas foi aplicada com sucesso em diversos domínios, incluindo o NLP. O fluxo de trabalho típico é:

  1. Treinar um modelo grande usando dados genéricos anotados.
  2. Treine um modelo pequeno para imitar o modelo grande usando dados não anotados específicos da tarefa (e dados anotados específicos da tarefa, se disponível).

Embora esse processo ainda envolva o treinamento de um modelo grande, esse é um custo único. A tarefa mais frequente de fazer previsões será feita pelo modelo pequeno, que é significativamente mais eficiente de executar. Como resultado, a extração de conhecimento é uma técnica particularmente popular para executar machine learning em ambientes com restrições de hardware, por exemplo, em dispositivos móveis.

Observação: vale a pena considerar que um modelo pequeno pode simplesmente ser treinado (do zero) com os mesmos dados usados para treinar o modelo grande. No entanto, o modelo pequeno pode não ter a capacidade de aprender representações da mesma qualidade que o grande. O modelo pequeno aprende com as probabilidades prevista do modelo grande, que normalmente codificam mais informações do que o rótulo da classe sozinho. Isso permite que o modelo pequeno aprenda a usar representações mais ricas e, em muitos cenários, significa que o modelo pequeno tem melhor poder preditivo do que se treinado do zero.

Considere um documento x e o rótulo de classe y, com o rótulo de classe pertencente a uma das categorias C (ou seja y∈{1,2,…,C}). Denota a probabilidade com a qual um modelo f grande prevê que o documento x terá o rótulo de classe y=c as p(c;f(x)). Essa probabilidade é geralmente calculada usando uma função no formato:



em que f(x) é a saída de uma rede neural (por exemplo, um Transformer), que recebe x como entrada. O modelo grande é treinado usando o seguinte objetivo de máxima probabilidade:


where I(c;y)=1 se y=c outra 0.

O modelo pequeno g pode ser treinado para reproduzir as probabilidades prevista pelo modelo grande f usando um objetivo da forma:


Exemplos de funções de objetivo incluem:

  • Um objetivo de estilo de máxima probabilidade:
    docs image
    • Isso é equivalente a minimizar a diversidade de KL entre p(c;f) ep(c;g).
  • O erro quadrado médio negativo (MSE) entre logitos:
    docs image
Se dados anotados específicos da tarefa estiverem disponíveis ao treinar o modelo pequeno, o objetivo supervisionado e o objetivo de depuração serão combinados usando uma média ponderada:


Depuração específica da tarefa​

O modelo biLSTM-SOFT realiza a depuração específica da tarefa ao tentar reproduzir as previsões de um modelo BERT já ajustado em tarefas de classificação. Para o modelo do iniciante, ele usa um LSTM bidirecional de camada única. Embora esse seja um modelo recorrente, porque tem apenas uma camada, ele ainda é rápido de executar.

O objetivo de depuração é o MSE negativo entre os loguts do além do formador. É mais de 400 vezes mais rápido de executar do que o modelo BERT do qual é extraído, mas executa de 4 a 7 pontos de precisão/F1 a menos (dependendo da tarefa).

Depuração durante o pré-treinamento​

Até agora, este post apresentou a filtragem do conhecimento no contexto do aprendizado supervisionado, pois esse é o ambiente no qual é mais comumente usado. No entanto, o DistilBERT realiza a filtragem do conhecimento tanto nos estágios de pré-treinamento do modelo de idioma quanto nos estágios de ajuste fino.

Como explicado na seção de Contexto do post anterior, o BERT é pré-treinado usando a modelagem de linguagem mascarada; O DistilBERT trata as palavras que faltam como rótulos de classe e usa a função de objetivo de depilação do estilo de máxima verossibilidade. Ele usa a distribuição de probabilidade prevista pelo BERT para as palavras que faltam como alvos suaves para o objetivo de depuração. Os autores também adicionam um objetivo de incorporação de cosseno, que incentiva o modelo pequeno a alinhar as direções de suas incorporações com aquelas produzidas pelo BERT.

O DistilBERT adota a mesma arquitetura básica que o BERT, mas tem metade do número de camadas e é aproximadamente 38% mais rápido de executar. Quando depurado apenas durante o pré-treinamento, ele retém 97% do desempenho do BERT. Os autores também verificaram que realizar uma depuração específica da tarefa durante o ajuste fino (usando um modelo BERT que também havia sido ajustado na mesma tarefa) gerava um ganho adicional no desempenho.

Como explorar a arquitetura do Transformer​

O TinyBERT é uma abordagem semelhante ao DistilBERT no sentido de que realiza a filtragem do conhecimento tanto no estágio de pré-treinamento do modelo de idioma quanto no de ajuste fino. No entanto, o TinyBERT leva conhecimento diretamente das representações intermediárias do BERT (não apenas das saídas finais), ao explorar especificamente funcionalidades da arquitetura do Transformer.

Assim como o DistilBERT, o TinyBERT adota a mesma arquitetura que o BERT, mas com menos camadas. Primeiro, é definido um mapeamento de cada camada do modelo do(a) usuário(a) para uma camada do modelo de mestre, ou seja, cada camada de usuário está associada a uma camada de administrador. Então, dependendo da camada do aprendizado, ela usa uma das três funções de objetivo da depuração:

  • Incorporando camada
    • Minimiza o MSE entre as matrizes de incorporação do filho e do pai.
  • Camadas de atenção
    • Minimiza o MSE entre as matrizes de atenção do filho e do mestre (A na Equação (4) do post anterior) mais o MSE entre as saídas do filho e do pai das camadas de feedforward que seguem a operação de autoatenção.
  • Camada final (previsão)
    • Usa o objetivo de depuração de estilo de máxima verosimilhança para tentar corresponder as probabilidades prevista do filho e do pai. É o mesmo que o DistilBERT.

Em comparação com o modelo BERT do qual é extraído, o TinyBERT é 2x–9x mais rápido para executar (dependendo do número de camadas e tamanhos de estados ocultos). Ele supera consistentemente o DistilBERT em uma ampla gama de tarefas, indicando que os objetivos de depuração em cada camada são úteis em comparação com a camada final isoladamente.

Ajuste fino​

Como discutido na seção Segundo plano do post anterior, a etapa final do treinamento de grandes modelos de linguagem geralmente é ajustá-los à tarefa de interesse. Embora essa etapa possa ser bastante rápida de executar, ela ainda geralmente envolve a atualização de todos os parâmetros do modelo. Isso significa que os requisitos de hardware são os mesmos das etapas de pré-treinamento. Como a etapa de ajuste fino normalmente é executada separadamente para cada tarefa, essa ainda é uma etapa dispendiosa do processo de treinamento. Portanto, outra linha de pesquisa procura reduzir o número de parâmetros a serem atualizados durante o ajuste fino.

Ajuste fino de um subconjunto dos pesos​

Uma maneira de evitar a necessidade de atualizar todos os parâmetros do modelo é simplesmente congelar algumas camadas. Legacy et al. realizar um estudo empérico sobre a efetividade dessa abordagem. Eles concluíram que, com um modelo BERT de 12 camadas, congelar as primeiras 9 camadas e apenas ajustar as 3 finais atinge pelo menos 90% do desempenho do ajuste fino completo na maioria das tarefas. No entanto, congelar todo o modelo de idioma e simplesmente treinar a camada de previsão final tem um desempenho significativamente pior em todas as tarefas.

Atualizando apenas os termos de viés​

A maioria das operações na maioria das arquiteturas de rede neural envolve a multiplicação de uma entrada por uma matriz e, em seguida, a adição de um termo de viés. As maneiras como essas operações são compostas é o que define a arquitetura.

Em Transformers, os termos de viés (por exemplo, os termos b nas Equações (1)–(3) no post anterior) representam menos de 0,1% do total de parâmetros. Portanto , o BitFit propõe atualizá-los apenas durante o ajuste fino e congelar o restante dos parâmetros. Com dados de treinamento anotados limitados, o BitFit tem um desempenho compatíveis com (e às vezes melhor do que) o ajuste fino de todo o modelo. Com grandes conjuntos de dados de treinamento, ele funciona apenas um pouco pior do que o ajuste fino completo.

Inserção de pequenas redes treináveis ​​no Transformer​

Outro conjunto de métodos de ajuste fino eficientes em parâmetros congela todo o modelo de idioma pré-treinado, mas introduz um pequeno conjunto de parâmetros adicionais que são treinados para a tarefa de interesse. Os adaptadores fazem isso inserindo duas redes feedforward de 2 camadas dentro de cada uma das camadas do Transformer. Eles são inseridos diretamente antes e depois da rede feedforward existente, que segue o mecanismo de autoatenção. As duas camadas realizam as seguintes operações:

  • A primeira camada projeta para baixo o estado oculto do Transformer para um vetor de baixa dimensão e aplica uma não linearidade.
  • A segunda camada projeta para cima o vetor de baixa dimensão de volta ao tamanho do estado oculto do Transformer.

A ideia por trás disso é que a inserção de parâmetros que podem ser aprendizados em toda a arquitetura do Transformer (em vez de apenas treinar a camada de previsão final) permite que o modelo ajuste suas representações internas da mesma forma que o ajuste fino, porém de uma forma muito mais eficiente. O ajuste do adaptador é apenas ~0,4% pior do que o ajuste fino completo, com apenas 3,6% de parâmetros treinados.

Recomendações​

Esses dois posts abordaram vários métodos diferentes e eficientes do Transformer. Quando pode ser apropriado usá-las?

  • Se você estiver trabalhando com documentos particularmente longos, recomendamos o uso de um mecanismo de atenção eficiente, como os cobertos no post anterior. Isso reduzirá o tempo de pré-treinamento e de inferência. O desempenho pode até ser melhor do que usar atenção total.
  • Se seu gargalo for a memória (ou seja, mesmo um lote de documentos curtos causa erros de falta de memória), tente usar um modelo extraído (por exemplo, TinyBERT). Com menos camadas e representações dimensionais inferiores, isso reduzirá o impacto de memória do modelo e, ao mesmo tempo, será mais rápido para treinar.
    • No entanto, lembre-se de que os modelos depurados ainda exigem um modelo de tamanho completo pré-treinado para aprender e geralmente funcionam melhor quando depurados durante o pré-treinamento e o ajuste fino.
  • Se você tiver dados anotados limitados no estágio de ajuste fino, usando um método de ajuste fino que congela a maioria/todos os parâmetros do modelo de idioma (por exemplo, Adaptadores) mitiga o risco de sobreajuste e normalmente deve ter um desempenho melhor do que ajustar o modelo inteiro.
  • Se você tiver muitas tarefas downstream supervisionadas, sugerimos usar um método eficiente de ajuste fino. Isso reduzirá o número de parâmetros que precisam ser treinados e armazenados para cada tarefa.
    • Embora os métodos eficientes de ajuste fino possam ser mais rápidos para treinar do que o ajuste fino completo, eles geralmente não melhoram a velocidade de inferência (ou seja, obter previsões de um modelo treinado). Na verdade, alguns deles podem ser um pouco mais lentos para inferência, devido à inserção de camadas adicionais.

Resumo​

Esta série em duas partes analisa como tornar o processamento de linguagem natural (NLP) de última geração amplamente acessível, explorando alternativas eficientes para as populares, mas computacionalmente exigentes, técnicas de modelagem de linguagem baseadas no Transformer.

  • Explicado por que o mecanismo de auto-atenção do Transformer tem uma alta carga de trabalho computacional.
  • Mecanismos de atenção alternativos apresentados que são mais eficientes de executar sem comprometer significativamente o desempenho.

Este post:

  • Discorreram sobre técnicas de depuração do conhecimento, que treinam modelos pequenos e eficientes, encorajando-os a reproduzir as saídas de seus homólogos maiores.
  • Exploraram métodos eficientes para ajustar modelos de idioma, reduzindo o número de parâmetros que são atualizados.
  • Fornecemos 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.

  • Separação de conhecimento
  • Ajuste fino​
  • Recomendações​
  • Resumo​

Esta página foi útil?

Obtenha a ajuda que você precisa
Aprendendo RPA - Cursos de automação
Fórum da comunidade da Uipath
Uipath Logo White
Confiança e segurança
© 2005-2024 UiPath. Todos os direitos reservados.