Visão geral dos modelos de pré-treinamento da PNL: do word2vec, ELMo ao BERT

Diretório

 

Prefácio

word2vec

O modelo

Amostragem negativa

nível de char e contexto

ELMo

BERT

Codificação bidirecional profunda

Aprenda representação de relacionamento de sentenças e pares de sentenças

Interface de tarefas downstream simples e excessiva


Prefácio

Lembre-se de que no campo da compreensão de leitura de máquina há pouco tempo, a Microsoft e Ali superaram os seres humanos no SQuAD com R-Net + e SLQA, respectivamente, e o Baidu superou os seres humanos no MS MARCO com domínio da V-Net e BLEU. Pode-se dizer que essas redes são mais complicadas do que uma e parece que "como projetar uma rede mais específica para o trabalho" se tornou a direção de pesquisa politicamente correta no campo da PNL. Nesse tipo de vento, não importa o word2vec, luva ou texto rápido, ele pode servir apenas como uma cereja no topo do bolo. E quanto à transferência de aprendizado e pré-treinamento? Parece que a PNL nunca foi o protagonista.
Xiao Xi ficou um pouco envergonhado ao escrever este artigo.Depois de um longo período de apresentação e migração, apesar de achar intuitivamente que esse deveria ser o problema central da PNL, ele não produziu resultados experimentais que lhe fossem satisfatórios. No dia anterior à publicação do BERT, senti que a pobreza restringia minha imaginação ╮ ( ̄ ▽  ̄ ””) ╭ (riscada) e senti que meu ponto de vista ainda era muito estreito. Todo mundo tem um entendimento diferente do BERT.Este artigo tentará falar sobre o BERT da perspectiva do word2vec e do ELMo. A seguir, é apresentada uma breve revisão da essência do word2vec e do ELMo. Aqueles que entenderam muito bem podem acessar rapidamente o capítulo BERT.

word2vec

Por falar nisso, todas as frases são clichês que eu gostaria de escrever repetidas vezes. Assim que o word2vec do Google saiu em 2013, todos os campos da PNL floresceram. Parecia que eu tinha vergonha de escrever um artigo sem usar vetores de palavras pré-treinados. O que é o word2vec?

O modelo

Obviamente, é um modelo de linguagem "linear". Como nosso objetivo é aprender vetores de palavras, e os vetores de palavras devem apoiar semanticamente algumas "operações semânticas lineares", como "Imperador-Rainha = Macho-Fêmea" (ignorando Wu Zetian), então um modelo linear é naturalmente suficiente, executando É muito rápido e capaz de concluir a tarefa, muito elegante.

Além disso, uma das essências do word2vec é otimizar o conjunto de métodos de aceleração softmax do modelo de linguagem e substituir os métodos tradicionais softmax hierárquicos e NCE por um método aparentemente "aberto" de amostragem negativa no cérebro. E o que exatamente é "amostragem negativa" nesse nome?

Amostragem negativa

Sabemos que, para os modelos de linguagem de treinamento, a camada softmax é muito difícil de calcular. Afinal, o que você deseja prever é a palavra da posição atual; o número de categorias é equivalente ao tamanho do dicionário; portanto, o número de categorias geralmente é dezenas de milhares a dezenas de milhares. A função é obviamente muito trabalhosa. No entanto, se nosso objetivo não é treinar um modelo de linguagem preciso, mas apenas obter o subproduto dos vetores de palavras do modelo de linguagem, precisamos apenas usar uma subtarefa oculta que seja mais barata de calcular. La. Pense nisso: é particularmente trabalhoso fornecer 10.000 cartões com números e descobrir o máximo deles? Mas se você extrair o valor máximo antecipadamente e misturá-lo com cinco cartas sorteadas aleatoriamente para permitir que você escolha o valor máximo, é mais fácil? Amostragem negativa é essa ideia, ou seja, em vez de deixar diretamente o modelo encontrar a palavra mais provável de todo o vocabulário, ela recebe diretamente a palavra (exemplo positivo) e várias palavras com ruído aleatoriamente amostradas (exemplo exemplos negativos negativos) Desde que o modelo possa encontrar a palavra correta a partir disso, considera-se que a meta foi concluída. Portanto, a função objetivo correspondente a essa ideia é: aqui está um exemplo positivo, um exemplo negativo amostrado aleatoriamente (k amostras) e uma função sigmóide. Em seguida, maximize a probabilidade de exemplos positivos e minimize a probabilidade de exemplos negativos. Essa ideia de amostragem negativa foi aplicada com sucesso no modelo BERT, mas a granularidade mudou de palavras para frases. Não se preocupe, olhe para trás lentamente ~

