Introduktion till Teacher Forcing

Maskinöversättning med Keras

Thushan Ganegedara

Data Scientist and Author

Den tidigare maskinöversättningsmodellen

  • Den tidigare modellen

Encoder Decoder full model

  • Encoder-GRU
    • Tar emot engelska ord
    • Matar ut en kontextvektor
  • Decoder-GRU
    • Tar emot kontextvektorn
    • Matar ut en sekvens av GRU-utdata
  • Decoder-prediktionslager
    • Tar emot sekvensen av GRU-utdata
    • Matar ut prediktionssannolikheter för franska ord
Maskinöversättning med Keras

Analogi: Träning utan Teacher Forcing

No teacher forcing 1

Maskinöversättning med Keras

Analogi: Träning utan Teacher Forcing

No teacher forcing 2

Maskinöversättning med Keras

Analogi: Träning utan Teacher Forcing

No teacher forcing 3

Maskinöversättning med Keras

Analogi: Träning med Teacher Forcing

Teacher forcing 1

Maskinöversättning med Keras

Analogi: Träning med Teacher Forcing

Teacher forcing 2

Maskinöversättning med Keras

Analogi: Träning med Teacher Forcing

Teacher forcing 3

Maskinöversättning med Keras

Analogi: Träning med Teacher Forcing

Teacher forcing 4

Maskinöversättning med Keras

Den tidigare maskinöversättningsmodellen

  • Den tidigare modellen

Encoder decoder full model

  • Modell med Teacher Forcing

Encoder decoder model with teacher forcing

Maskinöversättning med Keras

Implementera modellen med 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)
    
Maskinöversättning med Keras

Indata och utdata

  • Encoder-indata – t.ex. I, like, dogs
  • Decoder-indata – t.ex. J'aime, les
  • Decoder-utdata – t.ex. les, chiens

Teacher forcing inputs and outputs

Maskinöversättning med Keras

Implementera modellen med 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)
    
  • Decoder-prediktion
    de_dense = layers.TimeDistributed(layers.Dense(fr_vocab, activation='softmax'))
    de_pred = de_dense(de_out)
    
Maskinöversättning med Keras

Kompilera modellen

nmt_tf = Model(inputs=[en_inputs, de_inputs], outputs=de_pred)
nmt_tf.compile(optimizer='adam', loss="categorical_crossentropy", metrics=["acc"])
Maskinöversättning med Keras

Förbehandla data

  • Encoder

    • Indata – alla engelska ord (one-hot-kodade)
      • en_x = sents2seqs('source', en_text, onehot=True, reverse=True)
  • Decoder

    de_xy = sents2seqs('target', fr_text, onehot=True)
    
    • Indata – alla franska ord utom det sista (one-hot-kodade)
      • de_x = de_xy[:,:-1,:]
    • Utdata/Mål – alla franska ord utom det första (one-hot-kodade)
      • de_y = de_xy[:,1:,:]
Maskinöversättning med Keras

Nu kör vi en övning!

Maskinöversättning med Keras

Preparing Video For Download...