Transformer [a explicação mais detalhada do Transformer em toda a rede]

Transformador

1. Estrutura do transformador

Primeiro, observe a estrutura geral do Transformer:

Pode parecer complicado, mas na verdade é o framework do Codificador e Decodificador {seq2seq}. O padrão NX = 6, o codificador de 6 camadas e o decodificador de 6 camadas são aninhados na auto-atenção aninhada mencionada na última vez e, em seguida, executam várias transformações não lineares.

Estrutura geral do transformador

A estrutura na figura acima é muito complicada. Como o Transformer foi originalmente usado como um modelo de tradução, vamos dar um exemplo para entender o propósito primeiro.

insira a descrição da imagem aqui

Transformer é equivalente a uma caixa preta, insira "Je suis etudiant" à esquerda e obtenha um resultado de tradução "I am a student" à direita.

insira a descrição da imagem aqui

Vamos descrever como o modelo do framework Encoder-Decoder realiza a tradução de texto:

insira a descrição da imagem aqui

O Transformer também é um modelo Seq2Seq (o modelo da estrutura Encoder-Decoder) . Um Codificador à esquerda lê a entrada e um Decodificador à direita obtém a saída. Codificadores e Decodificadores têm 6 camadas por padrão, conforme mostrado a seguir figura:
insira a descrição da imagem aqui

  从上图可以看到,Encoders 的输出,会和每一层的 Decoder 进行结合

A razão é : o Codificador insere KV no Decodificador de cada camada, e o Q gerado pelo Decodificador consulta informações do Codificador KV (descrito abaixo)

Pegamos uma das camadas para mostrar:
insira a descrição da imagem aqui

2. Seq2seq de RNN para transformador (compreendendo com exemplos)

Exemplo 1: Seq2seq - reconhecimento de fala, tradução automática
insira a descrição da imagem aqui

Exemplo 2: Seq2seq——Insira o áudio e as legendas de dramas de TV e treine um modelo de reconhecimento de fala
insira a descrição da imagem aqui

Exemplo 3: Seq2seq - texto de entrada, fala de saída
insira a descrição da imagem aqui

Exemplo 4: Seq2seq——Insira modelos de diálogo e treine chatbots
insira a descrição da imagem aqui

Exemplo 4: Seq2seq - Extração de recurso de imageminsira a descrição da imagem aqui

Exemplo 4: Seq2seq——Transformador
insira a descrição da imagem aqui


3. Codificador

O que o Codificador está fazendo?
Vetores de palavras, vetores de imagens, em suma, o codificador deve usar vetores de palavras para permitir que os computadores entendam algumas coisas que existem objetivamente no mundo humano de maneira mais razoável (incerta) .
O codificador se transforma em um melhor a partir de uma única frasevetor de palavra(K、V)!
insira a descrição da imagem aqui

insira a descrição da imagem aqui

Com o prenúncio de tanto conhecimento acima, sabemos que os Eecoders são N = 6 camadas. Pela figura acima, podemos ver que cada camada do Encoder inclui duas sub-camadas:

  • A primeira subcamada é a autoatenção multicabeça , que é usada para calcular a autoatenção de entrada;
  • A segunda subcamada é uma camada de rede neural feedforward simples Feed Forward ;
  • Nota: Em cada sub-camada simulamos a rede residual (detalhada abaixo), a saída de cada sub-camada é LayerNorm (x + Sub_layer(x)), onde sub_layer representa a camada anterior da saída da camada;

Agora vamos analisar passo a passo o diagrama de fluxo de dados do Encoder:

insira a descrição da imagem aqui