nível de char e contexto

Embora muito trabalho de 2015 a 2017 também tenha tentado começar com o nível de caracteres, para encontrar outra maneira de se livrar das regras do jogo de vetores de palavras pré-treinado, mas a medição real é apenas um lampejo e foi rapidamente derrotada [8] [9]. No entanto, as pessoas também perceberam que o texto do nível de caractere também contém alguns padrões que são difíceis de descrever no texto no nível da palavra.Portanto, por um lado, a palavra vetor FastText [5], que pode aprender as características do nível do caractere, aparece. Nas tarefas supervisionadas, começamos a apresentar uma representação de texto em nível de char através de CNN, HIghwayNet, RNN e outras redes rasas. No entanto, até agora, os vetores de palavras são livres de contexto. Em outras palavras, a mesma palavra é sempre o mesmo vetor de palavra em diferentes contextos, o que obviamente leva à falta de desambiguação de sentido de palavra (WSD) no modelo de vetor de palavra. Portanto, para tornar o vetor de palavras sensível ao contexto, as pessoas começaram a codificar com base na sequência do vetor de palavras em tarefas posteriores específicas. ** Obviamente, o método de codificação mais comum é usar a rede RNN, além do uso bem-sucedido da CNN profunda para codificar o trabalho (como classificação de texto [6], tradução automática [7], compreensão de leitura de máquina [4] ) Claro! E! Google disse, a CNN é muito vulgar, temos que usar uma rede totalmente conectada! (Riscar) auto-atenção! Portanto, existe um modelo Transformer [11] que é profundamente personalizado para a PNL.A proposta do Transformer está na tarefa de tradução automática, mas também exerce grande poder em outros campos, como o diálogo de recuperação [3]. No entanto, como se verifica que existe basicamente a necessidade de codificação em cada tarefa da PNL, por que não deixar o vetor de palavras ter a capacidade sensível ao contexto no início? Então existe o ELMo [2].

ELMo

Obviamente, o ELMo não é o primeiro modelo que tenta gerar vetores de palavras sensíveis ao contexto, mas é realmente um modelo que fornece uma boa razão para desistir do word2vec (sorriso manual). Afinal, o desempenho de sacrificar a velocidade de inferência é muito melhor. Na maioria dos casos, o valor é ~ ELMo é um bi-lstm empilhado na camada do modelo (estritamente falando, dois lstm empilhados unidirecionais são treinados); portanto, é claro que há uma boa capacidade de codificação. Ao mesmo tempo, sua implementação de código-fonte também suporta o uso da Highway Net ou CNN para introduzir adicionalmente a codificação em nível de char. O treinamento é, naturalmente, também a função de probabilidade máxima do padrão do modelo de linguagem, mas o destaque deste ELMo não é, obviamente, a camada do modelo, mas indiretamente mostra através de experimentos que, na RNN de várias camadas, os recursos aprendidos por diferentes camadas são realmente Como existem diferenças, o ELMo propõe definir um parâmetro treinável para a camada de vetor de palavras original e a camada oculta de cada RNN quando o pré-treinamento for concluído e migrado para a tarefa de PNL a jusante.Estes parâmetros são normalizados pela camada softmax A multiplicação para a camada correspondente e a soma desempenharão o papel de ponderação e, em seguida, o vetor de palavras obtido pela "soma ponderada" será escalado por um parâmetro para melhor adaptação à tarefa a jusante.

