教師あり強制の導入

Kerasで学ぶMachine Translation

Thushan Ganegedara

Data Scientist and Author

以前の翻訳モデル

  • 以前のモデル

Encoder Decoder full model

  • エンコーダ GRU
    • 英語の単語を入力
    • コンテキストベクトルを出力
  • デコーダ GRU
    • コンテキストベクトルを入力
    • GRU 出力の系列を出力
  • デコーダ予測層
    • GRU 出力の系列を入力
    • フランス語語彙の確率を出力
Kerasで学ぶMachine Translation

類比: 教師あり強制なしの学習

教師なし強制 1

Kerasで学ぶMachine Translation

類比: 教師あり強制なしの学習

教師なし強制 2

Kerasで学ぶMachine Translation

類比: 教師あり強制なしの学習

教師なし強制 3

Kerasで学ぶMachine Translation

類比: 教師あり強制での学習

教師あり強制 1

Kerasで学ぶMachine Translation

類比: 教師あり強制での学習

教師あり強制 2

Kerasで学ぶMachine Translation

類比: 教師あり強制での学習

教師あり強制 3

Kerasで学ぶMachine Translation

類比: 教師あり強制での学習

教師あり強制 4

Kerasで学ぶMachine Translation

以前の翻訳モデル

  • 以前のモデル

Encoder decoder full model

  • 教師あり強制のモデル

Encoder decoder model with teacher forcing

Kerasで学ぶMachine Translation

教師あり強制のモデルを実装

  • エンコーダ
    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で学ぶMachine Translation

入力と出力

  • エンコーダ入力 - 例: I, like, dogs
  • デコーダ入力 - 例: J'aime, les
  • デコーダ出力 - 例: les, chiens

教師あり強制の入力と出力

Kerasで学ぶMachine Translation

教師あり強制のモデルを実装

  • エンコーダ
    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で学ぶMachine Translation

モデルのコンパイル

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

データ前処理

  • エンコーダ

    • 入力 - 英語の全単語(onehot)
      • en_x = sents2seqs('source', en_text, onehot=True, reverse=True)
  • デコーダ

    de_xy = sents2seqs('target', fr_text, onehot=True)
    
    • 入力 - 最後以外のフランス語全単語(onehot)
      • de_x = de_xy[:,:-1,:]
    • 出力/ターゲット - 最初以外のフランス語全単語(onehot)
      • de_y = de_xy[:,1:,:]
Kerasで学ぶMachine Translation

Passons à la pratique !

Kerasで学ぶMachine Translation

Preparing Video For Download...