Arquitetura do Transformador: Codificação Posicional

Em 2017, Vaswani e outros do Google propuseram uma nova arquitetura sequência a sequência de atenção pura, e a arquitetura Transformer, que é bem conhecida na academia e na indústria, nasceu. Suas capacidades de treinamento paralelizáveis ​​e desempenho superior o tornam uma escolha popular para pesquisadores nas áreas de Processamento de Linguagem Natural (NLP) e Visão Computacional (CV). Este artigo se concentrará em uma parte integrante da arquitetura do Transformer - Codificação Posicional.
insira a descrição da imagem aqui

Arquitetura do transformador

O que é um código de posição? Por que isso é tão importante?

Na linguagem humana, a posição e a ordem das palavras definem a sintaxe e também afetam a semântica. A ordem incapturável das palavras pode dificultar a compreensão do significado de uma frase, conforme mostrado na figura abaixo.
insira a descrição da imagem aqui
Portanto, em tarefas de NLP, para qualquer arquitetura de rede neural, é muito crítico poder identificar efetivamente a posição de cada palavra e a ordem entre as palavras. A própria rede neural recorrente tradicional (RNN) considera a ordem entre as palavras por meios autorregressivos. No entanto, a arquitetura do Transformer é diferente da RNN, o Transformer usa um mecanismo de auto-atenção puro para capturar a conexão entre as palavras. Mecanismos de auto-atenção puros são invariantes de permutação ( veja a prova ). Em outras palavras, o mecanismo de auto-atenção no Transformer não pode capturar a ordem da sequência dos elementos de entrada. Então, precisamos de uma maneira de incorporar a ordem das palavras na arquitetura do Transformer, então a codificação posicional surgiu.
insira a descrição da imagem aqui

Como funcionam os códigos posicionais

Atualmente, os principais métodos de codificação de posição são divididos principalmente em duas categorias: codificação de posição absoluta e codificação de posição relativa . A função da codificação de posição absoluta é informar a arquitetura do Transformer da posição de cada elemento na sequência de entrada, semelhante à marcação de cada elemento da sequência de entrada com um "rótulo de posição" para indicar sua posição absoluta. A codificação de posição relativa atua no mecanismo de auto-atenção para informar a arquitetura do Transformer da distância entre dois elementos. Como mostrado abaixo.

insira a descrição da imagem aqui

código de posição absoluta

A codificação de posição absoluta mais antiga originou-se de Convolutional Sequence to Sequence Learning publicado por Jonas Gehring e outros em 2017 , que usou uma forma de incorporação treinável como codificação de posição. Posteriormente, Vaswani e outros do Google usaram o código de posição gerado pela função seno-coseno no artigo Atenção é tudo o que você precisa . Com relação ao motivo pelo qual a arquitetura do Transformer escolhe a função seno-cosseno para gerar a codificação de posição absoluta e algumas características da função seno-coseno, o autor lê a postagem no blog do Sr. Kazemnejad "Arquitetura do transformador: a codificação posicional", que descreve o princípio da Codificação posicional absoluta seno-cosseno em detalhes . O BERT, que nasceu no final de 2018, também usa um formulário de incorporação treinável como codificação. Na verdade, o ponto em comum desses três trabalhos é adicionar codificação posicional à incorporação de cada palavra e entrar no modelo. Formalmente, a seguinte fórmula é mostrada:
x = ( w 1 + p 1 , . . . , wm + pm ) . x = (w_1 + p_1, . . . ,w_m + p_m).x=( w1+p1,. . . ,cm+pm) .
Entre eles,xxx representa a entrada do modelo,wm w_mcmIndica mmIncorporações de palavras em m posições,pm p_mpmIndica mmCodificação de posição absoluta de m posições.