ps: De fato, esse último parâmetro ainda é muito importante. Por exemplo, no word2vec, em geral, a variação do vetor de palavras aprendida por cbow e sg é relativamente grande. No momento, a variação corresponde ao vetor de palavras que é adequado para a variação subsequente da camada das tarefas posteriores. , Mais fácil de executar melhor

A expressão matemática é a seguinte,

onde L = 2 é a configuração no documento ELMo, j = 0 representa a camada do vetor de palavras original, j = 1 é a primeira camada oculta de lstm e j = 2 é a segunda camada oculta. É o resultado do parâmetro normalizado pelo softmax (ou seja ). Por meio dessa estratégia de migração, é mais provável que as tarefas que exigem desambiguação com sentido de palavra tenham um grande peso na segunda camada oculta por meio do treinamento, enquanto tarefas que possuem requisitos óbvios para parte da fala e sintaxe podem ter parâmetros para a primeira camada oculta. Aprendeu um valor relativamente grande (conclusão experimental). Em resumo, isso fornece um vetor de palavras que pode ser personalizado por tarefas posteriores e possui mais recursos.Não é de surpreender que o efeito seja muito melhor que o word2vec. Mas tendo dito isso, o objetivo do ELMo é apenas aprender vetores de palavras mais sensíveis ao contexto e mais poderosos , cujo objetivo ainda é fornecer uma base sólida para tarefas posteriores, e não significa matar o rei.. E sabemos que simplesmente executar codificação suficiente e poderosa no texto (ou seja, obter recursos muito precisos e ricos de cada léxico) não é suficiente para cobrir todas as tarefas da PNL. Em tarefas como controle de qualidade, compreensão de leitura de máquina (MRC), inferência de linguagem natural (NLI) e diálogo, existem muitos padrões mais complexos que precisam ser capturados, como o relacionamento entre as frases. Por esse motivo, várias atenções sofisticadas serão adicionadas à rede em tarefas posteriores (consulte SOTA no NLI, MRC, Chatbot). Com a necessidade de capturar mais padrões mágicos, os pesquisadores personalizaram uma variedade de estruturas de rede para cada tarefa a jusante, resultando no mesmo modelo, que é interrompido quando a tarefa é alterada levemente, mesmo no caso da mesma tarefa. Alterações subsequentes em outro conjunto de dados distribuídos resultarão em perda significativa de desempenho, o que obviamente não está alinhado com o comportamento linguístico humano - para saber que a capacidade de generalização humana é muito forte, o que mostra que talvez a trajetória de desenvolvimento de toda a PNL esteja incorreta Sim, especialmente sob a liderança do SQuAD, esgotando vários truques e estruturas sofisticadas para escovar a lista, qual é o significado da PNL? Parece que está longe, mas, felizmente, esse desvio cada vez maior é finalmente interrompido por um modelo, ou seja, Representações de codificadores bidirecionais de transformadores (BERT) [1] divulgadas pelo Google há alguns dias .

BERT

