Neural Machine Translation, mô hình dịch máy và đánh giá mô hình dịch máy

1. Giới thiệu tổng quan mô hình Neural Machine Translation

Neural Machine Translation là sự kết hợp của dịch máy (Machine Translation - MT) và mạng nơ-ron nhân tạo (Artificial Neural Network - NN). NMT là cách tiếp cận MT phổ biến trong khoảng 4 năm gần đây và đã cho ra các kết quả thực sự tốt, tới mức ngang hoặc hơn cả con người.

Cụ thể về kiến trúc thì NMT là sự kết hợp của 2 thành phân chính là Seq2Seq và Attention

Bài viết sử dụng source code tại: https://github.com/tensorflow/nmt với bộ dữ liệu IWSLT English-Vietnamese. Đây là bộ dữ liệu khá nhỏ chỉ nhằm mục đích training và kiểm thử mô hình, từ đó đưa ra các đánh giá và ảnh hưởng của các tham số tới mô hình. Nếu bạn đang muốn xây dựng hệ thống dịch cần độ chính xác cao thì bạn phải sử dụng bộ dữ liệu lớn hơn.

a. Sequence to Sequence

Ý tưởng chính của mô hình seq2seq là sử dụng bộ mã hóa (encoder) và giải mã (encoder) nối tiếp nhau để dịch 1 ngôn ngữ nguồn sang 1 ngôn ngữ đích

Hình 1: Kiến trúc tổng quan Encoder - Decoder. Nguồn: https://github.com/tensorflow/nmt

Cụ thể thì NMT sẽ đưa toàn bộ câu ở ngôn ngữ gốc vào Encoder để nén ý nghĩa của câu thành một vector gọi là context (hoặc thought), và đưa vector đó sang cho bộ giải mã (Decoder) để chuyển vector thành câu thuộc ngôn ngữ khác (ngôn ngữ đích) mang ý nghĩa tương ứng với câu ở ngôn ngữ gốc. Khởi đầu của dịch máy dựa trên việc chia nhỏ câu thành các cụm từ và dịch từng cụm từ đó sau đó ghép lại thành câu được dịch, việc dịch này sẽ không bao quát được toàn bộ câu và không hiểu được ý nghĩa của câu dịch tương ứng. NMT có thể giải quyết được vấn đề này bằng cách kết hợp 2 thành phần chính là Seq2Seq và Attention.

Cụ thể thì NMT sẽ đưa toàn bộ câu ở ngôn ngữ gốc vào Encoder để nén ý nghĩa của câu thành một vector gọi là context (hoặc thought), và đưa vector đó sang cho bộ giải mã (Decoder) để chuyển vector thành câu thuộc ngôn ngữ khác (ngôn ngữ đích) mang ý nghĩa tương ứng với câu ở ngôn ngữ gốc. Chúng ta có thể sử dụng RNN, gated recurrent unit (GRU) hoặc Long Short-term Memory (LSTM), để làm encoder và decoder.

Hình 2. Ví dụ cấu trúc NMT. Ở ví dụ cấu trúc NMT trình bày ở Hình 2, bộ encoder và decoder đều được cấu tạo từ 2 lớp RNN cùng chiều, chồng lên nhau, tương ứng với màu xanh dương và màu đỏ. Ở đây, ký hiệu <s>sử dụng để báo hiệu bắt đầu quá trình decode và ký hiệu</s>sử dụng để báo hiệu cho decoder dừng quá trình decode lại. Ngoài 2 lớp RNN chồng lên nhau ở 2 bộ encoder và decoder thì trong Hình 2 còn có sự xuất hiện của 3 lớp NN khác là:

  • • 1 lớp embedding ở encoder
  • • 1 lớp embedding, 1 lớp projection ở decoder (2 lớp này dùng chung bộ trọng số, chỉ ngược chiều).

