แนะนำ Teacher Forcing

Machine Translation ด้วย Keras

Thushan Ganegedara

Data Scientist and Author

โมเดลแปลภาษาก่อนหน้า

  • โมเดลก่อนหน้า

โมเดล Encoder Decoder แบบเต็ม

  • Encoder GRU
    • รับคำภาษาอังกฤษเป็นอินพุต
    • ส่งออก context vector
  • Decoder GRU
    • รับ context vector เป็นอินพุต
    • ส่งออกลำดับผลลัพธ์จาก GRU
  • Decoder Prediction layer
    • รับลำดับผลลัพธ์จาก 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

อินพุตและเอาต์พุต

  • อินพุต Encoder - เช่น I, like, dogs
  • อินพุต Decoder - เช่น J'aime, les
  • เอาต์พุต Decoder - เช่น 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)
    
  • Decoder Prediction
    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...