O significado mais importante deste artigo não é qual modelo é usado, nem como treiná-lo, mas propõe uma nova regra de jogo. Antes de iniciar o jogo, ajude Xiao Xi a pedir alguns anúncios pequenos, ok? \ (// ∇ //) \

Como mencionado anteriormente, é realmente muito imprudente personalizar profundamente a estrutura do modelo complexo, com capacidade de generalização extremamente baixa para cada tarefa da PNL, e ela segue na direção errada. Como o ELMo terá uma melhoria tão grande em comparação com o word2vec, isso mostra que o potencial dos modelos de pré-treinamento é muito mais do que fornecer um vetor de palavras preciso para tarefas posteriores , então podemos pré-treinar diretamente um modelo no nível da quilha? Se ele descreveu completamente as características do nível de caractere, nível de palavra, nível de sentença e até o relacionamento entre sentenças, em diferentes tarefas da PNL, é necessário personalizar apenas uma camada de saída muito leve para a tarefa (como uma única camada MLP) Tudo bem, afinal, o esqueleto do modelo já está pronto. E o BERT fez exatamente isso, ou melhor, realmente o fez: como modelo geral no nível da quilha, desafiou facilmente a personalização profunda de 11 tarefas. . . Então, como foi feito?

Codificação bidirecional profunda

Primeiro, ele indica que o modelo pré-treinado anterior não é suficiente para aprender vetores de palavras sensíveis ao contexto! Embora nas tarefas supervisionadas a jusante, o método de codificação já esteja muito cheio, a codificação bidirecional profunda basicamente se tornou o padrão para muitas tarefas complexas a jusante (como MRC, diálogo) . Porém, no modelo pré-treinado, o modelo anterior é baseado apenas no modelo de linguagem tradicional e o modelo de linguagem tradicional é unidirecional (matematicamente definido) , ou seja, e geralmente muito superficial (imagine a pilha LSTM No terceiro andar, o trem não se move e você precisa fazer vários truques), como o ELMo. Além disso, embora o ELMo use RNN bidirecional para codificação, os RNNs nessas duas direções são realmente treinados separadamente, mas uma adição simples é feita no final da camada de perda. Dessa forma, para as palavras em cada direção, as palavras do outro lado dela não podem ser vistas quando são codificadas. Obviamente, a semântica de algumas palavras em uma frase dependerá de certas palavras nos lados esquerdo e direito, e é impossível descrevê-lo claramente codificando de uma direção. ** Por que não fazer a codificação bidirecional verdadeira, como nas tarefas de supervisão a jusante? ** O motivo é claro quando você pensa sobre isso. Afinal, o modelo de idioma tradicional é prever a próxima palavra como objetivo de treinamento. No entanto, se a codificação bidirecional for feita, isso não significa que a palavra a ser prevista foi vista. ( ̄ ▽  ̄ ””) É claro que essa previsão não tem sentido. Portanto, no BERT, propõe-se o uso de uma nova tarefa para treinar o modelo que pode realmente codificar em ambas as direções na tarefa de supervisão.Esta tarefa é chamada Modelo de Linguagem Mascarada (Masked LM).

LM mascarado

Como o nome indica, LM mascarado significa que, em vez de fornecer a palavra que já apareceu e prever a próxima palavra como LM tradicional, cobrimos diretamente uma parte da frase inteira (selecionada aleatoriamente) (torná-la mascarada). É possível fazer a codificação bidirecional com segurança e, em seguida, deixar o modelo prever com segurança quais são essas palavras cobertas. Essa tarefa foi chamada de teste de cloze (provavelmente traduzido como "Teste Gestalt"). Obviamente, isso causa alguns problemas menores. Embora a codificação bidirecional possa ser garantida dessa maneira, as tags cobertas também são codificadas durante a codificação╮ ( ̄ ▽  ̄ "") "e essas tags de máscara não existem nas tarefas posteriores. . . O que devo fazer? Nesse sentido, para ajustar o modelo para ignorar o máximo possível a influência dessas marcas, o autor diz ao modelo "estes são ruídos e ruídos! Não confiáveis! Ignore-os!" Para uma palavra coberta:

  • Há uma probabilidade de 80% de substituí-lo por uma tag "[mask]"

  • Existe uma chance de 10% de substituí-lo por uma palavra amostrada aleatoriamente

  • Há uma probabilidade de 10% de que nenhuma substituição será feita (embora nenhuma substituição seja feita, ainda é necessário prever)

Codificador

Na escolha do codificador, o autor não usou o bi-lstm da rua ruim, mas usou o codificador Transformer que pode ser aprofundado e ter melhor paralelismo. Dessa maneira, as palavras em cada posição lexical podem codificar diretamente cada palavra na sentença, independentemente da direção e distância. Por outro lado, sinto subjetivamente que o Transformer é mais fácil de proteger da marca da máscara do que lstm. Afinal, o processo de auto-atenção pode enfraquecer completamente o peso correspondente da marca da máscara, mas como a porta de entrada no lstm trata a marca da máscara? Então é desconhecido. Espere um minuto, Xiao Xi também disse no artigo anterior, obviamente, usando o codificador Transformer obviamente não perderá as informações de localização? O autor aqui tem uma posição temida de codificação da função sin e cos, como o artigo original do Transformer? E não existe, o autor aqui é muito simples e rude para treinar diretamente uma posição incorporando ╮ ( ̄ ▽  ̄ ””) ╭ Isto é, por exemplo, se eu truncar a sentença para um comprimento de 50, então temos 50 posições, então Existem 50 palavras que representam a posição, da posição 0 à posição 49. . . Em seguida, atribua a cada posição um vetor de palavras inicializado aleatoriamente e treine com elas (quero dizer que esse miado especial também pode funcionar? É muito simples e rude ...). Além disso, na combinação de incorporação de posição e incorporação de palavras, a adição direta é selecionada no BERT. Finalmente, em termos de profundidade, o codificador final da versão completa do BERT é sobreposto com 24 camadas de bloco de atenção com várias cabeças (você precisa saber que o modelo SOTA DAM no diálogo usa apenas 5 camadas ...). . . E cada bloco contém 16 torneiras, 1024 unidades ocultas ╮ ( ̄ ▽  ̄ ””) ╭ slogan aqui: dinheiro é tudo que você precisa (riscado)

Aprenda representação de relacionamento de sentenças e pares de sentenças

Como mencionado anteriormente, em muitas tarefas, a codificação sozinha não é suficiente para concluir a tarefa (isso apenas aprende vários recursos no nível do token), e você precisa capturar alguns padrões no nível da frase para concluir o SLI, o controle de qualidade, o diálogo etc. Representação de sentenças, interação entre sentenças e tarefas correspondentes. Nesse sentido, o BERT introduziu outra tarefa extremamente importante, porém extremamente leve, para tentar aprender esse modelo.

Amostragem negativa em nível de sentença

Lembre-se de Xiao Xi disse no capítulo word2vec anterior, uma das essências do word2vec é a introdução de uma elegante tarefa de amostragem negativa para aprender a representação no nível das palavras. E se generalizarmos esse processo de amostragem negativo para o nível da sentença? Essa é a chave para o BERT aprender a representação em nível de sentença. O BERT é semelhante ao word2vec aqui, mas constrói uma tarefa de classificação no nível de sentença. Ou seja, uma sentença dada primeiro (equivalente ao contexto dado no word2vec), sua próxima sentença é um exemplo positivo (equivalente à palavra correta no word2vec) e uma sentença é amostrada aleatoriamente como um exemplo negativo (equivalente à amostragem aleatória no word2vec) Word) e, em seguida, faça duas classificações no nível da sentença (ou seja, julgue se a sentença é a próxima sentença ou o ruído atual). Através desta simples tarefa de amostragem negativa no nível de sentença, o BERT pode aprender a representação de sentenças tão facilmente quanto o word2vec aprende a representação de palavras.

