Sinh bản dịch từ mô hình

Machine Translation với Keras

Thushan Ganegedara

Data Scientist and Author

Mô hình cũ vs mô hình mới

Bộ mã hóa–giải mã lặp vector

Bộ mã hóa–giải mã: đầu vào nào

Machine Translation với Keras

Mô hình đã huấn luyện

Mô hình huấn luyện với Teacher Forcing

Machine Translation với Keras

Bộ giải mã của mô hình suy luận

  • Nhận vào

    • Một từ one-hot
    • Trạng thái đầu vào (lấy từ bước thời gian trước)
  • Trả ra

    • Trạng thái mới
    • Dự đoán (một từ)
  • Đệ quy đưa từ dự đoán và trạng thái về làm đầu vào

Machine Translation với Keras

Mô hình suy luận đầy đủ

  • Mô hình suy luận với bộ giải mã đệ quy

Bộ mã hóa và bộ giải mã đệ quy

  • Mô hình suy luận từ chương trước Bộ mã hóa–giải mã trước đó
Machine Translation với Keras

Giá trị của token sos và eos

  • sos đánh dấu bắt đầu bản dịch (ví dụ: câu tiếng Pháp).

    • Đưa sos làm từ đầu vào bộ giải mã và tiếp tục dự đoán
  • eos đánh dấu kết thúc bản dịch.

    • Dừng khi mô hình dự đoán ra eos
  • Đặt độ dài dự đoán tối đa để an toàn

Machine Translation với Keras

Định nghĩa bộ mã hóa của bộ sinh

  • Import layers và Model

    # Import Keras layers
    import tensorflow.keras.layers as layers
    from tensorflow.keras.models import Model
    
  • Định nghĩa các lớp của mô hình

    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)
    
  • Tạo đối tượng Model

    encoder = Model(inputs=en_inputs, outputs=en_state)
    
Machine Translation với Keras

Định nghĩa bộ giải mã của bộ sinh

  • Định nghĩa các lớp Input của bộ giải mã
de_inputs = layers.Input(shape=(1, fr_vocab))
de_state_in = layers.Input(shape=(hsize,))
  • Định nghĩa các layers trung gian của bộ giải mã
de_gru = layers.GRU(hsize, return_state=True)
de_out, de_state_out = de_gru(de_inputs, initial_state=de_state_in)

de_dense = layers.Dense(fr_vocab, activation='softmax') de_pred = de_dense(de_out)
  • Định nghĩa Model cho bộ giải mã
decoder = Model(inputs=[de_inputs, de_state_in], outputs=[de_pred, de_state_out])
Machine Translation với Keras

Sao chép trọng số

  • Lấy trọng số của lớp l1
    • w = l1.get_weights()
  • Gán trọng số của lớp l2 bằng w
    • l2.set_weights(w)
  • Mô hình có ba lớp có trọng số
    • Encoder GRU, Decoder GRU và Decoder Dense
en_gru_w = tr_en_gru.get_weights()
en_gru.set_weights(en_gru_w)

Cũng có thể viết:

en_gru.set_weights(tr_en_gru.get_weights())
Machine Translation với Keras

Sinh bản dịch

en_sent = ['the united states is sometimes chilly during 
           december , but it is sometimes freezing in june .']
  • Chuyển câu tiếng Anh thành chuỗi
en_seq = sents2seqs('source', en_st, onehot=True, reverse=True)
  • Lấy vector ngữ cảnh
de_s_t = encoder.predict(en_seq)
  • Chuyển "sos" (từ đầu vào bộ giải mã) thành one-hot
de_seq = word2onehot(fr_tok, 'sos', fr_vocab)
Machine Translation với Keras

Sinh bản dịch

fr_sent = ''

for _ in range(fr_len): de_prob, de_s_t = decoder.predict([de_seq,de_s_t])
de_w = probs2word(de_prob, fr_tok)
de_seq = word2onehot(fr_tok, de_w, fr_vocab)
if de_w == 'eos': break fr_sent += de_w + ' '
Machine Translation với Keras

Đến lúc dịch!

Machine Translation với Keras

Preparing Video For Download...