Như đã trình bày trong bài Sequence to Sequence Model, Seq2seq sử dụng Encoder để tạo ra một vector representation lưu trữ thông tin của input sequence. Sau đó sử dụng Decoder để chuyển vector representation này thành output sequence. Với Machine Translation thì cả Encoder và Decoder đều được tạo thành từ RNN cell (LSTM hoặc GRU). Về mặt lý thuyết thì LSTM và GRU có thể lưu trữ thông tin của một sequence có độ dài lớn. Tuy nhiên, trong thực tế việc sử dụng một vector representation thường không thể lưu trữ được toàn bộ thông tin của input sequence. Do đó, trong một số bài báo khoa học có trình bày một vài phương pháp giúp tăng độ chính xác cho hệ thống này như:

– Sử dụng Multi-layer với Bi-directional RNN

– Đảo ngược thứ tự của input sequence. Ví dụ như câu: ‘I enjoy eating’ thì thứ tự timestep được chuyển thành ‘eating enjoy I’

– Sử dụng input nhiều lần (feeding twice) nhưng vẫn giữ nguyên output (xem thêm tại đây)

Tuy nhiên, phương pháp được sử dụng nhiều nhất và làm tăng đáng kể độ chính xác của các hệ thống là sử dụng Attention Mechanism. Phương pháp này được giới thiệu vào năm 2014 trong bài báo Neural Machine Translation by Jointly Learning to Align and Translate. Hình dưới đây cho thấy kết quả so sánh giữa hệ thống thông thường với hệ thống sử dụng Attention

Nguyên tắc hoạt động chung của Attention Mechanism là tại mỗi Decoding Step, Decoder sẽ chỉ tập chung vào phần liên quan trong input sequence thay vì toàn bộ input sequence. Mức độ tập chung này được thiết lập bởi Attention weights như mô tả trong hình dưới đây:

Như vậy, tại mỗi Decoding step, Decoder nhận 3 đầu vào là: Hidden state của decoding step trước, Output của step trước và Attention vector. Attention vector chứa Attention weight của từng từ trong input sequence. Từ nào chứa nhiều thông tin cần thiết cho việc decoding thì sẽ có giá trị weight lớn hơn và tổng các weights của tất cả các từ trong input sequence phải bằng 1. Giá trị Attention weights này được học thông qua quá trình huấn luyện với việc sử dụng input sequence và hidden state của decoding step trước (xem thêm tại đây). Mỗi Decoding step có một giá trị Attention vector riêng, do đó với một input sequence có chiều dài ‘n’ và output sequence có chiều dài ‘m’, ta phải thực hiện việc tính toán ‘n * m’ Attention weights. Điều này là có thể chấp nhận được trong các hệ thống Word-based do có số lượng từ không quá nhiều. Tuy nhiên với các hệ thống Character-based thì việc sử dụng Attention sẽ yêu cầu một tài nguyên xử lý lớn.

Hình dưới đây mô tả mối liên hệ giữa Output tại từng Decoding step với các từ trong input sequence. Từ nào có độ sáng càng cao thì có Attention weight càng lớn, cho thấy khi thực hiện Decoding thì hệ thống sẽ chủ yếu tập chung chủ yếu vào các từ này.

Tháng Tư 8, 2019
ITechSeeker