Transformateur en images

Dans un article précédent, nous avons examiné le mécanisme d'attention, une méthode extrêmement courante dans les modèles modernes d'apprentissage en profondeur qui peut améliorer les indicateurs de performance des applications de traduction automatique de neurones. Dans cet article, nous examinerons Transformer, un modèle qui utilise le mécanisme d'attention pour augmenter la vitesse d'apprentissage. De plus, pour un certain nombre de tâches, les Transformers surpassent le modèle de traduction automatique neuronale de Google. Cependant, le plus grand avantage des transformateurs est leur haute efficacité dans les conditions de parallélisation. Même Google Cloud recommande d'utiliser Transformer comme modèle lorsque vous travaillez sur Cloud TPU . Essayons de comprendre en quoi consiste le modèle et quelles fonctions il remplit.


Le modèle Transformer a d'abord été proposé dans l'article Attention is All You Need . Une implémentation sur TensorFlow est disponible dans le cadre du package Tensor2Tensor , en outre, un groupe de chercheurs en PNL de Harvard a créé une annotation guide de l'article avec une implémentation sur PyTorch . Dans ce même guide, nous essaierons d'énoncer le plus simplement et de manière cohérente les principales idées et concepts, ce qui, nous l'espérons, aidera les personnes qui n'ont pas une connaissance approfondie du sujet à comprendre ce modèle.


Examen de haut niveau


Regardons le modèle comme une sorte de boîte noire. Dans les applications de traduction automatique, il accepte une phrase dans une langue en entrée et affiche une phrase dans une autre.


the_transformer_3


, , , .


The_transformer_encoders_decoders


– ; 6 , ( 6 , ). – , .


The_transformer_encoder_decoder_stack


, . :


Transformer_encoder


, , (self-attention), . .


(feed-forward neural network). .


, , ( , seq2seq).


Transformer_decoder



, , /, , .


NLP-, , , (word embeddings).


plongements


512. .


. , , : 512 ( , – ). , , , , .


, .


encoder_with_tensors


: . , , , .


, .


!


, , – , , , .


encoder_with_tensors_2


. , .



, « » -, . , «Attention is All You Need». , .


– , :


”The animal didn't cross the street because it was too tired”

«it» ? (street) (animal)? .


«it», , «it» «animal».


( ), , .


(RNN), , RNN /, , . – , , «» .


transformer_self-attention_visualization


«it» #5 ( ), «The animal» «it».


Tensor2Tensor, , .



, , , .


– ( – ): (Query vector), (Key vector) (Value vector). , .


, , . 64, / 512. , (multi-head attention) .


transformer_self_attention_vectors


x1 WQ q1, «», . «», «» «» .


«», «» «»?


, . , , , .


– (score). , – «Thinking». . , .


. , #1, q1 k1, — q1 k2.


transformer_self_attention_score


– 8 ( , – 64; , ), (softmax). , 1.


self-attention_softmax


- (softmax score) , . , -, , .


– - ( ). : , , ( , , 0.001).


– . ( ).


sortie d'auto-attention


. , . , , . , , .



– , . X , (WQ, WK, WV).


calcul de matrice d'auto-attention


. (512, 4 ) q/k/v (64, 3 ).


, , 2-6 .


auto-attention-matrice-calcul-2


.



, (multi-head attention). :


  1. . , , z1 , . «The animal didn’t cross the street because it was too tired», , «it».
  2. « » (representation subspaces). , , // ( 8 «» , 8 /). . ( /) .

transformer_attention_heads_qkv


, WQ/WK/WV «», Q/K/V . , WQ/WK/WV Q/K/V .


, , 8 , 8 Z .


transformer_attention_heads_z


. , 8 – ( ), Z .


? WO.


transformer_attention_heads_weight_matrix_o


, , . , . , .


transformer_multi-head_self-attention-recap


, «» , , , «» «it» :


transformer_self-attention_visualization_2


«it», «» «the animal», — «tired». , «it» «animal» «tired».


«» , , .


transformer_self-attention_visualization_3



— .


. , . , Q/K/V .


transformer_positional_encoding_vectors


, , , .


, 4, :


transformer_positional_encoding_example


?


: , , , — .. 512 -1 1. , .


transformer_positional_encoding_large_example


20 () 512 (). , : ( ), – ( ). .


( 3.5). get_timing_signal_1d(). , , (, , , ).



, , , , ( , ) , (layer-normalization step).


transformer_resideual_layer_norm


, , :


transformer_resideual_layer_norm_2


. , :


transformer_resideual_layer_norm_3



, , , . , .


. K V. «-» , :


transformer_decoding_1


. ( – ).


, , . , , . , , , .


transformer_decoding_2


.


. ( –inf) .


«-» , , , , .



. ? .


– , , , , (logits vector).


10 (« » ), . , 10 000 – . .


( , 1). .


transformer_decoder_output_softmax


, , .



, , , , .


, . .. , .


, 6 («a», «am», «i», «thanks», «student» «<eos>» (« »).


vocabulaire


.


, (, one-hot-). , «am», :


un-vocabulaire-chaud-exemple


: one-hot- .


(loss function) – , , , .



, . – «merci» «thanks».


, , , «thanks». .. , .


transformer_logits_output_and_label


() , /. , , , .


? . , . -.


, . . , «je suis étudiant» – «I am a student». , , , :


  • (6 , – 3000 10000);
  • , «i»;
  • , «am»;
  • .. , .

output_target_probability_distributions


, :


output_trained_model_probability_distributions


, . , , (.: ). , , , – , .


, , , , . , (greedy decoding). – , , 2 ( , «I» «a») , , : , «I», , , «a». , , . #2 #3 .. « » (beam search). (beam_size) (.. #1 #2), - (top_beams) ( ). .



, . , :



:



Auteurs


Source: https://habr.com/ru/post/undefined/


All Articles