Nos últimos anos, a maior parte do trabalho em códigos de posição absoluta é baseada em diferentes métodos para gerar códigos de posição absoluta. A seguir está uma lista de alguns trabalhos relacionados à codificação de posição absoluta. Os alunos interessados ​​podem aprender sobre isso ~


  1. Aprendendo a codificar posição para transformador com modelo dinâmico contínuo compreensão da linguagem e resposta a perguntas. Obteve-se uma boa melhoria de desempenho.
    Devido às excelentes propriedades de extrapolação do próprio mecanismo recursivo, o FLOATER basicamente não é limitado pelo tamanho do texto. E o autor explicou que a codificação de posição absoluta seno-cosseno é uma solução especial do FLOATER. Este trabalho foi testado em WMT14 En-De e En-Fr respectivamente, e comparado com o modelo Transformer Base, o valor BLEU aumentou 0,4 e 1,0 respectivamente. Mas, ao mesmo tempo, essa forma recursiva de codificação de posição também sacrifica a entrada paralela do modelo original, o que terá um certo impacto na velocidade.
  2. Codificando a ordem das palavras em incorporações complexas
    Este trabalho propõe uma função de vetor de palavras de valor complexo para gerar codificação de posição absoluta, que vincula habilmente a amplitude e a fase da função de valor complexo com o significado e a posição da palavra, e é obtida em tradução automática, classificação de texto e tarefas de modelo de linguagem Bom aumento de desempenho. .
    A função de vetor de palavra de valor complexo assume a posição como uma variável e calcula o vetor de palavra de cada palavra em posições diferentes. Como a função é contínua em relação à variável de posição, o método modela não apenas posições absolutas, mas também posições relativas entre palavras. Este trabalho foi experimentado no conjunto de dados de tarefas de tradução automática WMT16 En-De, e o vetor de palavras de valor complexo tem um aumento de valor de 1,3 BLEU em comparação com o modelo Transformer Base.
  3. SHAPE: Shifted Absolute Position Embedding para Transformadores
    Este trabalho propõe um método de treinamento robusto para codificação de posição absoluta. Os autores argumentam que os métodos de codificação de posição existentes carecem de capacidade de generalização ao testar comprimentos não vistos e propõem a Codificação de Posição Absoluta Deslocada (SHAPE) para resolver esses dois problemas. A ideia básica do SHAPE é traduzir aleatoriamente o código de posição absoluta para uma certa distância durante o processo de treinamento para alcançar a capacidade de generalização. Este trabalho é treinado no conjunto de dados de tarefa de tradução automática WMT16 En-De, e newstest2010-2016 é usado como conjunto de verificação e conjunto de teste. Comparado com a codificação de posição absoluta seno-cosseno, este método tem uma certa melhoria de desempenho.

código de posição relativa

A codificação de posição relativa mais clássica originou-se de Self-Attention with Relative Position Representations publicada por Shaw et al . Antes de introduzir a representação da posição relativa, primeiro introduza brevemente o processo de cálculo do mecanismo de auto-atenção. Para uma subcamada de auto-atenção do modelo Transformer:
Q = x WQK = x WKV = x WVQ= x W_Q \\ K=xW_K \ \V=xW_VQ=x WQk=x WKV=x WV
Entre eles, xxxx é a saída da camada anterior,WQ W_QCQWK W_KCKWV W_VCVsão parâmetros do modelo, que podem ser obtidos por aprendizado automático. Neste ponto, para toda a sequência de vetores de entrada do modelo x = { x 1 , … , xm } x=\{x_1,\ldots,x_m\}x={ x1,,xm} , através do cálculo do produto escalar, você pode obter a posição atualiiA relação entre i e todas as posições na sequência, denotada comozi z_izeu, a fórmula de cálculo é a seguinte:
zi = ∑ j = 1 m α ij ( xj WV ) z_i = \sum_{j=1}^m \alpha_{ij}({x}_j {W}_V)zeu=j = 1maeu j( xjCV)
Thisri,zi {z}_{i}zeuPode ser visto como uma representação linear ponderada da sequência de entrada. E o peso α ij \alpha_{ij}aeu jObtido pela função Softmax:
α ij = exp ⁡ ( eij ) ∑ k = 1 m exp ⁡ ( eik ) \alpha_{ij} = \frac{\exp ({e}_{ij})}{\sum_{k = 1}^{m}\exp ({e}_{ik})}aeu j=k = 1mexp ( eeu k)exp ( eeu j)
Além disso, eij {e}_{ij}eeu jé definido como:
eij = (xi WQ ) ( xj WK ) T dk {e}_{ij} = \frac{({x}_i {W}_Q){({x}_j {W}_K)}^ {\textrm{T}}}{\sqrt{d_k}}eeu j=dk ( xeuCQ) ( xjCK)T
Entre eles, dk d_kdké a dimensão da camada oculta no modelo. eij {e}_{ij}eeu jNa verdade Q {Q}Q eK {K}Um resultado do dimensionamento do produto vetorial de K. A ideia central da representação da posição relativa está emzi z_izeueij {e}_{ij}eeu jUm vetor de posição relativa apreensível aij V {a}_{ij}^V é introduzido na fórmula de cálculo deaeu jVaij K {a}_{ij}^Kaeu jKzi = ∑ j = 1 m α ij ( xj WV + aij V ) eij = xi WQ ( xj WK + aij K ) T dk = xi WQ ( xj WK ) T + xi WQ
( aij K ) T dk \begin{aligned} {z}_{i} &= \sum_{j=1}^m \alpha_{ij}({x}_j {W}_V +{a}_{ij }^V) \\ {e}_{ij} &= \frac{ {x}_i {W}_Q{({x}_j {W}_K +{a}_{ij}^K )}^{ \textrm{T}}}{\sqrt{d_k}}\\ &= \frac{ {x}_i {W}_Q{({x}_j {W}_K)}^{\textrm{T}} + {x}_i{W}_Q{({a}_{ij}^K )}^{T}}{\sqrt{d_k}} \end{aligned}zeueeu j=j = 1maeu j( xjCV+aeu jV)=dk xeuCQ( xjCK+aeu jK)T=dk xeuCQ( xjCK)T+xeuCQ( umeu jK)T
Entre eles, aij V {a}_{ij}^Vaeu jVaij K {a}_{ij}^Kaeu jK定义如下:
aij K = wclip ( j − i , k ) K aij V = wclip ( j − i , k ) V clip ( x , k ) = max ( − k , min ( k , x ) ) \begin{aligned } {a}_{ij}^K&=w^K_{ {\rm clipe} (ji,k)}\\ {a}_{ij}^V&=w^V_{ {\rm clipe} (ji, k)}\\ {\rm clip} (x,k) &={\rm max}(-k,{\rm min}(k,x)) \end{aligned}aeu jKaeu jVc l i p (x,k )=cc l i p (ji,k)K=cc l i p (ji,k)V=m a x (k,m i n (k,x ) )
Através da posição relativa máxima predefinida kkk , reforça o modelo à esquerda e à direita kkcentrado na palavra atualCálculo de atenção para k palavras. Portanto, o tamanho final da janela é2k+1 2k+12k _+1 . Para tamanho de janela de posição de borda inferior a2k 2k2k palavras, usando um mecanismo de poda, ou seja, apenas palavras adjacentes válidas são modeladas . Peso da posição relativaaij {a}_{ij}aeu jA matriz é mostrada na figura abaixo:
Peso relativo da posição a_ij