Đây là các lớp NN embedding và ứng với mỗi ngôn ngữ sẽ có một bộ NN embedding riêng biệt. Trong khi embedding sẽ có vai trò chuyển một từ trong không gian từ điển (vocab) của ngôn ngữ, sang không gian vector (có chiều tương ứng với không gian của vector context). Thì projection ở decoder sẽ có vai trò chuyển ngược lại một từ thuộc không gian vector sang không gian từ điển (vocab) của ngôn ngữ.

Tại chiều không gian vector này thì encoder sẽ đóng vai trò nén ngữ nghĩa của một câu (tập hợp các từ thuộc không gian vector) của ngôn ngữ gốc thành một vector context và đưa sang cho decoder tiến hành giải nén vector context thành một câu (tập hợp các từ thuộc không gian vector) của ngôn ngữ đích.

Để cho thuận tiện trong việc tính toán và chuyển đổi qua lại thì các chiều không gian vector này sẽ đều có chung chiều là chiều của vector context (kích thước của mạng RNN).

b. Vấn đề của kiến trúc Seq2Seq

Hình 3: Vấn đề của kiến trúc Encoder - Decoder

Khi đưa 1 câu nguồn vào bộ decoder thì các từ sẽ đi vào các cell tuần tự theo thời gian, vector output của cell phía trước cùng với vector biểu diễn của từ tiếp theo sẽ là input của cell tiếp theo. Điều này dẫn đến output của cell cuối cùng cần phải chứa tất cả thông tin về câu nguồn cần dịch. Điều này dẫn đến việc vector output sẽ bị quá tải về mặt thông tin dẫn đến chứa đựng các thông tin không chính xác hoặc bị sai lệch của câu cần dịch.

c. Ý tưởng của cơ chế attention

Thay vì mong phần encoder nén toàn bộ thông tin, ta cho phép phần decoder được quan sát toàn bộ output của encoder.

Hình 4: Biểu diễn cơ chế attention. Nguồn: Bahdanau, et al.2014

• Việc encode toàn bộ thông tin từ source vào 1 vector cố định khiến việc mô hình khi thực hiện trên các câu dài (long sentence) không thực sự tốt, mặc dù sử dụng LSTM (BiLSTM, GRU) để khắc phục điểm yếu của mạng RNN truyền thống với hiện tượng Vanishing Gradient, nhưng như thế có vẻ vẫn chưa đủ, đặc biệt đối với những câu dài hơn những câu trong training data. Từ đó tác giả Bahdanau đề xuất 1 cơ chế cho phép mô hình có thể chú trọng vào những phần quan trọng (word liên kết với word từ source đến target), và thay vì chỉ sử dụng context layer được tạo ra từ layer cuối cùng của Encoder, tác giả sử dụng tất cả các output của từng cell qua từng timestep, kết hợp với hidden state của từng cell để "tổng hợp" ra 1 context vector (attention vector) và dùng nó làm đầu vào cho từng cell trong Decoder. Cách thức "tổng hợp" ở đây có thể được tạo ra bẳng nhiều cách Hãy quan sát 2 câu sau:

  • • This is a book
  • • Đó là một quyển sách Có thể thấy sự tương ứng giữa các từ ngữ giữa 2 câu: "this"-"đó" , "book"-"quyển sách". Như vậy việc dịch ra "quyển sách" sẽ phụ thuộc vào "book" hơn là "this", "is" hay "a". Ý tưởng cốt lõi của Attention:
  • • Thay vì sử dụng context vector duy nhất 1 lần tại input của decode, ta sử dụng mỗi context vector riêng biệt cho từng lần predict ra từ kế tiếp.
  • • Mỗi context vector được tổng hợp có trọng số từ tất cả các hidden state trong encode.

Nguồn: https://pgigioli.github.io/project/2017/11/15/abstractive-title-generation.html

2. phương pháp đánh giá mô hình Machine Translation (Bleu Score)

Bilingual Evaluation Understudy Score hay ngắn gọn là BLEU score là một thang điểm được dùng phổ biến trong đánh giá MT. BLEU được Kishore Papineni và cộng sự đề xuất lần đầu vào năm 2002 qua bài nghiên cứu "a Method for Automatic Evaluation of Machine Translation". BLEU được tính dựa trên số lượng n-grams giống nhau giữa câu dịch của mô hình (output) với các câu tham chiếu tương ứng (label) có xét tới yếu tố độ dài của câu. Thông thường n-grams được chọn là 4

