Introductie tot teacher forcing

Machine Translation met Keras

Thushan Ganegedara

Data Scientist and Author

Het vorige vertaalmodel

  • Het vorige model

Encoder Decoder full model

  • Encoder-GRU
    • Neemt Engelse woorden op
    • Geeft een contextvector terug
  • Decoder-GRU
    • Neemt de contextvector op
    • Geeft een reeks GRU-uitgangen terug
  • Decoder-voorspellingslaag
    • Neemt de reeks GRU-uitgangen op
    • Geeft kansvoorspellingen voor Franse woorden terug
Machine Translation met Keras

Analogie: trainen zonder teacher forcing

Zonder teacher forcing 1

Machine Translation met Keras

Analogie: trainen zonder teacher forcing

Zonder teacher forcing 2

Machine Translation met Keras

Analogie: trainen zonder teacher forcing

Zonder teacher forcing 3

Machine Translation met Keras

Analogie: trainen met teacher forcing

Teacher forcing 1

Machine Translation met Keras

Analogie: trainen met teacher forcing

Teacher forcing 2

Machine Translation met Keras

Analogie: trainen met teacher forcing

Teacher forcing 3

Machine Translation met Keras

Analogie: trainen met teacher forcing

Teacher forcing 4

Machine Translation met Keras

Het vorige vertaalmodel

  • Het vorige model

Encoder decoder full model

  • Model met teacher forcing

Encoder decoder model with teacher forcing

Machine Translation met Keras

Model met teacher forcing implementeren

  • 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)
    
Machine Translation met Keras

Inputs en outputs

  • Encoder-input — bijv. I, like, dogs
  • Decoder-input — bijv. J'aime, les
  • Decoder-output — bijv. les, chiens

Teacher forcing inputs and outputs

Machine Translation met Keras

Model met teacher forcing implementeren

  • 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-voorspelling
    de_dense = layers.TimeDistributed(layers.Dense(fr_vocab, activation='softmax'))
    de_pred = de_dense(de_out)
    
Machine Translation met Keras

Het model compileren

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

Data preprocessen

  • Encoder

    • Input — alle Engelse woorden (one-hot)
      • en_x = sents2seqs('source', en_text, onehot=True, reverse=True)
  • Decoder

    de_xy = sents2seqs('target', fr_text, onehot=True)
    
    • Input — alle Franse woorden behalve het laatste (one-hot)
      • de_x = de_xy[:,:-1,:]
    • Output/target — alle Franse woorden behalve het eerste (one-hot)
      • de_y = de_xy[:,1:,:]
Machine Translation met Keras

Laten we oefenen!

Machine Translation met Keras

Preparing Video For Download...