Representação em nível de sentença

Espere, eu disse isso por um longo tempo, mas não disse como expressar a frase. . . O BERT aqui não é uma prática comum nas tarefas de supervisão a jusante. Com base na codificação, um pool global ou similar é executado pela primeira vez. Ele é o primeiro em cada sequência (para a sentença da tarefa, são duas sentenças ortográficas, Para outras tarefas, é uma sentença) um token especial é adicionado à sua frente e é marcado como [CLS], conforme mostrado na figura

ps: [sep] aqui é o separador entre as sentenças.O BERT também suporta a expressão dos pares de frases aprendidas.Aqui, [SEP] é distinguir o ponto de corte dos pares de sentenças.

Em seguida, permita que o codificador execute a codificação profunda em [CLS] .A camada oculta mais alta da codificação profunda é a representação de todo o par de frases / frases. Essa abordagem é um pouco intrigante à primeira vista, mas não se esqueça que o Transformer pode codificar informações globais em cada posição, independentemente do espaço e distância, e o [CLS] como uma representação de sentença / par de sentenças segue diretamente a camada de saída do classificador Conectado, assim como um "nível" no caminho de propagação gradiente para trás, é claro, encontraremos uma maneira de aprender os recursos de nível superior relacionados à classificação. Além disso, para permitir ao modelo distinguir se cada palavra pertence a "sentença esquerda" ou "sentença direita", o autor introduz o conceito de "incorporação de segmento" para distinguir sentenças. Para pares de frases, a incorporação A e a incorporação B são usadas para representar as frases esquerda e direita, respectivamente; para frases, existe apenas a incorporação A. A incorporação A e B também são treinadas com o modelo.

