Introduzione al Teacher Forcing

Traduzione automatica con Keras

Thushan Ganegedara

Data Scientist and Author

Il precedente traduttore automatico

  • Il modello precedente

Encoder Decoder full model

  • Encoder GRU
    • Consuma parole inglesi
    • Restituisce un vettore di contesto
  • Decoder GRU
    • Consuma il vettore di contesto
    • Restituisce una sequenza di output GRU
  • Layer di predizione del decoder
    • Consuma la sequenza di output GRU
    • Restituisce probabilità per parole francesi
Traduzione automatica con Keras

Analogia: training senza Teacher Forcing

Senza teacher forcing 1

Traduzione automatica con Keras

Analogia: training senza Teacher Forcing

Senza teacher forcing 2

Traduzione automatica con Keras

Analogia: training senza Teacher Forcing

Senza teacher forcing 3

Traduzione automatica con Keras

Analogia: training con Teacher Forcing

Teacher forcing 1

Traduzione automatica con Keras

Analogia: training con Teacher Forcing

Teacher forcing 2

Traduzione automatica con Keras

Analogia: training con Teacher Forcing

Teacher forcing 3

Traduzione automatica con Keras

Analogia: training con Teacher Forcing

Teacher forcing 4

Traduzione automatica con Keras

Il precedente traduttore automatico

  • Il modello precedente

Encoder decoder full model

  • Modello con Teacher Forcing

Encoder decoder model with teacher forcing

Traduzione automatica con Keras

Implementare il modello con 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)
    
  • Decoder GRU
    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)
    
Traduzione automatica con Keras

Input e output

  • Input encoder - es.: I, like, dogs
  • Input decoder - es.: J'aime, les
  • Output decoder - es.: les, chiens

Input e output del Teacher Forcing

Traduzione automatica con Keras

Implementare il modello con 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)
    
  • Decoder GRU
    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)
    
  • Predizione decoder
    de_dense = layers.TimeDistributed(layers.Dense(fr_vocab, activation='softmax'))
    de_pred = de_dense(de_out)
    
Traduzione automatica con Keras

Compilare il modello

nmt_tf = Model(inputs=[en_inputs, de_inputs], outputs=de_pred)
nmt_tf.compile(optimizer='adam', loss="categorical_crossentropy", metrics=["acc"])
Traduzione automatica con Keras

Preprocessing dei dati

  • Encoder

    • Input - Tutte le parole inglesi (one-hot)
      • en_x = sents2seqs('source', en_text, onehot=True, reverse=True)
  • Decoder

    de_xy = sents2seqs('target', fr_text, onehot=True)
    
    • Input - Tutte le parole francesi tranne l'ultima (one-hot)
      • de_x = de_xy[:,:-1,:]
    • Output/Target - Tutte le parole francesi tranne la prima (one-hot)
      • de_y = de_xy[:,1:,:]
Traduzione automatica con Keras

Passiamo alla pratica !

Traduzione automatica con Keras

Preparing Video For Download...