insira a descrição da imagem aqui

  1. O verde escuro x1 representa a saída da camada Embedding.Após a adição do vetor Positional Embedding, obtém-se o vetor de características de entrada final no Encoder, ou seja, o vetor verde claro x1 ;
  2. O vetor verde claro x1 representa o vetor de características da palavra "Thinking" , onde x1 passa pela camada de auto-atenção e se torna um vetor rosa claro z1 ;
  3. Como o vetor diretamente conectado da estrutura residual, x1 é adicionado diretamente a z1, ou seja, [w3(w2(w1x+b1)+b2)+b3+x], e então a operação Layer Norm é realizada para obter o rosa vetor z1 ;
    • O papel da estrutura residual : para evitar o desaparecimento do gradiente, w3(w2(w1x+b1)+b2)+b3, se w1, w2, w3 são particularmente pequenos, 0,0000000...1, x se aproxima de 0,
    • O papel da norma de camada : para garantir a estabilidade da distribuição de recursos de dados e acelerar a convergência do modelo
  4. z1 passa pela camada de rede neural feedforward (Feed Forward), depois adiciona a estrutura residual a si mesma e, em seguida, passa pela camada Layer Norm para obter um vetor de saída r1; a rede neural feedforward inclui duas transformações lineares e uma função de ativação ReLU: FFN(x) = max(0, xW1 + b1)W2 + b2;
    • A função da rede neural feedforward (Feed Forward) : cada passo antes está fazendo uma transformação linear, wx+b, a superposição da mudança linear é sempre uma mudança linear (mudança linear é a translação e expansão e redução no espaço), através do Feed Forward Relu faz uma transformação não linear, tal transformação de espaço pode caber infinitamente em qualquer estado
  5. Como os Encoders do Transformer possuem 6 Encoders, r1 também será utilizado como entrada da próxima camada do Encoder, substituindo o papel de x1 , e assim sucessivamente até a última camada do Encoder;

Não importa se você não entende, todas as operações acima estão fazendo vetores de palavras, mas esse vetor de palavras é melhor e pode representar com mais precisão a palavra e a frase (fonte)


4. Decodificador

Decodificador O decodificador receberá o vetor de palavras (K, V) gerado pelo codificador e, em seguida, usará esse "vetor de palavras" para gerar o resultado da tradução.

insira a descrição da imagem aqui
insira a descrição da imagem aqui
Os decodificadores também são N = 6 camadas. A partir da figura acima, podemos ver que cada camada do decodificador inclui 3 subcamadas:

  • A primeira subcamada é a autoatenção mascarada de várias cabeças, que também é a autoatenção da entrada de cálculo;
    • Não vamos explicar por que o Masked é feito aqui, isso será explicado na seção "Exibição do processo dinâmico do transformador".
  • A segunda subcamada é o cálculo da atenção do codificador-decodificador, que executa o cálculo da atenção na entrada do codificador e na saída da auto-atenção de várias cabeças mascaradas do decodificador;
    • Não explica aqui porque o cálculo de atenção cruzada deve ser executado na saída do codificador e do decodificador juntos. Isso será explicado na seção "Exibição do processo dinâmico do transformador"
  • A terceira subcamada é a camada de rede neural feedforward, que é a mesma do Codificador;

Entrada do decodificador:

insira a descrição da imagem aqui

O decodificador obtém a saída de seu ponto de tempo anterior (ou seja, o vetor de consulta Q ) e a saída do vetor de recursos ( K, V ) pelo Encode para se tornar uma nova entrada;
ou seja, o codificador fornece matriz K e , V e e decodificador fornece a matriz Q ;

Por que o Codificador fornece matrizes K e V aos Decodificadores?

  • Q vem de Decoder (decodificador), K=V vem de Encoder (encoder);
  • Q é a variável de consulta, Q é a palavra gerada; K=V é a frase de origem
  • Quando geramos esta palavra, utilizamos as palavras já geradas pelo Decodificador como Q e o K e V fornecidos pela sentença fonte
    como Autoatenção, que serve para determinar quais palavras da sentença fonte são mais efetivas na geração da próxima palavra, e então gere a próxima palavra A palavra continua como Q.

Por exemplo: "Eu amo a China" se traduz em "Eu amo a China"

