Giới thiệu về Teacher Forcing

Machine Translation với Keras

Thushan Ganegedara

Data Scientist and Author

Mô hình dịch máy trước đó

  • Mô hình trước

Encoder Decoder full model

  • Encoder GRU
    • Nhận từ tiếng Anh
    • Xuất vector ngữ cảnh
  • Decoder GRU
    • Nhận vector ngữ cảnh
    • Xuất chuỗi đầu ra GRU
  • Lớp Dự đoán Decoder
    • Nhận chuỗi đầu ra GRU
    • Xuất xác suất dự đoán từ tiếng Pháp
Machine Translation với Keras

So sánh: Huấn luyện không dùng Teacher Forcing

Không dùng teacher forcing 1

Machine Translation với Keras

So sánh: Huấn luyện không dùng Teacher Forcing

Không dùng teacher forcing 2

Machine Translation với Keras

So sánh: Huấn luyện không dùng Teacher Forcing

Không dùng teacher forcing 3

Machine Translation với Keras

So sánh: Huấn luyện với Teacher Forcing

Teacher forcing 1

Machine Translation với Keras

So sánh: Huấn luyện với Teacher Forcing

Teacher forcing 2

Machine Translation với Keras

So sánh: Huấn luyện với Teacher Forcing

Teacher forcing 3

Machine Translation với Keras

So sánh: Huấn luyện với Teacher Forcing

Teacher forcing 4

Machine Translation với Keras

Mô hình dịch máy trước đó

  • Mô hình trước

Encoder decoder full model

  • Mô hình dùng Teacher Forcing

Encoder decoder model with teacher forcing

Machine Translation với Keras

Cài đặt mô hình với 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 với Keras

Input và output

  • Input cho Encoder - ví dụ: I, like, dogs
  • Input cho Decoder - ví dụ: J'aime, les
  • Output của Decoder - ví dụ: les, chiens

Teacher forcing inputs and outputs

Machine Translation với Keras

Cài đặt mô hình với 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)
    
  • Dự đoán Decoder
    de_dense = layers.TimeDistributed(layers.Dense(fr_vocab, activation='softmax'))
    de_pred = de_dense(de_out)
    
Machine Translation với Keras

Biên dịch mô hình

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

Tiền xử lý dữ liệu

  • Encoder

    • Input - Toàn bộ từ tiếng Anh (onehot)
      • en_x = sents2seqs('source', en_text, onehot=True, reverse=True)
  • Decoder

    de_xy = sents2seqs('target', fr_text, onehot=True)
    
    • Input - Tất cả từ tiếng Pháp trừ từ cuối (onehot)
      • de_x = de_xy[:,:-1,:]
    • Output/Mục tiêu - Tất cả từ tiếng Pháp trừ từ đầu (onehot)
      • de_y = de_xy[:,1:,:]
Machine Translation với Keras

Hãy thực hành!

Machine Translation với Keras

Preparing Video For Download...