BLEU là một phương pháp dùng để đánh giá chất lượng bản dịch được đề xuất bới IBM tại hội nghị ACL ở Philadelphie vào tháng 7-2001 [6]. Ý tưởng chính của phương pháp là so sánh kết quả bản dịch tự động bằng máy với một bản dịch chuẩn dùng làm bản đối chiếu. Việc so sánh được thực hiện thông qua việc thống kê sự trùng khớp của các từ trong hai bản dịch có tính đến thứ tự của chúng trong câu (phương pháp n-grams theo từ) [3]. Phương pháp này dựa trên hệ số tương quan giữa bản dịch máy và bản dịch chính xác được thực hiện bởi con người để đánh giá chất lượng của một hệ thống dịch. Việc đánh giá được thực hiện trên kết quả thống kê mức độ trùng khớp các n-grams (dãy ký tự gồm n từ hoặc ký tự) từ kho dữ liệu của kết quả dịch và kho các bản dịch tham khảo có chất lượng cao [5]. Giải thuật của IBM đánh giá chất lượng của hệ thống dịch qua việc trùng khớp của các n-grams đồng thời nó cũng dựa trên cả việc so sánh độ dài của các bản dịch. Công thức để tính điểm đánh giá của IBM là như sau:

Giá trị score đánh giá mức độ tương ứng giữa hai bản dịch và nó được thực hiện trên từng phân đoạn, ở đây phân đoạn được hiểu là đơn vị tối thiểu trong các bản dịch, thông thường mỗi phân đoạn là một câu hoặc một đoạn. Việc thống kê đồ trùng khớp của các n-grams dựa trên tập hợp các ngrams trên các phân đoạn, trước hết là nó được tính trên từng phân đoạn, sau đó tính lại giá trị này trên tất cả các phân đoạn. Đánh giá mô hình

Thực hiện training model NMT với 4 cặp tham số như sau:

    1. Optimizer SGD với learning rate 1.0
    1. Optimizer Adams với learning rate 0.001
    1. Optimizer SGD với learning rate 1.0 with attention
    1. Optimizer Adams với learning rate 0.001

Sau đây là kết quả của việc training (thực hiện trên CPU 8cores, 8Gb of RAM):

Optimizer Learning rate With attention Step time BLEU score Training time
SGD 1.0 No 0.51s 5.6 1h02’
ADAM 0.001 No 0.58s 4.3 1h17’
SGD 1.0 Yes (luong) 0.45s 19.2 1h43
ADAM 0.001 Yes(luong) 0.45s 18.2 2h05’

Đánh giá tổng quan kết quả mô hình với các siêu tham số khác nhau: • Về kết quả dịch:

  • NMT không sử dụng attention cho kết quả dịch kém hơn hẳn việc sử dụng attention
  • Sử dụng optimizer Adam cùng với learing rate = 0.001 cho kết quả kém hơn so với optimizer SGD với lr = 1 • Về quá trình training:
  • Việc sử dụng attention tốn thời gian training đáng kể hơn so với việc không sử dụng
  • Sử dụng optimizer Adam cùng với learing rate = 0.001 tốn thời gian training hơn so với optimizer SGD với lr = 1

3. Kết quả thực nghiệm:

Input: Thank you very much for your letter which arrived a few days ago. Output: Cảm ơn các bạn rất nhiều cho lá thư của bạn đến vài ngày

Hình 5: Biểu diễn ma trận attention

Input: I am writing to tell you about the weather in my country. Output: Tôi viết cho các bạn về những thời tiết trong đất nước tôi

Hình 6: Biểu diễn ma trận attention

References

[Machine Learning] Attention, Attention, Attention, ...! https://viblo.asia/p/machine-learning-attention-attention-attention-eW65GPJYKDO