Bối cảnh và vấn đề nghiên cứu
Trong lĩnh vực Xử lý Ngôn ngữ Tự nhiên (Natural Language Processing - NLP), bài toán Trả lời Câu hỏi (Question Answering - QA) đóng vai trò then chốt nhằm đáp ứng nhu cầu tìm kiếm đáp án chính xác, nhanh chóng cho người dùng. Trước khi các mô hình học sâu phát triển mạnh mẽ, các hệ thống QA chủ yếu dựa trên kỹ thuật so khớp từ khóa, phương pháp thống kê hoặc các mô hình xử lý ngôn ngữ truyền thống như N-gram, RNN, LSTM và GRU. Mặc dù các mạng nơ-ron hồi tiếp đã phần nào cải thiện vấn đề phụ thuộc xa (long-term dependency), hiệu quả xử lý đối với các câu hỏi phức tạp hoặc yêu cầu ngữ cảnh sâu vẫn còn nhiều hạn chế. Sự ra đời của cơ chế Attention và kiến trúc Transformer (năm 2017) đã giải quyết triệt để rào cản xử lý tuần tự, cho phép tính toán song song toàn bộ câu văn và nắm bắt ngữ cảnh hai chiều hiệu quả.
Tại Việt Nam, các nghiên cứu và ứng dụng bài toán trả lời câu hỏi tự động dành riêng cho tập ngữ liệu tiếng Việt vẫn còn tương đối hạn chế về số lượng và tài nguyên công bố. Xuất phát từ bối cảnh đó, khóa luận tốt nghiệp ngành Kỹ thuật Dữ liệu / Công nghệ Thông tin tại Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh của nhóm tác giả Trần Quốc Tuấn và Nguyễn Lâm Sơn (dưới sự hướng dẫn của ThS. Quách Đình Hoàng) đã thực hiện đề tài nhằm nghiên cứu chuyên sâu về kiến trúc Transformer và triển khai thử nghiệm mô hình trả lời câu hỏi tự động trên văn bản tiếng Việt.
Nhiệm vụ và mục tiêu nghiên cứu của đề tài được xác định cụ thể như sau:
- Về mặt lý thuyết: Tìm hiểu chi tiết các thành phần cấu tạo, nguyên lý vận hành toán học của kiến trúc Transformer (gồm khối Encoder, Decoder, Positional Encoding, Multi-Head Attention, Add & Normalize, Feed Forward) và các mô hình ngôn ngữ kế thừa như BERT, PhoBERT.
- Về mặt ứng dụng: Áp dụng mô hình ngôn ngữ dựa trên Transformer kết hợp kỹ thuật tinh chỉnh (fine-tuning) trên tập dữ liệu tiếng Việt UIT-ViSQuAD; từ đó xây dựng hệ thống ứng dụng website hỗ trợ người dùng tải tệp văn bản và đặt câu hỏi để nhận câu trả lời tự động trích xuất từ ngữ cảnh.
Đối tượng và phạm vi nghiên cứu:
- Đối tượng nghiên cứu: Kiến trúc học sâu Transformer, cơ chế Self-Attention, mô hình biểu diễn ngôn ngữ tiếng Việt tiền huấn luyện PhoBERT (phiên bản PhoBERT-large), cùng các phương pháp xử lý văn bản tiếng Việt.
- Phạm vi nghiên cứu: Bài toán Machine Reading Comprehension (Đọc hiểu văn bản máy) dạng trích xuất câu trả lời (extractive QA) trên tập dữ liệu tiếng Việt UIT-ViSQuAD thu thập được (quy mô 19.240 cặp câu hỏi - đáp án).
Cơ sở lý thuyết và phương pháp nghiên cứu
Khóa luận xây dựng nền tảng lý luận dựa trên các công trình học sâu tiêu biểu trong NLP:
- Kiến trúc Transformer: Mô hình gồm hai khối chính là Encoder và Decoder. Khóa luận phân tích chi tiết cơ chế biểu diễn vị trí (Positional Encoding) sử dụng các hàm lượng giác Sin và Cos với các bước sóng khác nhau từ $2\pi$ đến 10.000 để bù đắp thông tin thứ tự từ bị thiếu do cơ chế tính toán song song. Khối chú ý tích vô hướng có tỷ lệ (Scaled Dot-Product Attention) vận hành trên ba ma trận Truy vấn (Query - $Q$), Khóa (Key - $K$) và Giá trị (Value - $V$):
$$\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V$$
- Cơ chế Multi-Head Attention: Mở rộng từ Scaled Dot-Product Attention bằng cách chiếu $Q, K, V$ qua nhiều không gian đặc trưng con độc lập, cho phép mô hình đồng thời quan sát thông tin từ nhiều khía cạnh ngữ cảnh khác nhau trước khi ghép nối (concatenate) và nhân với ma trận trọng số đầu ra.
- Kỹ thuật Add & Normalize: Sử dụng kết nối tắt (Skip Connection / Residual Connection) cộng với chuẩn hóa theo lớp (Layer Normalization) sau mỗi tầng con, giúp duy trì phân phối chuẩn của dữ liệu (trung bình bằng 0, độ lệch chuẩn bằng 1), ngăn chặn hiện tượng bùng nổ trọng số (weight explosion) và tăng tốc độ hội tụ.
- Mô hình BERT và PhoBERT: BERT (Bidirectional Encoder Representations from Transformers) huấn luyện biểu diễn ngữ cảnh hai chiều. Đối với tiếng Việt, khóa luận tiếp cận mô hình PhoBERT được huấn luyện trước trên 20 GB ngữ liệu văn bản tiếng Việt (gồm 1 GB Wikipedia tiếng Việt và 19 GB báo chí đã lọc trùng lặp từ tập 50 GB, tương đương 145 triệu câu và gần 3 tỷ tokens), kết hợp công cụ phân đoạn từ RDRSegmenter của VnCoreNLP để giải quyết ranh giới âm tiết và từ ghép đặc thù trong tiếng Việt.
Phương pháp nghiên cứu kết hợp giữa nghiên cứu lý thuyết tổng hợp, nghiên cứu thực nghiệm tối ưu hóa mô hình và xây dựng ứng dụng phần mềm hoàn chỉnh.
Nguồn dữ liệu sử dụng là tập dữ liệu UIT-ViSQuAD (Vietnamese University Information Technology SQuAD) do Trường Đại học Công nghệ Thông tin - ĐHQG TP.HCM xây dựng từ 5.109 đoạn văn bản thuộc 174 bài viết Wikipedia tiếng Việt. Tập dữ liệu mà nhóm tác giả thu thập và sử dụng trong nghiên cứu gồm 19.240 cặp câu hỏi - đáp án dạng JSON, chứa các trường thông tin: id, question, context, text (nội dung câu trả lời) và start_position (vị trí ký tự bắt đầu của câu trả lời trong đoạn văn).
Thiết kế và triển khai hệ thống
Quy trình tiền xử lý dữ liệu
Dữ liệu dạng chuỗi văn bản được đưa qua quy trình xử lý chuyên biệt cho tiếng Việt:
- Kiểm tra dữ liệu rác: Đánh giá các giá trị Null và NA trên toàn bộ tập dữ liệu (kết quả kiểm tra không ghi nhận mẫu rỗng).
- Tách từ và gán nhãn: Sử dụng thư viện
VnCoreNLP để thực hiện phân đoạn từ (Word Segmentation), gán nhãn từ loại (POS Tagging), nhận dạng thực thể (NER) và phân tích cú pháp phụ thuộc.
- Phân tích độ dài: Thống kê độ dài đoạn văn bản cho thấy 97% các đoạn văn có độ dài dưới 256 tokens. Nhóm tác giả chọn ngưỡng cắt ngắn chuỗi đầu vào tối đa là 256 tokens để tối ưu hóa tài nguyên phần cứng.
- Chuẩn hóa nhãn câu trả lời: Xây dựng hàm
checkAns để định vị lại vị trí câu trả lời trong ngữ cảnh nếu có sai lệch ký tự; hàm checkTempAns để phát hiện và sửa chữa các trường hợp câu trả lời bị cắt cụt đầu/đuôi do quá trình tách từ; lớp VnCoreSquad (kế thừa từ SquadProcessor) và lớp đối tượng SquadExample để đóng gói dữ liệu đầu vào chuẩn hóa.
Tập dữ liệu 19.240 mẫu được phân chia theo tỷ lệ:
- Tập huấn luyện (
train_vi): 80%
- Tập kiểm thử (
test_vi): 10%
- Tập xác thực (
val_vi): 10%
| Tham số cấu hình |
Giá trị thiết lập |
Ràng buộc kỹ thuật / Mục đích |
| Mô hình nền tảng |
PhoBERT-large |
Tối ưu hóa biểu diễn ngữ cảnh chuyên sâu cho tiếng Việt |
Độ dài chuỗi tối đa (max_seq_length) |
256 tokens |
Bao phủ 97% dữ liệu, hạn chế tràn bộ nhớ đệm |
Bước trượt phân đoạn (doc_stride) |
81 tokens |
Đảm bảo không mất thông tin khi chia nhỏ văn bản dài |
Độ dài câu hỏi tối đa (max_query_length) |
81 tokens |
Xử lý trọn vẹn câu hỏi có độ dài trung bình và dài |
Kích thước batch (batch_size) |
16 |
Chiếm dụng 14.5 GB / 15.0 GB RAM GPU trên môi trường Google Colab |
Số lượng epoch (num_epochs) |
4 |
Tối ưu theo giới hạn thời gian chạy và độ hội tụ |
| Thuật toán tối ưu hóa |
AdamW |
learning_rate = 3e-5, epsilon = 1e-8 |
| Chiến lược dừng sớm (Early Stopping) |
3 epochs |
Dừng nếu hiệu suất trên tập xác thực không tăng sau 3 epoch liên tiếp |
Kiến trúc và triển khai ứng dụng Website
Hệ thống được đóng gói để phục vụ người dùng cuối với các thành phần:
- Môi trường phát triển: Huấn luyện trên nền tảng Google Colab sử dụng PyTorch và Hugging Face Transformers; lưu trữ và quản lý tài nguyên qua Google Drive.
- Backend & Triển khai: Xây dựng dịch vụ xử lý trên môi trường máy cục bộ (local) và đóng gói container hóa thông qua Docker (
docker build, docker run).
- Giao diện người dùng (Frontend): Thiết kế 3 phân hệ chức năng:
- Trang Upload File: Tiếp nhận tệp tài liệu văn bản từ người dùng và kiểm tra đúng định dạng tệp tải lên.
- Trang Đặt câu hỏi: Cung cấp khung nhập câu hỏi tương tác trực tiếp dựa trên nội dung tệp đã tải.
- Trang Trả lời câu hỏi: Hiển thị câu trả lời do mô hình PhoBERT trích xuất từ ngữ cảnh, đi kèm nút thao tác đặt câu hỏi mới hoặc chọn tệp mới.
Nội dung chính theo từng chương
Chương 1: Tổng quan
Chương 1 thiết lập cơ sở đặt vấn đề về sự cần thiết của bài toán Trả lời Câu hỏi tự động trong kỷ nguyên bùng nổ thông tin. Tác giả phân tích bước chuyển dịch công nghệ từ các hệ thống đối sánh từ khóa/N-gram sang các mô hình chuỗi (RNN, LSTM, GRU), đồng thời chỉ ra tính cấp thiết của việc nghiên cứu cơ chế Attention và kiến trúc Transformer cho ngôn ngữ tiếng Việt. Chương này xác định rõ mục tiêu lý thuyết, mục tiêu ứng dụng, phạm vi dữ liệu và phương pháp thực nghiệm của đề tài.
Chương 2: Kiến trúc Transformer
Chương 2 trình bày toàn diện cấu trúc toán học của Transformer. Tác giả đi sâu vào từng khối chức năng:
- Cơ chế nhúng từ (Input Embedding) và mã hóa vị trí (Positional Encoding) qua hàm sin/cos.
- Khối Encoder với cơ chế Self-Attention và Feed Forward Network.
- Khối Decoder và cơ chế Masked Multi-Head Attention nhằm ngăn chặn việc rò rỉ thông tin từ các từ ở vị trí tương lai trong quá trình sinh chuỗi.
- Phân tích chi tiết sự khác biệt giữa Batch Normalization và Layer Normalization trong xử lý độ dài chuỗi biến đổi.
Chương 3: Mô hình BERT
Chương 3 tập trung vào mô hình biểu diễn ngôn ngữ hai chiều BERT do Google phát triển, giải thích cơ chế tiền huấn luyện (Pre-training) với các tác vụ Masked Language Model (MLM), Next Sentence Prediction (NSP) và cơ chế tinh chỉnh (Fine-tuning) cho Downstream Tasks. Tác giả phân tích sâu về mô hình PhoBERT: chỉ ra hai điểm hạn chế cốt lõi của các mô hình BERT đa ngôn ngữ khi áp dụng cho tiếng Việt (kích thước dữ liệu tiếng Việt quá nhỏ và sự khác biệt giữa âm tiết với từ ghép), từ đó chứng minh sự cần thiết của việc sử dụng 20 GB dữ liệu văn bản tiếng Việt và công cụ RDRSegmenter của VnCoreNLP.
Chương 4: Xây dựng mô hình áp dụng kiến trúc Transformer cho bài toán trả lời câu hỏi
Đây là chương trọng tâm về thực nghiệm. Tác giả mô tả chi tiết:
- Phân tích tập dữ liệu UIT-ViSQuAD (cấu trúc JSON, phân bố độ dài văn bản).
- Quy trình tổ chức mã nguồn, thư viện (
transformers, torch, vncorenlp) và luồng tiền xử lý văn bản tiếng Việt qua các hàm tự định nghĩa (VnCoreNLP1, checkAns, checkTempAns, _create_examples).
- Thiết lập pipeline tinh chỉnh mô hình PhoBERT-large với bộ tối ưu hóa AdamW.
- Xây dựng hàm đánh giá hiệu năng tự động trên tập kiểm thử và tập xác thực.
Chương 5: Ứng dụng website trả lời câu hỏi
Chương 5 mô tả thiết kế hệ thống phần mềm ứng dụng thực tế. Tác giả trình bày cấu trúc cây thư mục mã nguồn (backend, frontend), các dòng lệnh thực thi môi trường local, quy trình đóng gói container bằng Docker (Dockerfile), và các luồng giao diện người dùng (tải tài liệu, kiểm tra lỗi định dạng tệp, giao diện nhập câu hỏi và hiển thị kết quả trích xuất đáp án).
Chương 6: Tổng kết về đồ án
Chương cuối cùng tổng kết các kết quả đạt được về mặt nắm vững lý thuyết Transformer/BERT/PhoBERT, xây dựng thành công pipeline tinh chỉnh mô hình QA tiếng Việt và hoàn thiện website demo. Đồng thời, chương này chỉ ra các mặt hạn chế về hạ tầng phần cứng và đề xuất các định hướng cải tiến trong tương lai.
Kết quả và đóng góp
Kết quả đánh giá mô hình
Hiệu năng của mô hình trả lời câu hỏi được đánh giá thông qua hai độ đo tiêu chuẩn:
- Độ chính xác tuyệt đối (Exact Match - EM): Tỷ lệ phần trăm các câu trả lời dự đoán trùng khớp hoàn toàn 100% từng ký tự và ranh giới từ so với đáp án chuẩn.
- Điểm F1 (F1-Score): Đo lường mức độ chồng chéo token giữa câu trả lời dự đoán và đáp án thực tế thông qua hai chỉ số thành phần:
- Precision: Tỷ lệ token dự đoán đúng trên tổng số token được mô hình sinh ra: $\text{Precision} = \frac{\text{Num}(TP)}{\text{Num}(TP) + \text{Num}(FP)}$
- Recall: Tỷ lệ token dự đoán đúng trên tổng số token của đáp án chuẩn: $\text{Recall} = \frac{\text{Num}(TP)}{\text{Num}(TP) + \text{Num}(FN)}$
- F1-Score: Trung bình điều hòa giữa Precision và Recall: $\text{F1} = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}}$
Quá trình huấn luyện PhoBERT-large được giám sát tự động: mô hình có kết quả tốt nhất trên tập xác thực (val_vi) được lưu lại sau mỗi epoch và dừng sớm nếu không có tiến triển sau 3 epoch.
Đóng góp của đề tài
- Hệ thống hóa lý thuyết: Cung cấp tài liệu phân tích toán học và cấu trúc kỹ thuật của kiến trúc Transformer, cơ chế Self-Attention, cơ chế mã hóa vị trí và mô hình ngôn ngữ PhoBERT tiếng Việt.
- Tối ưu hóa pipeline xử lý tiếng Việt: Đề xuất và triển khai thành công quy trình xử lý dữ liệu SQuAD cho tiếng Việt sử dụng
VnCoreNLP, kết hợp các hàm kiểm tra sai lệch ranh giới từ (checkAns) và sửa lỗi cắt cụt chuỗi (checkTempAns).
- Hiện thực hóa sản phẩm ứng dụng: Xây dựng hoàn chỉnh một website hỏi đáp văn bản có khả năng chạy cục bộ hoặc triển khai linh hoạt qua Docker, trích xuất trực tiếp câu trả lời từ tài liệu do người dùng tải lên.
Hạn chế và hướng nghiên cứu tiếp
Dựa trên các nội dung được nhóm tác giả nêu trong văn bản, đề tài còn tồn tại một số hạn chế:
- Tài nguyên tính toán: Việc huấn luyện phụ thuộc vào GPU miễn phí trên Google Colab dẫn đến giới hạn dung lượng RAM (chiếm tới 14.5 GB / 15 GB), buộc phải giới hạn
batch_size ở mức 16 và số lượng epoch dừng ở mức 4, chưa thể mở rộng khảo sát các siêu tham số lớn hơn.
- Giới hạn độ dài ngữ cảnh: Ngưỡng
max_seq_length bị cố định ở mức 256 tokens, khiến các văn bản hoặc câu hỏi có cấu trúc quá dài phải cắt bớt, có thể ảnh hưởng đến các đoạn văn bản phức tạp.
- Quy mô dữ liệu: Khóa luận thực hiện trên tập trích xuất 19.240 cặp câu hỏi - đáp án của UIT-ViSQuAD, chưa mở rộng sang các miền dữ liệu chuyên ngành đặc thù ngoài Wikipedia.
Hướng nghiên cứu tiếp theo được tác giả định hướng:
- Mở rộng huấn luyện mô hình trên các cụm máy chủ phần cứng mạnh hơn để nâng cao số lượng epoch và kích thước batch.
- Nghiên cứu cơ chế trượt văn bản linh hoạt hơn cho các tài liệu dài nhiều trang.
- Tối ưu hóa và triển khai ứng dụng web lên các nền tảng đám mây công cộng phục vụ nhiều người dùng đồng thời.
Giá trị tham khảo
Khóa luận là tài liệu tham khảo hữu ích cho sinh viên, giảng viên và các kỹ sư thuộc ngành Công nghệ Thông tin, Khoa học Dữ liệu, Trí tuệ Nhân tạo đang nghiên cứu về Xử lý Ngôn ngữ Tự nhiên tiếng Việt:
- Phần lý thuyết kiến trúc (Chương 2 và Chương 3): Phù hợp cho người học cần nắm bắt bản chất toán học của cơ chế Self-Attention, Positional Encoding và sự khác biệt giữa các biến thể BERT.
- Phần tiền xử lý và tinh chỉnh mã nguồn (Chương 4): Cung cấp mẫu mã nguồn thực tế (PyTorch, Transformers, VnCoreNLP) có giá trị cao trong việc xử lý bài toán Đọc hiểu máy (MRC) và Question Answering trên tập dữ liệu tiếng Việt dạng SQuAD.
- Phần đóng gói triển khai (Chương 5): Cung cấp cấu hình Docker và luồng backend/frontend cho việc hiện thực hóa mô hình AI thành ứng dụng web.
Câu hỏi thường gặp
1. Khóa luận sử dụng mô hình ngôn ngữ nào làm nền tảng để tinh chỉnh cho bài toán trả lời câu hỏi?
Tác giả sử dụng mô hình PhoBERT phiên bản PhoBERT-large được tải từ Hugging Face. Đây là mô hình được huấn luyện trước trên 20 GB văn bản tiếng Việt và tối ưu hóa phân đoạn từ bằng công cụ VnCoreNLP.
2. Tập dữ liệu UIT-ViSQuAD được xử lý và phân chia như thế nào trong khóa luận?
Tập dữ liệu gồm 19.240 cặp câu hỏi - câu trả lời được phân tích độ dài văn bản để chọn ngưỡng cắt max_seq_length = 256 tokens (chiếm 97% độ dài phổ biến). Toàn bộ tập dữ liệu được chia theo tỷ lệ 80% cho tập huấn luyện (train_vi), 10% cho tập xác thực (val_vi) và 10% cho tập kiểm thử (test_vi).
3. Hàm checkAns và checkTempAns trong khóa luận có chức năng gì?
Hàm checkAns dùng để kiểm tra xem đoạn văn bản câu trả lời có trùng khớp chính xác với đoạn văn gốc hay không; nếu không khớp, hàm sẽ tìm kiếm vị trí lân cận để lấy câu trả lời gần đúng nhất. Hàm checkTempAns dùng để phát hiện và sửa chữa câu trả lời bị cắt cụt (thiếu từ ở đầu hoặc cuối) do quá trình phân đoạn từ gây ra.
4. Các siêu tham số chính trong quá trình huấn luyện mô hình PhoBERT-large được thiết lập ra sao?
Quá trình huấn luyện sử dụng thuật toán tối ưu hóa AdamW với tốc độ học learning_rate = 3e-5, hệ số epsilon = 1e-8, batch_size = 16, num_epochs = 4, doc_stride = 81 và max_query_length = 81, chạy trên môi trường Google Colab chiếm dụng 14.5 GB / 15 GB RAM GPU.
5. Ứng dụng website trả lời câu hỏi được xây dựng với các chức năng chính nào?
Hệ thống website cho phép người dùng tải tệp tài liệu văn bản lên hệ thống (có kiểm tra lỗi định dạng), nhập câu hỏi trực tiếp liên quan đến tài liệu, hiển thị câu trả lời được mô hình tự động trích xuất từ văn bản, và hỗ trợ chuyển đổi tệp hoặc đặt câu hỏi mới.
Kết luận
Khóa luận tốt nghiệp của sinh viên Trần Quốc Tuấn và Nguyễn Lâm Sơn đã nghiên cứu chi tiết cơ sở lý thuyết của kiến trúc Transformer và mô hình PhoBERT trong xử lý ngôn ngữ tự nhiên. Đề tài đã xây dựng thành công quy trình tiền xử lý ngữ liệu tiếng Việt, tinh chỉnh mô hình PhoBERT-large trên tập dữ liệu UIT-ViSQuAD và đóng gói hoàn chỉnh ứng dụng website trả lời câu hỏi tự động. Công trình là tài liệu tham khảo có giá trị về mặt học thuật và thực nghiệm cho các nghiên cứu tiếp theo về bài toán đọc hiểu văn bản tiếng Việt.