Introducere în Teacher Forcing

Traducere automată cu Keras

Thushan Ganegedara

Data Scientist and Author

Modelul anterior de traducere automată

  • Modelul anterior

Model complet Encoder-Decoder

  • GRU Encoder
    • Procesează cuvinte în engleză
    • Generează un vector de context
  • GRU Decoder
    • Primește vectorul de context
    • Generează o secvență de ieșiri GRU
  • Strat de predicție Decoder
    • Primește secvența de ieșiri GRU
    • Generează probabilități de predicție pentru cuvinte franceze
Traducere automată cu Keras

Analogie: Antrenare fără Teacher Forcing

No teacher forcing 1

Traducere automată cu Keras

Analogie: Antrenare fără Teacher Forcing

No teacher forcing 2

Traducere automată cu Keras

Analogie: Antrenare fără Teacher Forcing

No teacher forcing 3

Traducere automată cu Keras

Analogie: Antrenare cu Teacher Forcing

Teacher forcing 1

Traducere automată cu Keras

Analogie: Antrenare cu Teacher Forcing

Teacher forcing 2

Traducere automată cu Keras

Analogie: Antrenare cu Teacher Forcing

Teacher forcing 3

Traducere automată cu Keras

Analogie: Antrenare cu Teacher Forcing

Teacher forcing 4

Traducere automată cu Keras

Modelul anterior de traducere automată

  • Modelul anterior

Model complet encoder-decoder

  • Model cu Teacher Forcing

Model encoder-decoder cu teacher forcing

Traducere automată cu Keras

Implementarea modelului cu Teacher Forcing

  • Encoder
    en_inputs = layers.Input(shape=(en_len, en_vocab))
    en_gru = layers.GRU(hsize, return_state=True)
    en_out, en_state = en_gru(en_inputs)
    
  • GRU Decoder
    de_inputs = layers.Input(shape=(fr_len-1, fr_vocab))
    de_gru = layers.GRU(hsize, return_sequences=True)
    de_out = de_gru(de_inputs, initial_state=en_state)
    
Traducere automată cu Keras

Intrări și ieșiri

  • Intrare Encoder - ex. I, like, dogs
  • Intrare Decoder - ex. J'aime, les
  • Ieșire Decoder - ex. les, chiens

Intrări și ieșiri teacher forcing

Traducere automată cu Keras

Implementarea modelului cu Teacher Forcing

  • Encoder
    en_inputs = layers.Input(shape=(en_len, en_vocab))
    en_gru = layers.GRU(hsize, return_state=True)
    en_out, en_state = en_gru(en_inputs)
    
  • GRU Decoder
    de_inputs = layers.Input(shape=(fr_len-1, fr_vocab))
    de_gru = layers.GRU(hsize, return_sequences=True)
    de_out = de_gru(de_inputs, initial_state=en_state)
    
  • Predicție Decoder
    de_dense = layers.TimeDistributed(layers.Dense(fr_vocab, activation='softmax'))
    de_pred = de_dense(de_out)
    
Traducere automată cu Keras

Compilarea modelului

nmt_tf = Model(inputs=[en_inputs, de_inputs], outputs=de_pred)
nmt_tf.compile(optimizer='adam', loss="categorical_crossentropy", metrics=["acc"])
Traducere automată cu Keras

Preprocesarea datelor

  • Encoder

    • Intrări - Toate cuvintele engleze (codare one-hot)
      • en_x = sents2seqs('source', en_text, onehot=True, reverse=True)
  • Decoder

    de_xy = sents2seqs('target', fr_text, onehot=True)
    
    • Intrări - Toate cuvintele franceze exceptând ultimul (codare one-hot)
      • de_x = de_xy[:,:-1,:]
    • Ieșiri/Ținte - Toate cuvintele franceze exceptând primul (codare one-hot)
      • de_y = de_xy[:,1:,:]
Traducere automată cu Keras

Să exersăm!

Traducere automată cu Keras

Preparing Video For Download...