Discussão do artigo "Redes neurais de maneira fácil (Parte 10): Atenção Multi-Cabeça"

 

Novo artigo Redes neurais de maneira fácil (Parte 10): Atenção Multi-Cabeça foi publicado:

Nós já consideramos anteriormente o mecanismo de self-attention (autoatenção) em redes neurais. Na prática, as arquiteturas de rede neural modernas usam várias threads de self-attention paralelas para encontrar várias dependências entre os elementos de uma sequência. Vamos considerar a implementação de tal abordagem e avaliar seu impacto no desempenho geral da rede.

O algoritmo de Autoatenção usa três matrizes de peso treinadas (Wq, Wk e Wv). Os dados da matriz são usados para obter 3 entidades: Query, Key e Value. As duas primeiras entidades definem a relação dos pares entre os elementos da sequência e a última define o contexto do elemento analisado. 


Não é segredo que as situações nem sempre são claras. Pelo contrário, parece que, na maioria dos casos, uma situação pode ser interpretada de diferentes pontos de vista. Portanto, as conclusões podem ser completamente opostas, dependendo do ponto de vista selecionado. É importante considerar todas as variantes possíveis em tais situações e tomar uma decisão somente após uma análise cuidadosa. O mecanismo Multi-Head Attention (Atenção Multi-Cabeça) foi proposto para resolver tais problemas. Cada "cabeça" tem sua opinião, enquanto a decisão é feita por um voto equilibrado. 

A arquitetura da Atenção Multi-Cabeça implica o uso paralelo de várias threads de autoatenção com pesos diferentes, o que imita uma análise versátil de uma situação. Os resultados da operação com as threads de autoatenção são concatenados em um único tensor. O resultado final do algoritmo é encontrado multiplicando o tensor pela matriz W0, cujos parâmetros são selecionados durante o processo de treinamento da rede neural. Toda a arquitetura substitui o bloco Self-Attention no codificador e no decodificador da arquitetura do transformador.

Autor: Dmitriy Gizlyk