Auto -Atenção com Representações de Posição Relativa leva a uma série de discussões e melhorias na codificação de posição relativa.
A seguir está uma lista de alguns trabalhos sobre codificação de posição relativa, e os alunos interessados ​​podem aprender sobre isso ~


  1. Transformer-XL: Modelos de Linguagem Atentiva Além de um Contexto de Comprimento Fixo respectivamente: eij =
    ( xi WQ ) ( xj WK ) T dk = ( ( wi + pi ) WQ ) ( wj + pj ) WK ) T dk = wi WQWKT wj T + pi WQWKT pj T + wi WQWKT pj T + pi WQWKT wj T dk \begin {aligned} {e}_{ij}&=\frac{({x}_i {W}_Q){({x}_j {W}_K)}^{\textrm{T}} }{\sqrt{ d_k}}\\ &=\frac{(({w}_i+{p}_i){W}_Q){({w}_j+{p}_j){W}_K)}^{ \textrm{T} }}{ { \sqrt{d_k}}}\\ &=\frac{w_iW_Q{W_K}^T{w_j}^T+p_iW_Q{W_K}^T{p_j}^T+w_iW_Q{W_K }^T{p_j }^T+p_iW_Q{W_K}^T{w_j}^T}{\sqrt{d_k}} \end{aligned}eeu j=dk ( xeuCQ) ( xjCK)T=dk ( ( weu+peu) WQ) ( wj+pj) WK)T=dk ceuCQCKT wjT+peuCQCKT pjT+ceuCQCKT pjT+peuCQCKT wjT
    O autor acha que as partes palavra-posição e posição-palavra não são razoáveis. Este artigo vai pj p_jpjSubstituído pelo vetor posição relativa R i − j R_{i−j}Ri j, que é diferente do vetor de posição relativa da fórmula de treinamento de Shaw, este artigo usa a codificação seno-cosseno para gerar R i − j R_{i−j}Ri jpi p_ipeuSubstituído por dois vetores treináveis ​​u , vu, vvocê ,v .
    _ }^T{w_j}^T+\vermelho{v}W_Q{W_K}^T\vermelho{R_{i−j}}^T+w_iW_Q{W_K}^T\vermelho{R_{i−j}}^T+ \red{u}W_Q{W_K}^T{w_j}^T}{\sqrt{d_k}} \end{aligned}eeu j=dk ceuCQCKT wjT+v WQCKT Ri jT+ceuCQCKT Ri jT+você WQCKT wjT
    A recursão em nível de fragmento e a codificação de posição relativa proposta pelo Transformer-XL permitem que o modelo aprenda dependências de longa distância, o efeito de aceleração é óbvio e a dependência mais longa que pode ser suportada é aproximadamente O(NL). O modelo XLNet proposto pelo Google também adotou a estrutura Transformer-XL.
  2. Explorando os limites do aprendizado por transferência com um transformador unificado de texto para texto
    Em comparação com o Transformer-XL, a codificação de posição relativa usada pelo modelo de linguagem pré-treinado do Google T5 é mais simples. Este trabalho substitui posição-posição, palavra-posição e posição-palavra por um item de viés apreensível, como segue:
    eij = wi WQWKT wj T + α i − jdk \begin{aligned} {e}_{ij} =\frac {w_iW_Q{W_K}^T{w_j}^T+\red{\alpha_{i−j}}}{\sqrt{d_k}} \end{aligned}eeu j=dk ceuCQCKT wjT+ai j
    Vale ressaltar que para o viés de posição relativa termo α i − j \alpha_{i−j}ai j, o modelo T5 usa um processo de segmentação mais fino. No caso de uma distância relativamente curta (a janela de distância relativa é -7~7), cada posição usa um vetor de posição relativa treinado independentemente; e conforme a distância relativa aumenta (a janela de distância relativa é menor que -7 ou maior que 7 ), mais As posições compartilharão um vetor de posição relativa até que a distância relativa atinja o limite para executar a operação de corte.
  3. O
    artigo Repensando a Codificação Posicional no Pré-treinamento de Linguagem aponta dois problemas com a codificação posicional no atual modelo de pré-treinamento baseado na estrutura do Transformer. O primeiro problema é o problema de correspondência posição-palavra acima mencionado. Em segundo lugar, os autores acreditam que o símbolo [CLS] não deve conter informações de localização. Com base nisso, o autor removeu a correspondência palavra-posição, posição-palavra e citou o item de viés no modelo T5:
    eij = wi WQWKT wj T 2 dk + pi UQUKT pj T 2 dk + α i − j \begin{ alinhado} {e}_{ij}=\frac{w_iW_Q{W_K}^T{w_j}^T}{\sqrt{2d_k}}+\frac{p_iU_Q{U_K}^T{p_j}^T}{\ quadrado{2d_k}}+\vermelho{\alpha_{i−j}} \end{alinhado}eeu j=2 diask ceuCQCKT wjT+2 diask peuvocêQvocêKT pjT+ai j
    Entre eles, UQ U_QvocêQUK U_KvocêKé uma matriz de parâmetros que pode ser aprendida. Ao mesmo tempo, a informação de posição do identificador [CLS] é apagada para que qualquer outra posição tenha a mesma relação de posição relativa com ela. O autor realizou experimentos na tarefa GLUE (General Language Understanding Evaluation), que comprovou a eficácia dessas duas partes da melhoria.
  4. DeBERTa: BERT aprimorado por decodificação com atenção desemaranhada
    Comparado com os três trabalhos anteriores, o mecanismo de codificação de posição relativa usado pelo modelo de linguagem pré-treinado da Microsoft DeBERTa também é semelhante. Este trabalho ajusta a expansão para a seguinte fórmula:
    eij = wi WQWKT wj T + wi WQWKTR i − j T + R j − i WQWKT wj T dk \begin{aligned} {e}_{ij}=\frac{w_iW_Q{ W_K}^T{w_j}^T+{w_i}W_Q{W_K}^T\vermelho{R_{i−j}}^T+\vermelho{R_{ji}}W_Q{W_K}^T{w_j}^T} {\sqrt{d_k}} \end{aligned}eeu j=dk ceuCQCKT wjT+ceuCQCKT Ri jT+Rj- eu _CQCKT wjT
    No texto, R i − j R_{i−j}Ri jO mesmo que o trabalho de Shaw está treinando vetores de posição relativa truncados. Ao mesmo tempo, DeBERTa apontou que as informações de posição relativa são mais importantes para a maioria das tarefas de NLP, mas as informações de posição absoluta também são importantes em algumas tarefas.
  5. RoFormer: Enhanced Transformer with Rotary Position Embedding
    é completamente diferente da "rotina" do trabalho anterior. O autor Su Jianlin propôs uma codificação de posição rotativa, que usa a codificação de posição absoluta para obter o efeito da codificação de posição relativa. O método específico é:
    eij = wi WQR i R j TWKT wj T dk = wi WQR i − j WKT wj T dk \begin{aligned} {e}_{ij}=\frac{w_iW_Q\red{R_i{R_j} ^ T}{W_K}^T{w_j}^T}{\sqrt{d_k}}=\frac{w_iW_Q\red{R_{ij}}{W_K}^T{w_j}^T}{\sqrt{d_k } } \end{alinhado}eeu j=dk ceuCQReuRjT WKT wjT=dk ceuCQRi jCKT wjT
    Entre eles, R i − j \red{R_{ij}}Ri jé uma matriz de rotação ortogonal. Ao realizar cálculos de atenção, Q i Q_iQeue Kj K_jkjConsiderado como um ponto em um espaço de alta dimensão, multiplicado pela matriz de rotação correspondente, de acordo com sua posição absoluta iieu ejjj, respectivamente, o gira no sentido anti-horário pelo ângulo correspondente. Desta forma, o valor após a operação de produto interno e a posição relativai − j ijeuj relacionado. Portanto, esse método de codificação de posição tem um significado físico muito intuitivo e também é uma codificação de posição relativa que pode ser usada para atenção linear.
  6. Melhore os modelos de transformadores com melhores incorporações de posição relativa
    O autor deste artigo propõe quatro métodos aprimorados para a codificação de posição relativa de Shaw et al
    . dkeij = ( xi WQ ) ( xj WK ) T α i − jdkeij = soma _ prod ( xi WQ , xj WK , α i − j ) dkeij = ( xi WQ + α i − j ) ( xj WK + α i − j ) − < α i − j , α i − j > dk \begin{alinhado} {e}_{ij}&=\frac{({x}_i {W}_Q){({x}_j {W} _K)}^ {\textrm{T}}\red{\alpha_{|i−j|}}}{\sqrt{d_k}}\\ {e}_{ij}&=\frac{({x} _i {W} _Q){({x}_j {W}_K)}^{\textrm{T}}\red{\alpha_{i−j}}}{\sqrt{d_k}}\\ {e} _{ij} &=\frac{ {\rm sum\_prod} ({x}_i {W}_Q,{ {x}_j {W}_K,}\red{\alpha_{i−j}})} {\sqrt{ d_k}}\\ {e}_{ij}&=\frac{ ({x}_i {W}_Q+\red{\alpha_{i−j}})({ {x}_j {W}_K+}\red{\alpha_{i−j}})-<\red{\alpha_{i−j}},\red{\alpha_{i−j}}>}{\ quadrado{d_k}} \end{alinhado}eeu jeeu jeeu jeeu j=dk ( xeuCQ) ( xjCK)Ta _i j=dk ( xeuCQ) ( xjCK)Ta _i j=dk s u m _ p r o d ( xeuCQ,xjCK, umi j)=dk ( xeuCQ+ai j) ( xjCK+ umi j) <ai j,ai j>
    Do ponto de vista da fórmula, em comparação com a codificação de posição relativa de Shaw, os três primeiros métodos aprimorados cancelam a prática de anexar informações de posição relativa ao elemento Key e fundem as informações de posição relativa de maneira multiplicativa. O último método anexa as informações de posição relativa aos elementos Query e Key ao mesmo tempo e subtrai o resultado da multiplicação das duas incorporações de posição relativa. Então, no final, é a adição dos três itens de Query-Key, Query-relative position e Relative position-Key. Comparado com Shaw, há uma correspondência posição-chave mais relativa.Eu acho que é muito interessante fazer isso. O autor realizou experimentos no conjunto de dados SQuAD1.1 e, em comparação com a codificação de posição absoluta da fórmula de treinamento e seno e cosseno, e a codificação de posição relativa de Shaw, o desempenho melhorou até certo ponto. E a extrapolação e robustez do método são comprovadas por experimentos.

Trabalho analítico na codificação de posição


  1. Análise de codificações posicionais para tradução de máquina neural mais vantagens e generalização mais poderosa.

  2. O que os Position Embeddings aprendem?Um estudo empírico do modelo de linguagem pré-treinado
    O artigo Positional Encoding fornece uma nova perspectiva, explicando que diferentes codificações posicionais devem ser usadas em diferentes tarefas de NLP.

  3. O artigo On Position Embeddings in BERT
    analisa qualitativamente diferentes codificações posicionais em várias tarefas NLP.

referência

  1. Codificação posicional do transformador que faz os pesquisadores quebrarem a cabeça
  2. Tradução Automática: Noções Básicas e Modelos
  3. Arquitetura do transformador: a codificação posicional
  4. Leia a codificação posicional do modelo Transformer em um artigo
  5. Informações de posição em transformadores: uma visão geral

Acho que você gosta

Origin blog.csdn.net/Jayson13/article/details/123135888
Recomendado
Clasificación