Backpropagation in Translation
Lan truyền ngược trong Dịch thuật
Công ty nào đang ứng dụng Lan truyền ngược?
Bạn mở Google Translate (dịch vụ dịch thuật trực tuyến của Google), gõ một câu tiếng Việt dài và phức tạp, rồi nhận lại bản dịch tiếng Anh đọc được gần như tự nhiên. Trước năm 2016, cùng câu đó sẽ cho ra kết quả rời rạc, ngữ pháp sai, nghĩa lệch.
Google đã thay thế hệ thống dịch thống kê cũ bằng GNMT (Google Neural Machine Translation — hệ thống dịch máy thần kinh của Google) — một mạng nơ-ron sâu (deep neural network — mạng có nhiều tầng xử lý chồng lên nhau) được huấn luyện bằng lan truyền ngược (backpropagation — thuật toán tính gradient ngược từ đầu ra về đầu vào). Nhờ thuật toán này, mạng tự điều chỉnh hàng triệu tham số (parameter — các giá trị mà mô hình học được) để giảm sai lệch giữa bản dịch máy và bản dịch con người, cắt giảm lỗi dịch trung bình tới 60%.
Vấn đề công ty cần giải quyết
Dịch máy truyền thống dùng phương pháp thống kê: tách câu nguồn thành cụm từ, dịch riêng lẻ, rồi ghép lại. Ba vấn đề lớn: ngữ cảnh bị mất, ngữ pháp bị phá vỡ, từ hiếm bị bỏ qua.
Google cần xem toàn bộ câu nguồn như một đơn vị duy nhất, rồi sinh ra câu đích trọn vẹn. Mạng nơ-ron encoder-decoder (mã hóa-giải mã — kiến trúc gồm phần nén đầu vào và phần sinh đầu ra) có thể làm điều này. Nhưng chỉ khi có thuật toán huấn luyện hiệu quả để điều chỉnh đồng thời hàng triệu trọng số (weight — giá trị kết nối giữa các nút trong mạng). Thuật toán đó chính là lan truyền ngược.
Cách Lan truyền ngược giải quyết vấn đề
Mã hóa câu nguồn.Câu đầu vào được tách thành wordpiece (đơn vị từ con — chia từ thành mảnh nhỏ hơn) rồi đưa qua bộ mã hóa 8 tầng LSTM (Long Short-Term Memory — bộ nhớ dài-ngắn hạn, một loại mạng hồi quy), mỗi tầng 1.024 nút. Bộ mã hóa nén toàn bộ câu thành chuỗi vector ngữ nghĩa (véc-tơ biểu diễn ý nghĩa). Kết nối tắt (residual connection — đường tắt cho tín hiệu đi thẳng qua tầng) giúp gradient (đạo hàm chỉ hướng cập nhật) không bị triệt tiêu khi lan truyền ngược qua mạng sâu.
Giải mã câu đích.Bộ giải mã 8 tầng LSTM sinh từng từ con một. Cơ chế chú ý (attention — cho phép mô hình tập trung vào phần quan trọng) nối tầng dưới cùng giải mã với tầng trên cùng mã hóa, cho phép mô hình nhìn lại đúng phần câu nguồn khi sinh mỗi từ đích.
Tính hàm mất mát và lan truyền ngược.So sánh bản dịch dự đoán với bản dịch đúng bằng cross-entropy (hàm đo sai lệch giữa phân phối dự đoán và thực tế). Lan truyền ngược tính gradient theo từng trọng số — từ tầng giải mã cuối ngược về tầng mã hóa đầu. Gradient được cắt ngưỡng ở 5,0 (gradient clipping — giới hạn giá trị gradient để tránh bùng nổ). Hệ thống dùng Adam (thuật toán tối ưu thích ứng) trong 60.000 bước đầu rồi chuyển sang SGD (Stochastic Gradient Descent — giảm gradient ngẫu nhiên).
Tinh chỉnh bằng học tăng cường.Sau cross-entropy, mô hình được tinh chỉnh bằng phần thưởng GLEU (biến thể BLEU ở mức câu — thước đo chất lượng dịch). Hàm mục tiêu cuối = tổ hợp tuyến tính maximum likelihood (ước lượng hợp lý cực đại) + RL (Reinforcement Learning — học tăng cường) với α = 0,017. Bước này cũng dùng lan truyền ngược để cập nhật trọng số.
Nâng cấp lên Transformer (2020).Google thay bộ mã hóa LSTM bằng Transformer (kiến trúc chỉ dùng cơ chế chú ý, không dùng mạng hồi quy). Mô hình lai được huấn luyện bằng lan truyền ngược trên 108 ngôn ngữ, đạt +5 BLEU trung bình, +7 BLEU cho 50 ngôn ngữ ít tài nguyên (low-resource — ngôn ngữ có ít dữ liệu huấn luyện).
Con số thật
Nếu không có Lan truyền ngược, app sẽ ra sao?
Nếu không có lan truyền ngược, không thể huấn luyện mạng LSTM 16 tầng sâu — không có cách nào tính gradient qua hàng triệu trọng số. Google sẽ phải tiếp tục dùng dịch thống kê, với lỗi dịch cao hơn 60%.
Hơn 500 triệu người dùng Google Translate hàng ngày sẽ nhận bản dịch kém hơn đáng kể.