Quando traduzimos "I", uma vez que o Decoder fornece a matriz Q, ele pode encontrar a palavra mais útil para a tradução "I" entre as quatro palavras "I love China" através do cálculo com as matrizes K ee Ve focando nas informações mais importantes para si mesmo .


5. Resultado da saída do transformador

Os dois módulos de codificação e decodificação do Transformer foram explicados acima, então voltamos à pergunta original e traduzimos "aprendizado de máquina" em "aprendizado de máquina". A saída do decodificador é um vetor de ponto flutuante. Como convertê-lo em " aprendizado de máquina"? Que tal duas palavras? Vejamos o processo de interação de codificadores e decodificadores para encontrar a resposta:

insira a descrição da imagem aqui
Como pode ser visto na figura acima, o trabalho final do Transformer é deixar a saída do decodificador passar pela camada linear Linear e então se conectar a um softmax

  1. A camada linear é uma rede neural simples totalmente conectada, que projeta o vetor A gerado pelo decodificador em um vetor B de dimensão superior. Supondo que o vocabulário de nosso modelo seja de 10.000 palavras, o vetor B possui 10.000 dimensões , cada dimensão corresponde a uma pontuação de palavra única.
  2. Uma camada softmax então converte essas pontuações em probabilidades. Selecione a dimensão com a maior probabilidade e, de forma correspondente, gere as palavras associadas a ela, pois a saída dessa etapa de tempo é a saída final!

6. Demonstração do processo dinâmico do transformador

insira a descrição da imagem aqui
Supondo que a figura acima seja uma determinada etapa do modelo de treinamento, vamos descrever este fluxograma dinâmico em combinação com a estrutura completa do Transformer:
insira a descrição da imagem aqui

Agora vamos explicar porque o Decoder precisa fazer Mask:

Resposta: Para resolver a lacuna (incompatibilidade) entre a fase de treinamento e a fase de teste

Exemplo 1: Tradução automática : frase de origem (eu amo a China), frase de destino (eu amo a China)

  • Estágio de treinamento : O decodificador terá entrada, que é a frase de destino, que é eu amo a China, por meio das palavras geradas, para fazer o decodificador gerar melhor (toda vez, todas as informações serão informadas ao decodificador)
  • Etapa de trabalho : O decodificador também terá entrada, mas, neste momento, não se sabe qual é a frase-alvo durante o teste. Neste momento, toda vez que você gerar uma palavra, mais uma palavra será colocada na frase-alvo, e cada vez que você gerar Na hora, são todas palavras geradas (a etapa de teste só vai contar as palavras geradas para o decodificador)
    . na etapa de treinamento, farei um mascarado, quando você gerar a primeira palavra, eu não digo nada, quando você gerar a segunda palavra, eu digo a primeira palavra

insira a descrição da imagem aqui
Exemplo 2:
insira a descrição da imagem aqui

Quanto menor for a entropia cruzada entre a resposta de saída e a resposta correta, melhor:

insira a descrição da imagem aqui
Mas há outro problema:

  • Existe uma resposta correta durante o treinamento, mas não existe uma resposta correta durante o trabalho. Durante o teste, o Decodificador recebe sua própria saída, que pode estar errada; durante o treinamento, o Decodificador recebe completamente correto; o fenômeno de inconsistência entre o teste e o treinamento é chamado de "viés de exposição".

  • Assumindo que o Decoder veja as informações corretas durante o treinamento, se ele receber informações erradas durante o teste, ele fará uma etapa errada e aumentará o erro.

  • Portanto, durante o treinamento, fornecer ao Decoder algumas informações erradas irá, na verdade, melhorar a precisão do modelo.


Até agora, todas as explicações do Transformer acabaram e os materiais de referência são os seguintes:

  1. Mecanismo de auto-atenção da Universidade Nacional de Taiwan Li Hongyi e explicação detalhada do Transformer
  2. O passado e o presente de modelos de linguagem pré-treinados

Acho que você gosta

Origin blog.csdn.net/weixin_68191319/article/details/129228502
Recomendado
Clasificación