Введение в Teacher Forcing

Машинный перевод с Keras

Thushan Ganegedara

Data Scientist and Author

Предыдущая модель машинного перевода

  • Предыдущая модель

Полная модель энкодера-декодера

  • GRU энкодера
    • Принимает английские слова
    • Выводит контекстный вектор
  • GRU декодера
    • Принимает контекстный вектор
    • Выводит последовательность выходов GRU
  • Слой предсказания декодера
    • Принимает последовательность выходов GRU
    • Выводит вероятности предсказания французских слов
Машинный перевод с Keras

Аналогия: обучение без Teacher Forcing

Без Teacher Forcing 1

Машинный перевод с Keras

Аналогия: обучение без Teacher Forcing

Без Teacher Forcing 2

Машинный перевод с Keras

Аналогия: обучение без Teacher Forcing

Без Teacher Forcing 3

Машинный перевод с Keras

Аналогия: обучение с Teacher Forcing

Teacher Forcing 1

Машинный перевод с Keras

Аналогия: обучение с Teacher Forcing

Teacher Forcing 2

Машинный перевод с Keras

Аналогия: обучение с Teacher Forcing

Teacher Forcing 3

Машинный перевод с Keras

Аналогия: обучение с Teacher Forcing

Teacher Forcing 4

Машинный перевод с Keras

Предыдущая модель машинного перевода

  • Предыдущая модель

Полная модель энкодера-декодера

  • Модель с Teacher Forcing

Модель энкодера-декодера с Teacher Forcing

Машинный перевод с Keras

Реализация модели с Teacher Forcing

  • Энкодер
    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)
    
  • 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)
    
Машинный перевод с Keras

Входные и выходные данные

  • Вход энкодера – например: I, like, dogs
  • Вход декодера – например: J'aime, les
  • Выход декодера – например: les, chiens

Входы и выходы при Teacher Forcing

Машинный перевод с Keras

Реализация модели с Teacher Forcing

  • Энкодер
    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)
    
  • 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)
    
Машинный перевод с Keras

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

nmt_tf = Model(inputs=[en_inputs, de_inputs], outputs=de_pred)
nmt_tf.compile(optimizer='adam', loss="categorical_crossentropy", metrics=["acc"])
Машинный перевод с Keras

Предобработка данных

  • Энкодер

    • Входные данные – все английские слова (в one-hot кодировке)
      • en_x = sents2seqs('source', en_text, onehot=True, reverse=True)
  • Декодер

    de_xy = sents2seqs('target', fr_text, onehot=True)
    
    • Входные данные – все французские слова, кроме последнего (в one-hot кодировке)
      • de_x = de_xy[:,:-1,:]
    • Выходные данные/целевые значения – все французские слова, кроме первого (в one-hot кодировке)
      • de_y = de_xy[:,1:,:]
Машинный перевод с Keras

Давайте потренируемся!

Машинный перевод с Keras

Preparing Video For Download...