Transformador en imagenes

En un artículo anterior, examinamos el mecanismo de atención, un método extremadamente común en los modelos modernos de aprendizaje profundo que puede mejorar los indicadores de rendimiento de las aplicaciones de traducción automática neural. En este artículo, veremos Transformer, un modelo que utiliza el mecanismo de atención para aumentar la velocidad de aprendizaje. Además, para una serie de tareas, los transformadores superan el modelo de traducción automática neuronal de Google. Sin embargo, la mayor ventaja de los transformadores es su alta eficiencia en condiciones de paralelización. Incluso Google Cloud recomienda usar Transformer como modelo cuando se trabaja en Cloud TPU . Intentemos averiguar en qué consiste el modelo y qué funciones realiza.


El modelo Transformer se propuso por primera vez en el artículo Atención es todo lo que necesita . Una implementación en TensorFlow está disponible como parte del paquete Tensor2Tensor , además, un grupo de investigadores de PNL de Harvard creó una anotación guía del artículo con una implementación en PyTorch . En esta misma guía, trataremos de enunciar de manera más simple y consistente las ideas y conceptos principales, lo cual, esperamos, ayudará a las personas que no tienen un conocimiento profundo del área temática a comprender este modelo.


Revisión de alto nivel


Veamos el modelo como una especie de caja negra. En las aplicaciones de traducción automática, acepta una oración en un idioma como entrada y muestra una oración en otro.


the_transformer_3


, , , .


The_transformer_encoders_decoders


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


The_transformer_encoder_decoder_stack


, . :


Transformador_encoder


, , (self-attention), . .


(feed-forward neural network). .


, , ( , seq2seq).


Transformador_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


. ( – ).


, , . , , . , , , .


transformer_decoding_2


.


. ( –inf) .


«-» , , , , .



. ? .


– , , , , (logits vector).


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


( , 1). .


transformer_decoder_output_softmax


, , .



, , , , .


, . .. , .


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


vocabulary


.


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


one-hot-vocabulary-example


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



, . , :



:



Autores


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


All Articles