- Documentos da API
- CLI
- Guias de integração
- Integração do Exchange com usuário do serviço do Azure
- Integração do Exchange com Autenticação de Aplicativo do Azure
- Automação em tempo real
- Como buscar dados para o Tableau com o Python
- Integração do Elasticsearch
- Integração do EWS auto-hospedado
- Estrutura de automação da UiPath
- Atividades do UiPath Marketplace
- Atividades oficiais da UiPath
- 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
Guia do desenvolvedor do Communications Mining
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.
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 é:
- Treinar um modelo grande usando dados genéricos anotados.
- 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.
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:
where I(c;y)=1 se y=c outra 0.
Exemplos de funções de objetivo incluem:
- Um objetivo de estilo de máxima probabilidade:
- Isso é equivalente a minimizar a diversidade de KL entre p(c;f) ep(c;g).
- O erro quadrado médio negativo (MSE) entre logitos:
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.
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.
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.
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.