Transformator in Bildern

In einem früheren Artikel haben wir den Aufmerksamkeitsmechanismus untersucht, eine äußerst verbreitete Methode in modernen Deep-Learning-Modellen, mit der die Leistungsindikatoren neuronaler maschineller Übersetzungsanwendungen verbessert werden können. In diesem Artikel werden wir uns Transformer ansehen, ein Modell, das den Aufmerksamkeitsmechanismus verwendet, um die Lerngeschwindigkeit zu erhöhen. Darüber hinaus übertreffen Transformers bei einer Reihe von Aufgaben das neuronale maschinelle Übersetzungsmodell von Google. Der größte Vorteil von Transformatoren ist jedoch ihre hohe Effizienz unter Parallelisierungsbedingungen. Sogar Google Cloud empfiehlt, Transformer als Modell für die Arbeit an Cloud-TPU zu verwenden . Versuchen wir herauszufinden, woraus das Modell besteht und welche Funktionen es ausführt.


Das Transformer-Modell wurde erstmals in dem Artikel Attention is All You Need vorgeschlagen . Eine Implementierung auf TensorFlow ist als Teil des Tensor2Tensor- Pakets verfügbar. Darüber hinaus hat eine Gruppe von NLP-Forschern aus Harvard eine Annotation des Artikels mit einer Implementierung auf PyTorch erstellt . In demselben Leitfaden werden wir versuchen, die wichtigsten Ideen und Konzepte am einfachsten und konsequentesten zu skizzieren. Wir hoffen, dass sie Menschen, die nicht über fundierte Kenntnisse des Themenbereichs verfügen, helfen, dieses Modell zu verstehen.


High Level Review


Betrachten wir das Modell als eine Art Black Box. In maschinellen Übersetzungsanwendungen akzeptiert es einen Satz in einer Sprache als Eingabe und zeigt einen Satz in einer anderen an.


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).


embeddings


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).


– . ( ).


self-attention-output


. , . , , . , , .



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


self-attention-matrix-calculation


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


, , 2-6 .


self-attention-matrix-calculation-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-headed_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


. ( – ).


, , . , , . , , , .


transformator_decoding_2


.


. ( –inf) .


«-» , , , , .



. ? .


– , , , , (logits vector).


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


( , 1). .


transformator_decoder_ausgang_softmax


, , .



, , , , .


, . .. , .


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


Wortschatz


.


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


One-Hot-Vokabular-Beispiel


: one-hot- .


(loss function) – , , , .



, . – «merci» «thanks».


, , , «thanks». .. , .


transformator_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) ( ). .



, . , :



:



Autoren


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


All Articles