ps: Esse método parece simples e áspero como a incorporação de posições. É realmente difícil entender por que o BERT é usado na tarefa de "pares de perguntas do quora", que teoricamente exige que a rede mantenha simetria. Ainda pode funcionar, e o clima é complicado.

Portanto, no final, a representação de cada token no BERT é composta pela incorporação de token de vetor de palavra original, incorporação de posição mencionada acima e incorporação de segmento aqui, conforme mostrado na figura:

Interface de tarefas downstream simples e excessiva

Realmente mostra que o modelo BERT é um modelo no nível da quilha e não é mais um vetor de palavras.É seu design de interface para várias tarefas posteriores, ou uma palavra mais estrangeira é chamada de estratégia de migração. Antes de tudo, como as representações de nível superior de frases e pares de frases são obtidas, é claro, para tarefas de classificação de texto e tarefas de correspondência de texto (a correspondência de texto é na verdade também uma tarefa de classificação de texto, mas a entrada é um par de texto), você só precisa usar Representação (ou seja, o codificador é emitido na parte superior do lexeme [CLS]) mais uma camada de MLP ~ Como o texto é profundamente codificado bidirecionalmente, somente a camada de saída softmax precisa ser adicionada para tarefas de identificação de sequência. Até o CRF é inútil ~ O que fez o Xi Xi ainda mais pensar é que, em tarefas extrativas como o SQuAD, é suficiente salvar os dois pacotes de codificação de codificação profunda e atenção profunda e até ousar usar diretamente o ponteiro da camada de saída. Net perdeu? Diretamente como o DrQA, use dois classificadores lineares para gerar o início e o fim do intervalo, respectivamente? Não há muito a dizer, já ajoelhado m (_ _) m Finalmente, vamos dar uma olhada no efeito experimental.Bem

, isso é muito o Google. Assim que este artigo foi publicado, Xiao Xi ficou muito feliz, porque muitas das idéias anteriores não precisavam ser verificadas por experimentos, porque foram mortas pelas tarefas de classificação, anotação e migração do BERT (。 ́︿ ̀), que podem ser iniciadas desde o início, o SQuAD O plano de construção do edifício também pode ser interrompido.Agradecemos ao BERT por não executar a tarefa de geração, o que dá às pessoas um pouco de imaginação. Bem, sorria e chore manualmente.

Referências

[1] 2018 BERT- Pré-treinamento de transformadores bidirecionais profundos para o entendimento da linguagem
[2] 2018NAACL | Representações profundas de palavras contextualizadas
[3] 2018 ACL | Seleção de resposta em várias voltas para chatbots com rede de correspondência de profunda atenção
[4] 2018ICLR | Compreensão de leitura rápida e precisa, combinando auto-atenção e convolução
[5] 2017TACL | Enriquecendo vetores de palavras com informações de subpalavras
[6] 2017ACL | Redes neurais convolucionais em pirâmide profunda para categorização de texto
[7] 2017 | Sequência convolucional para aprendizado de sequência
[8] 2017 | As redes convolucionais precisam ser profundas para a classificação de texto?
[9] 2016 Redes neurais convolucionais para categorização de texto / nível de palavras rasas vs. nível de caracteres profundos
[10] PNI 2013 | Representações distribuídas de palavras e frases e sua composicionalidade

Publicado 45 artigos originais · ganhou elogios 2 · Vistas 5228

Acho que você gosta

Origin blog.csdn.net/xixiaoyaoww/article/details/105460274
Recomendado
Clasificación