Вступ до Teacher Forcing

Machine Translation з Keras

Thushan Ganegedara

Data Scientist and Author

Попередня модель машинного перекладача

  • Попередня модель

Повна модель Encoder–Decoder

  • Encoder GRU
    • Отримує англійські слова
    • Видає контекстний вектор
  • Decoder GRU
    • Отримує контекстний вектор
    • Видає послідовність виходів GRU
  • Шар прогнозування декодера
    • Отримує послідовність виходів GRU
    • Видає ймовірності для французьких слів
Machine Translation з Keras

Аналогія: тренування без Teacher Forcing

Без teacher forcing 1

Machine Translation з Keras

Аналогія: тренування без Teacher Forcing

Без teacher forcing 2

Machine Translation з Keras

Аналогія: тренування без Teacher Forcing

Без teacher forcing 3

Machine Translation з Keras

Аналогія: тренування з Teacher Forcing

Teacher forcing 1

Machine Translation з Keras

Аналогія: тренування з Teacher Forcing

Teacher forcing 2

Machine Translation з Keras

Аналогія: тренування з Teacher Forcing

Teacher forcing 3

Machine Translation з Keras

Аналогія: тренування з Teacher Forcing

Teacher forcing 4

Machine Translation з Keras

Попередня модель машинного перекладача

  • Попередня модель

Повна модель Encoder–Decoder

  • Модель з teacher forcing

Модель Encoder–Decoder з teacher forcing

Machine Translation з Keras

Реалізація моделі з 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)
    
Machine Translation з Keras

Входи та виходи

  • Вхід енкодера — напр., I, like, dogs
  • Вхід декодера — напр., J'aime, les
  • Вихід декодера — напр., les, chiens

Входи й виходи з teacher forcing

Machine Translation з Keras

Реалізація моделі з 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)
    
  • Прогнозування декодера
    de_dense = layers.TimeDistributed(layers.Dense(fr_vocab, activation='softmax'))
    de_pred = de_dense(de_out)
    
Machine Translation з Keras

Компіляція моделі

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

Передобробка даних

  • Encoder

    • Входи — усі англійські слова (onehot)
      • en_x = sents2seqs('source', en_text, onehot=True, reverse=True)
  • Decoder

    de_xy = sents2seqs('target', fr_text, onehot=True)
    
    • Входи — усі французькі слова, крім останнього (onehot)
      • de_x = de_xy[:,:-1,:]
    • Виходи/цілі — усі французькі слова, крім першого (onehot)
      • de_y = de_xy[:,1:,:]
Machine Translation з Keras

Давайте потренуємось!

Machine Translation з Keras

Preparing Video For Download...