Wprowadzenie do Teacher Forcing

Tłumaczenie maszynowe z Keras

Thushan Ganegedara

Data Scientist and Author

Poprzedni model tłumacza maszynowego

  • Poprzedni model

Pełny model enkodera-dekodera

  • Enkoder GRU
    • Przetwarza słowa angielskie
    • Zwraca wektor kontekstu
  • Dekoder GRU
    • Przyjmuje wektor kontekstu
    • Zwraca sekwencję wyjść GRU
  • Warstwa predykcji dekodera
    • Przyjmuje sekwencję wyjść GRU
    • Zwraca prawdopodobieństwa predykcji dla słów francuskich
Tłumaczenie maszynowe z Keras

Analogia: Trenowanie bez Teacher Forcing

No teacher forcing 1

Tłumaczenie maszynowe z Keras

Analogia: Trenowanie bez Teacher Forcing

No teacher forcing 2

Tłumaczenie maszynowe z Keras

Analogia: Trenowanie bez Teacher Forcing

No teacher forcing 3

Tłumaczenie maszynowe z Keras

Analogia: Trenowanie z Teacher Forcing

Teacher forcing 1

Tłumaczenie maszynowe z Keras

Analogia: Trenowanie z Teacher Forcing

Teacher forcing 2

Tłumaczenie maszynowe z Keras

Analogia: Trenowanie z Teacher Forcing

Teacher forcing 3

Tłumaczenie maszynowe z Keras

Analogia: Trenowanie z Teacher Forcing

Teacher forcing 4

Tłumaczenie maszynowe z Keras

Poprzedni model tłumacza maszynowego

  • Poprzedni model

Pełny model enkodera-dekodera

  • Model z Teacher Forcing

Model enkodera-dekodera z Teacher Forcing

Tłumaczenie maszynowe z Keras

Implementacja modelu z Teacher Forcing

  • Enkoder
    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)
    
  • Dekoder 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)
    
Tłumaczenie maszynowe z Keras

Wejścia i wyjścia

  • Wejście enkodera – np. I, like, dogs
  • Wejście dekodera – np. J'aime, les
  • Wyjście dekodera – np. les, chiens

Wejścia i wyjścia Teacher Forcing

Tłumaczenie maszynowe z Keras

Implementacja modelu z Teacher Forcing

  • Enkoder
    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)
    
  • Dekoder 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)
    
  • Predykcja dekodera
    de_dense = layers.TimeDistributed(layers.Dense(fr_vocab, activation='softmax'))
    de_pred = de_dense(de_out)
    
Tłumaczenie maszynowe z Keras

Kompilacja modelu

nmt_tf = Model(inputs=[en_inputs, de_inputs], outputs=de_pred)
nmt_tf.compile(optimizer='adam', loss="categorical_crossentropy", metrics=["acc"])
Tłumaczenie maszynowe z Keras

Przetwarzanie danych

  • Enkoder

    • Wejście – wszystkie słowa angielskie (kodowanie one-hot)
      • en_x = sents2seqs('source', en_text, onehot=True, reverse=True)
  • Dekoder

    de_xy = sents2seqs('target', fr_text, onehot=True)
    
    • Wejście – wszystkie słowa francuskie oprócz ostatniego (one-hot)
      • de_x = de_xy[:,:-1,:]
    • Wyjście/etykiety – wszystkie słowa francuskie oprócz pierwszego (one-hot)
      • de_y = de_xy[:,1:,:]
Tłumaczenie maszynowe z Keras

Czas na ćwiczenia!

Tłumaczenie maszynowe z Keras

Preparing Video For Download...