Introdução ao Teacher Forcing

Machine Translation with Keras

Thushan Ganegedara

Data Scientist and Author

O modelo tradutor automático anterior

  • O modelo anterior

Modelo completo Encoder-Decoder

  • GRU do Encoder
    • Consome palavras em inglês
    • Gera um vetor de contexto
  • GRU do Decoder
    • Consome o vetor de contexto
    • Gera uma sequência de saídas da GRU
  • Camada de previsão do Decoder
    • Consome a sequência de saídas da GRU
    • Gera probabilidades de palavras em francês
Machine Translation with Keras

Analogia: Treino sem Teacher Forcing

Sem teacher forcing 1

Machine Translation with Keras

Analogia: Treino sem Teacher Forcing

Sem teacher forcing 2

Machine Translation with Keras

Analogia: Treino sem Teacher Forcing

Sem teacher forcing 3

Machine Translation with Keras

Analogia: Treino com Teacher Forcing

Com teacher forcing 1

Machine Translation with Keras

Analogia: Treino com Teacher Forcing

Com teacher forcing 2

Machine Translation with Keras

Analogia: Treino com Teacher Forcing

Com teacher forcing 3

Machine Translation with Keras

Analogia: Treino com Teacher Forcing

Com teacher forcing 4

Machine Translation with Keras

O modelo tradutor automático anterior

  • O modelo anterior

Modelo completo Encoder-Decoder

  • Modelo com Teacher Forcing

Modelo Encoder-Decoder com teacher forcing

Machine Translation with Keras

Implementando o modelo com 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)
    
  • GRU do Decoder
    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 with Keras

Entradas e saídas

  • Entrada do Encoder - ex.: I, like, dogs
  • Entrada do Decoder - ex.: J'aime, les
  • Saída do Decoder - ex.: les, chiens

Entradas e saídas com teacher forcing

Machine Translation with Keras

Implementando o modelo com 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)
    
  • GRU do Decoder
    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)
    
  • Previsão do Decoder
    de_dense = layers.TimeDistributed(layers.Dense(fr_vocab, activation='softmax'))
    de_pred = de_dense(de_out)
    
Machine Translation with Keras

Compilando o modelo

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

Pré-processando os dados

  • Encoder

    • Entradas - Todas as palavras em inglês (one-hot)
      • en_x = sents2seqs('source', en_text, onehot=True, reverse=True)
  • Decoder

    de_xy = sents2seqs('target', fr_text, onehot=True)
    
    • Entradas - Todas as palavras em francês exceto a última (one-hot)
      • de_x = de_xy[:,:-1,:]
    • Saídas/Alvos - Todas as palavras em francês exceto a primeira (one-hot)
      • de_y = de_xy[:,1:,:]
Machine Translation with Keras

Vamos praticar!

Machine Translation with Keras

Preparing Video For Download...