![XÂY DỰNG HỆ THỐNG TRẢ LỜI CÂU HỎI RAG TRÊN TIẾNG VIỆT - NTTU CHATBOT](https://123docz.net/image/doc_normal.png)
Đang tải... (xem toàn văn)
Thông tin tài liệu
Công nghệ đang ngày càng phát triển qua từng năm, dẫn đến việc tra cứu thông tin của con người cũng thay đổi theo, từ những phương pháp tra cứu dữ liệu đơn giản bằng cách tìm kiếm theo các từ trong câu cho đến những phương pháp phức tạp như áp dụng học máy để trích xuất dữ liệu chính xác hơn dựa trên ngữ nghĩa của các từ đó. Sự đột phá trong lĩnh vực tra cứu thông tin được tái định nghĩa lại sau sự ra đời của ChatGPT một mô hình ngôn ngữ được OpenAI phát triển đã làm cách mạng hoá việc tìm kiếm, làm cho việc tìm kiếm thông tin được biểu diễn dưới dạng một chatbot hỏi đáp, nhờ vậy mô hình này đã giúp giải đáp các thông tin theo một cách thức giống con người hơn. Tuy nhiên ChatGPT cũng tồn tại những hạn chế của một mô hình ngôn ngữ, nhất là khả năng bị lỗi thời thông tin (outdated information), dẫn chứng là thời điểm ra mắt mô hình này chỉ cập nhật kiến thức đến năm 2021. Hiện nay, tất cả những vấn đề này đã được khắc phục nhờ phương pháp mở miền dữ liệu, giúp mô hình có thể cập nhật thông tin từ nhiều nguồn theo thời gian thực. Ở đề tài này ta sẽ mô phỏng lại hệ thống đó, bằng việc xây dựng một hệ thống hỏi đáp có thể truy cập dữ liệu từ nội quy học vụ được liệt kê trong sổ tay sinh viên của trường Đại học Nguyễn Tất Thành và nguồn thông tin từ Bách Khoa toàn thư Wikipedia. Để xây dựng được hệ thống này ta cần tìm hiểu về cách các mô hình ngôn ngữ lớn hoạt động, các phương pháp trích xuất thông tin liên quan, xử lý dữ liệu, cách triển khai mô hình trên server và làm thế nào để đánh giá hiệu quả của một hệ thống hỏi đáp. Bằng việc đón đầu xu thế chung về công nghệ AI tạo sinh, đề tài cũng đánh mạnh vào quá trình xử lý dữ liệu, một thứ cốt lõi quyết định độ hiệu quả của mô hình ngôn ngữ trong việc trích xuất thông tin và trả lời câu hỏi, từ đó có thể áp dụng kỹ thuật này trong nhiều lĩnh vực khác nhau có thể là việc tạo một hệ thống tra cứu tài liệu nội bộ, hỗ trợ tư vấn bán hàng hoặc là một trợ thủ đắc lực giúp việc học tập hiệu quả hơn.
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC NGUYỄN TẤT THÀNH KHOA CÔNG NGHỆ THÔNG TIN
KHÓA LUẬN TỐT NGHIỆP ĐỀ TÀI:
XÂY DỰNG HỆ THỐNG TRẢ LỜI CÂU HỎI MIỀN MỞ TRÊN TIẾNG VIỆT
Giảng viên hướng dẫn : TS VÕ THỊ HỒNG THẮM Sinh viên thực hiện : NGUYỄN THÀNH PHÁT MSSV : 2000006273
Khoá : 2020
Ngành/ chuyên ngành : KHOA HỌC DỮ LIỆU
Tp HCM, tháng 01 năm 2024
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC NGUYỄN TẤT THÀNH KHOA CÔNG NGHỆ THÔNG TIN
KHÓA LUẬN TỐT NGHIỆP ĐỀ TÀI:
XÂY DỰNG HỆ THỐNG TRẢ LỜI CÂU HỎI MIỀN MỞ TRÊN TIẾNG VIỆT
Giảng viên hướng dẫn : TS VÕ THỊ HỒNG THẮM Sinh viên thực hiện : NGUYỄN THÀNH PHÁT MSSV : 2000006273
Khoá : 2020
Ngành/ chuyên ngành : KHOA HỌC DỮ LIỆU
Tp HCM, tháng 01 năm 2024
Trang 3LỜI CẢM ƠN
Mọi thành tựu, không bao giờ đến từ một cá nhân duy nhất Em xin chân thành tri ân và bày tỏ lòng biết ơn sâu sắc đến Cô T.S Võ Thị Hồng Thắm (Khoa Công Nghệ Thông Tin – Trường Đại Học Nguyễn Tất Thành) người đã nhiệt tình cố vấn và cho em những lời khuyên bổ ích trong hành trình em hoàn thiện bài báo cáo này cũng như những kiến thức nền tảng vững chắc mà cô đã tận tâm truyền tải từ những học phần chuyên ngành Em cũng muốn gửi lời cảm ơn đến những thầy cô trong khoa đã đồng hành và truyền dạy từ những ngày đầu tiên tại trường
Cảm ơn những người bạn cùng khoá K20 vì sự gắn bỏ và đồng hành từ những ngày đầu nhập học cho đến bây giờ và chúng ta đã có những kỉ niệm tuổi trẻ vô cùng đáng nhớ cùng nhau Thật vinh hạnh khi được những người bạn thú vị như các bạn đồng hành đã cho mình nhiều góc nhìn mới mẻ, nhìn thấy được những hoài bảo, sự nhiệt huyết và khát khao từ những người trẻ tài giỏi cùng lứa tuổi như các bạn đã giúp mình có thêm nhiều động lực để ngày càng hoàn thiện bản thân
Cuối cùng, cảm ơn cha mẹ đã là một chỗ dựa vững chắc, sự hỗ trợ đắc lực cho con có thể an tâm trong hành trình đi tìm tri thức và xây dựng sự nghiệp cho riêng mình Cảm ơn tất cả những người thầy cô giáo, những người vô danh đã giúp cho việc học tập của em trở nên đáng nhớ và ý nghĩa hơn
Trang 4LỜI MỞ ĐẦU
Công nghệ đang ngày càng phát triển qua từng năm, dẫn đến việc tra cứu thông tin của con người cũng thay đổi theo, từ những phương pháp tra cứu dữ liệu đơn giản bằng cách tìm kiếm theo các từ trong câu cho đến những phương pháp phức tạp như áp dụng học máy để trích xuất dữ liệu chính xác hơn dựa trên ngữ nghĩa của các từ đó Sự đột phá trong lĩnh vực tra cứu thông tin được tái định nghĩa lại sau sự ra đời của ChatGPT một mô hình ngôn ngữ được OpenAI phát triển đã làm cách mạng hoá việc tìm kiếm, làm cho việc tìm kiếm thông tin được biểu diễn dưới dạng một chatbot hỏi đáp, nhờ vậy mô hình này đã giúp giải đáp các thông tin theo một cách thức giống con người hơn Tuy nhiên ChatGPT cũng tồn tại những hạn chế của một mô hình ngôn ngữ, nhất là khả năng bị lỗi thời thông tin
(outdated information), dẫn chứng là thời điểm ra mắt mô hình này chỉ cập nhật kiến thức
đến năm 2021 Hiện nay, tất cả những vấn đề này đã được khắc phục nhờ phương pháp mở miền dữ liệu, giúp mô hình có thể cập nhật thông tin từ nhiều nguồn theo thời gian thực Ở đề tài này ta sẽ mô phỏng lại hệ thống đó, bằng việc xây dựng một hệ thống hỏi đáp có thể truy cập dữ liệu từ nội quy học vụ được liệt kê trong sổ tay sinh viên của trường Đại học Nguyễn Tất Thành và nguồn thông tin từ Bách Khoa toàn thư Wikipedia Để xây dựng được hệ thống này ta cần tìm hiểu về cách các mô hình ngôn ngữ lớn hoạt động, các phương pháp trích xuất thông tin liên quan, xử lý dữ liệu, cách triển khai mô hình trên server và làm thế nào để đánh giá hiệu quả của một hệ thống hỏi đáp Bằng việc đón đầu xu thế chung về công nghệ AI tạo sinh, đề tài cũng đánh mạnh vào quá trình xử lý dữ liệu, một thứ cốt lõi quyết định độ hiệu quả của mô hình ngôn ngữ trong việc trích xuất thông tin và trả lời câu hỏi, từ đó có thể áp dụng kỹ thuật này trong nhiều lĩnh vực khác nhau có thể là việc tạo một hệ thống tra cứu tài liệu nội bộ, hỗ trợ tư vấn bán hàng hoặc là một trợ thủ đắc lực giúp việc học tập hiệu quả hơn
Trang 5NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
1 Hình thức (Bố cục, trình bày, lỗi, các mục, hình, bảng, công thức, phụ lục, )
Trang 6NHẬN XÉT CỦA GIẢNG VIÊN PHẢN BIỆN
1 Hình thức (Bố cục, trình bày, lỗi, các mục, hình, bảng, công thức, phụ lục, )
Giáo viên phản biện
(Ký tên, ghi rõ họ tên)
Trang 7DANH MỤC CÁC TỪ VIẾT TẮT xii
CHƯƠNG 1: Giới thiệu chung về đề tài 1
1.1 Giới thiệu để tài mục tiêu 1
1.2 Phương pháp đề tài 1
1.3 Lý do chọn đề tài 1
1.4 Mục tiêu nghiên cứu 2
1.5 Đối tượng nghiên cứu 2
1.6 Bố cục đề tài 3
CHƯƠNG 2: Cơ sở lý luận về vấn đề nghiên cứu 4
2.1 Giới thiệu về Hệ thống Trả lời câu hỏi 4
2.2 Hệ thống Trả lời câu hỏi miền mở là gì? 5
2.3 Cơ chế hoạt động của Open-Domain Question Answering 5
2.4 Tìm kiếm mức độ tương tự văn bản 6
2.4.1 Thuật toán TF-IDF 6
2.4.2 Thuật toán BM25 7
2.4.3 Tìm kiếm tương đồng dựa trên vector nhúng từ 8
Trang 82.5 Lịch sử hình thành mô hình ngôn ngữ 8
2.5.1 Word Embedding 9
2.5.2 Mạng Nơ-ron Hồi tiếp truyền thống (RNN) 11
2.5.3 Mạng Nơ-ron Hồi tiếp hiện đại (LSTM và GRU) 13
2.5.4 Kiến trúc Mã hóa - Giải mã (Encoder - Decoder) 15
2.5.5 Cơ chế Tập trung (Attention) 17
2.5.6 Kiến trúc mạng Transformer 18
2.5.7 Mô hình BERT 23
2.5.8 Mô hình GPT 27
2.6 Lượng tử hóa mô hình (Quantization model) 30
CHƯƠNG 3: Xây dựng hệ thống trình bày 34
3.1 Tổng quan về ý tưởng hệ thống 34
3.2 Chuẩn bị dữ liệu 35
3.2.1 Làm sạch dữ liệu 36
3.2.2 Khám phá dữ liệu 40
3.3 Xây dựng lõi back-end 42
3.3.1 Xây dựng vector database 43
3.3.2 Xây dựng Retriver 44
3.4 Lựa chọn mô hình ngôn ngữ lớn 46
3.4.1 Lượng tử hóa mô hình 48
3.4.2 Huấn luyện mô hình 49
3.4.3 Triển khai mô hình 53
3.5 Xây dựng front-end 54
CHƯƠNG 4: Thực nghiệm và đánh giá 57
Trang 10DANH MỤC CÁC BẢNG BIỂU
Bảng 2.1: Thông số các phiên bản của GPT 30
Bảng 2.2: So sánh kết quả lượng tử trên độ đo Perplexity (PPL) 33
Bảng 3.1: So sánh trước và sau khi lượng tử hoá vietcuna-7b-v3 49
Bảng 3.2: So sánh trước và sau khi lượng tử hoá zephyr-7b-beta 49
Bảng 3.3: Siêu tham số cài đặt cho training 51
Bảng 4.1: Kết quả hệ thống chạy mô hình vietcuna-7b-v3-AWQ 59
Bảng 4.2: Kết quả hệ thống chạy mô hình vietcuna-7b-v3 59
Bảng 4.3: Kết quả hệ thống chạy mô hình PhoGPT-7B5-Instruct 60
Bảng 4.4: Kết quả hệ thống chạy mô hình vietzephyr-7b-8bit-lora 60
Bảng 4.5: Tính điểm theo đánh giá con người qua 15 câu hỏi trên 2 mô hình 62
Bảng 4.6: Kết quả BERT Score 63
Bảng 4.7: Kết quả dùng con người đánh giá 63
Trang 11DANH MỤC CÁC BẢNG HÌNH
Hình 2.1: Minh họa cho Hệ thống Trả lời câu hỏi 4
Hình 2.2: Cơ chế hoạt động của một hệ thống Information Retrieval 5
Hình 2.3: Minh họa về kỹ thuật nhúng từ 9
Hình 2.9: Cấu trúc một tế bào GRU 15
Hình 2.10: Các kiểu kiến trúc của mạng hồi tiếp 16
Hình 2.11: Kiến trúc mô hình seq2seq 16
Hình 2.12: Mô tả về cơ chế tập trung (attention) 17
Hình 2.13: Kiến trúc mô hình Transformer 18
Hình 2.14: Scaled Dot-Product Attention 19
Hình 2.15: Multi-head Attention 20
Hình 2.16: Cấu trúc khối Encoder Transformer 22
Hình 2.17: Cấu trúc khối Decoder Transformer 23
Hình 2.18: Kiến trúc mô hình BERT 24
Hình 2.19: Quá trình huấn luyện BERT 25
Hình 2.20: Quá trình tinh chỉnh BERT 27
Hình 2.21: Kiến trúc mô hình GPT 28
Hình 2.22: Minh họa việc cắt float-32 thành float-16 31
Hình 2.23: So sánh việc ép kiểu bit hoàn toàn và giữ lại 1% tham số quan trọng 32
Hình 2.24: Scale trọng số trước khi lượng tử hóa 32
Hình 3.1: Kiến trúc của hệ thống hỏi đáp 34
Hình 3.2: Sổ tay sinh viên 2023 - 2024 36
Hình 3.3: Ví dụ về một mẩu dữ liệu trong database 37
Hình 3.4: Sử dụng ChatGPT để tăng cường dữ liệu (Câu hỏi) 38
Trang 12Hình 3.5: Sử dụng ChatGPT để tăng cường dữ liệu (Trả lời) 38
Hình 3.6: Mô tả cấu trúc dữ liệu 146 câu hỏi đáp sinh viên 39
Hình 3.7: Mô tả dữ liệu vilm/OpenOrca-Viet 39
Hình 3.8: Mô tả việc gộp dữ liệu thành cấu trúc hỏi đáp 40
Hình 3.9: Top 20 từ vựng có tần suất xuất hiện cao nhất 41
Hình 3.10: Top 20 cặp từ vựng (bigram) có tần suất xuất hiện cao nhất 41
Hình 3.11: Top 20 bộ ba từ vựng (trigram) có tần suất xuất hiện cao nhất 42
Hình 3.12: : Sơ đồ hoạt động của backend 43
Hình 3.13: Qdrant vector database 43
Hình 3.14: Cấu hình Qdrant Vector Database 44
Hình 3.15: Cấu trúc Retriver nâng cao kèm bộ lọc Rerank 45
Hình 3.16: Mô hình BERT Re-ranker 45
Hình 3.17: Bảng đánh giá các LLM Tiếng Việt dựa trên các task bằng con người 46
Hình 3.18: Mô hình vilm/vietcuna-7b-v3 trên HuggingFace 47
Hình 3.19: Mô hình vilm/PhoGPT-7B5-Instruct trên HuggingFace 47
Hình 3.20: Hiệu năng mô hình Zephyr-7b-beta 48
Hình 3.21: Phương pháp LoRA 50
Hình 3.22: Giá trị loss trên tập test trước khi huấn luyện 51
Hình 3.23: Tham số loss tại các steps khi training 52
Hình 3.24: Biểu đồ về sự suy giảm loss của mô hình khi huấn luyện 52
Hình 3.25: Test một câu hỏi nhỏ 53
Hình 3.26: Thư viện vLLM 53
Hình 3.27: Sơ đồ thiết kế giao diện front-end 54
Hình 3.28: Giao diện trang chủ NTTU Chatbot 55
Hình 3.29: Giao diện trò chuyện 55
Hình 3.30: Giao diện FAQs 56
Hình 3.31: Giao diện trang phản hồi góp ý 56
Hình 4.1: Mô tả phương pháp BERTScore 57
Hình 4.2: Biểu đồ Histogram sự phân bố Precision, Recall và F1 (vietcuna-7b-v3-AWQ) 59
Trang 13Hình 4.3: Biểu đồ Histogram sự phân bố Precision, Recall và F1 (vietcuna-7b-v3) 60
Hình 4.4: Biểu đồ Histogram sự phân bố Precision, Recall và F1 (PhoGPT-7B5-Instruct) 60
Hình 4.5: Biểu đồ Histogram sự phân bố Precision, Recall và F1 lora) 61
(vietzephyr-7b-8bit-Hình 4.6: Biểu đồ cột trực quan điểm số con người đánh giá 62
Hình Phụ Lục 1: Trang chủ NTTU Chatbot 69
Hình Phụ Lục 2: Giao diện hỏi đáp miền NTTU (1) 69
Hình Phụ Lục 3: Giao diện hỏi đáp miền NTTU (2) 70
Hình Phụ Lục 4: Giao diện trích dẫn nguồn tham khảo NTTU 70
Hình Phụ Lục 5: Giao diện hỏi đáp miền Wikipedia 71
Hình Phụ Lục 6: Giao diện trích dẫn nguồn tham khảo Wikipedia 71
Hình Phụ Lục 7: Giao diện FAQs 72
Hình Phụ Lục 8: Giao diện báo lỗi/góp ý 72
Trang 14IR Information Retrieval LoRA Low-Rank Adaptation LSTM Long short term memory MLM Masked Language Modeling NLP Natural Language Processing NSP Next Sentence Prediction NTTU Nguyen Tat Thanh University ODQA Open-Domain Question Answering PPL Perplexity
Trang 15CHƯƠNG 1: Giới thiệu chung về đề tài 1.1 Giới thiệu để tài mục tiêu
Trong thời đại công nghệ thông tin phát triển mạnh mẽ, nhu cầu truy vấn thông tin ngày càng tăng cao Đặc biệt, với sự phát triển của trí tuệ nhân tạo (AI), các hệ thống trả lời câu
hỏi (question answering - QA) đang trở nên phổ biến và được ứng dụng trong nhiều lĩnh
vực khác nhau như giáo dục, y tế, kinh doanh,v.v Đón đầu xu thế đó đề tài này tập trung nghiên cứu phát triển hệ thống được trình bày như sau
Tên đề tài: Xây dựng hệ thống và mô hình trả lời câu hỏi miền mở trên Tiếng Việt
Mục tiêu đề tài: Xây dựng được một hệ thống có khả năng trả lời các câu hỏi dựa trên
những thông tin trích xuất được từ tài liệu và văn bản được lưu trữ trong hệ thống cơ sở dữ liệu Có thể triển khai thành một ứng dụng chatbot có khả năng tương tác thông qua giao diện và có khả năng thêm dữ liệu từ người dùng
1.2 Phương pháp đề tài
Đề tài sử dụng những kiến thức đã học trong lĩnh vực học máy và học sâu để xây dựng, đào tạo và áp dụng một số phương pháp thống kê nhằm kiểm thử, đánh giá mức độ hiệu quả của mô hình Đồng thời cũng áp dụng những công nghệ bao gồm:
Đề tài sử dụng các công nghệ như sau:
Thư viện học máy, học sâu: Pytorch, Hugging Face, Langchain Triển khai Back-end: vLLM, FastAPI
Triển khai Front-end: ReactJS, TailwindCSS, HTML
1.3 Lý do chọn đề tài
Trong tiếng Việt, sử dụng mô hình ngôn ngữ làm hệ thống trả lời câu hỏi là một lĩnh vực nghiên cứu còn khá mới mẻ Các hệ thống trả lời câu hỏi trên tiếng Việt hiện nay vẫn còn gặp nhiều hạn chế, đặc biệt là về độ chính xác và khả năng đáp ứng các câu hỏi mở, mang tính suy luận, sáng tạo
Trang 16Do đó, việc nghiên cứu và xây dựng hệ thống QA trên tiếng Việt là một vấn đề cấp thiết, có ý nghĩa quan trọng trong việc đáp ứng nhu cầu truy vấn thông tin của người dùng tiếng Việt Giải quyết vấn đề tổng hợp thông tin từ nhiều nguồn một cách nhanh chóng, hỗ trợ con người trong các tác vụ tìm kiếm thông tin, giải đáp thắc mắc và kiểm tra kiến thức Giúp con người đưa ra quyết định một cách dễ dàng nhờ những gợi ý của hệ thống Đón đầu xu hướng trí tuệ nhân tạo và xử lý dữ liệu trong thời đại ngày nay
1.4 Mục tiêu nghiên cứu
Một số mục tiêu bao gồm việc tìm hiểu và đánh giá được độ hiệu quả của các mô hình học sâu trong lĩnh vực xử lý chuỗi dữ liệu liên tục và xử lý ngôn ngữ tự nhiên, cách huấn luyện và triển khai mô hình trong thực tiễn Mục tiêu chính của đề tài này là xây dựng một hệ thống trả lời câu hỏi miền mở trên tiếng Việt có độ chính xác cao, khả năng đáp ứng tốt các câu hỏi mở, mang tính suy luận, sáng tạo Cụ thể, hệ thống này cần đạt được các mục tiêu bao gồm:
• Hệ thống có thể trả lời được các câu hỏi mở, mang tính suy luận, sáng tạo một cách chính xác, đầy đủ và hữu ích
• Hệ thống có khả năng xử lý được nhiều loại câu hỏi mở khác nhau, bao gồm câu hỏi về sự kiện, câu hỏi về khái niệm, câu hỏi về mối quan hệ, câu hỏi về ý kiến,
1.5 Đối tượng nghiên cứu
Đối tượng nghiên cứu của đề tài này bao gồm:
• Các phương pháp và kỹ thuật xử lý ngôn ngữ tự nhiên (NLP) hiện đại, • Các mạng học sâu phục vụ các tác vụ NLP như Transformer, BERT, GPT
• Các công nghệ tối ưu, lượng tử hoá mô hình và triển khai mô hình lên môi trường server cloud
• Dữ liệu cần trích xuất, phương pháp tìm kiếm văn bản tương tự • Các phương pháp đánh giá mô hình ngôn ngữ lớn
Trang 171.6 Bố cục đề tài
Đề tài bao gồm 5 chương:
• Chương 1: Giới thiệu chung về đề tài
• Chương 2: Cơ sở lý luận về vấn đề nghiên cứu • Chương 3: Xây dựng hệ thống trình bày
• Chương 4: Thực nghiệm và đánh giá • Chương 5: Kết luận và hướng phát triển
Trang 18CHƯƠNG 2: Cơ sở lý luận về vấn đề nghiên cứu 2.1 Giới thiệu về Hệ thống Trả lời câu hỏi
Từ lâu con người luôn tìm cách trả lời những câu hỏi xung quanh mình, từ thực nghiệm đến kết luận chúng ta đã đúc kết những tri thức ấy qua nhiều năm và tạo nên một kho tàng đồ sộ những thông tin được lưu trữ dưới dạng giấy bút và ngày nay chúng được số hóa và lưu trữ gọn nhẹ trên những thiết bị phần cứng hiện đại
Hình 2.1: Minh họa cho Hệ thống Trả lời câu hỏi
Do sự đồ sộ của nguồn thông tin được tăng dần theo cấp số nhân qua từng năm, một hệ thống tổng hợp thông tin và trả lời câu hỏi là vô cùng cần thiết Sơ khai nhất có lẽ là sự xuất hiện của Google hoặc gần đây là ChatGPT đã làm cách mạng hóa việc tìm kiếm thông tin, giúp việc tìm kiếm thông tin trở nên đơn giản và dễ dàng hơn Vì vậy ta có thể hiểu tác vụ này có định nghĩa như sau:
Trả lời câu hỏi (Question-Answering) là một tác vụ nhằm hiểu ngôn ngữ tự nhiên, trích
xuất và truy xuất thông tin, mục tiêu là tạo ra một hệ thống trả lời câu hỏi tự động dựa trên
khả năng đọc hiểu của máy tính (machine reading comprehension), cho phép người dùng
đặt câu hỏi bất kỳ và nhận được câu trả lời phù hợp từ một tập dữ liệu lớn và đa dạng [1] Đây là một lĩnh vực thu hút nhiều nhà nghiên cứu trong lĩnh vực trí tuệ nhân tạo trong những năm gần đây bởi sự phát triển mạnh mẽ của các mô hình dữ liệu lớn dựa trên khả năng đọc hiểu của máy tính, được ứng dụng trong nhiều lĩnh vực từ y tế, giáo dục, tài chính,.v.v
Trang 19Hệ thống trả lời câu hỏi thường có 2 loại bao gồm : trả lời câu hỏi miền đóng (closed
domain) và trả lời câu hỏi miền mở (open domain)
2.2 Hệ thống Trả lời câu hỏi miền mở là gì?
Khác với một hệ thống Trả lời câu hỏi miền đóng chỉ cho phép trả lời câu hỏi trong một lĩnh vực nhất định ví dụ như luật pháp hoặc tài chính thì hệ thống Trả lời câu hỏi miền mở
có thể trả lời câu hỏi ở bất kỳ lĩnh vực nào miễn là trong hệ thống dữ liệu có lưu trữ về nó
Về định nghĩa ta có thể hiểu như sau: Trả lời câu hỏi miền mở (Open-Domain Question
Answering) là một tác vụ giúp trả lời câu hỏi đầu vào dựa trên cơ chế Truy xuất thông tin
(Information Retrieval - IR) với cơ sở dữ liệu có sẵn, hệ thống IR này sẽ tổng hợp và lựa chọn ra những tài liệu thông tin văn bản có mức độ liên quan cao trong hệ thống lưu trữ
(cơ sở dữ liệu) và trả về với sắp xếp theo mức độ liên quan đó Từ những thông tin có được
mô hình sẽ dùng một số kỹ thuật Xử lý ngôn ngữ tự nhiên (NLP) để trích xuất ra một phần thông tin khả năng cao là câu trả lời cho câu hỏi [2]
2.3 Cơ chế hoạt động của Open-Domain Question Answering
Như ta đã tìm hiểu thì một hệ thống trả lời câu hỏi miền mở sẽ bao gồm 2 thành phần chính:
Retriever (Người tha mồi) và Reader (Người chắt lọc)
Hình 2.2: Cơ chế hoạt động của một hệ thống Information Retrieval
● Thành phần Retriever sẽ có nhiệm vụ trích xuất những tài liệu có liên quan (theo
top-K) trong hệ thống lưu trữ và sắp xếp nó theo mức độ liên quan từ cao đến thấp
Trang 20Thông thường phương pháp được dùng để tìm kiếm theo mức độ tương tự văn bản
(text similarity) sẽ dựa trên TF-IDF, MB25 hoặc dense vector
● Thành phần Reader trích xuất những thông tin văn bản lấy được từ Retriever để
lấy ra đoạn hoặc câu có khả năng cao là đáp án cho câu hỏi Thông thường sẽ là 2
biến giá trị số index của điểm bắt đầu và kết thúc của đáp án trong văn bản Lúc này thông tin văn bản sẽ gọi là ngữ cảnh (context) để mô hình Reader dựa vào Mô hình
thường được dùng cho Reader là BERT, RoBERTa, DeBERTa, XLM,.v.v Ngoài ra, thay vì dùng Reader một số hệ thống hiện đại sẽ thay thế Reader bằng một Generator như GPT-2, BLOOM hoặc LLaMA [3] Giúp câu trả lời mang tính chất con người hơn kết hợp với những thông tin mà mô hình đã được huấn luyện trước đó Trong đề tài này, một Generator sẽ được sử dụng thay cho Reader
2.4 Tìm kiếm mức độ tương tự văn bản
Để có thể tạo ra một Retriever phục vụ tìm kiếm những tài liệu (document) có liên quan đến câu truy vấn (query) ở đầu vào Ta cần một thuật toán có thể đánh giá mức độ tương tự văn bản (text similarity), thuật toán này sẽ dò xem những tài liệu và văn bản nào có khả
năng cao chứa đựng nội dung liên quan truy vấn đó Phổ biến nhất có lẽ là 2 thuật toán IDF và BM25
TF-2.4.1 Thuật toán TF-IDF
Trong truy xuất thông tin, TF-IDF (term frequency–inverse document frequency) là một kỹ
thuật giúp đánh giá, phản ánh mức độ quan trọng của một từ trong văn bản [8]
Trong đó TF (term frequency) được tính là tần suất xuất hiện của một từ trong văn bản
Được tính theo công thức
Trang 21Tiếp tục ta có IDF (inverse document frequency) Là tần số nghịch của một từ trong tập văn bản (corpus)
𝐼𝐷𝐹(𝑡, 𝐷) = 𝑙𝑜𝑔|𝐷|
|𝑑 𝜖 𝐷 ∶ 𝑡 𝜖 𝑑|
Trong đó:
● |𝐷|: là tổng số văn bản trong tập mẫu D
● |𝑑 𝜖 𝐷 ∶ 𝑡 𝜖 𝑑|: là số lượng văn bản có chứa từ t
Từ 2 chỉ số TF và IDF tính được, nhân lại sẽ cho ra được giá trị của TF-IDF như sau
𝑇𝐹𝐼𝐷𝐹(𝑡, 𝑑, 𝐷) = 𝑇𝐹(𝑡, 𝑑) × 𝐼𝐷𝐹(𝑡, 𝐷)
Một từ có giá trị TF-IDF cao chứng tỏ sự xuất hiện của từ đó trong tài liệu được bù đắp bởi số lượng những tài liệu có chứa từ đó, có nghĩa là từ có giá trị này cao sẽ xuất hiện nhiều trong văn bản này và xuất hiện ít hơn trong văn bản khác Giúp việc lọc ra văn bản có liên quan đến từ khóa tìm kiếm trở nên chính xác hơn
Trang 22Để tính 𝐼𝐷𝐹(𝑞𝑖) ta dựa theo công thức sau:
𝐼𝐷𝐹(𝑞𝑖) = 𝑙𝑛 (𝑁 − 𝑛(𝑞𝑖) + 0.5
𝑛(𝑞𝑖) + 0.5+ 1)
Trong đó:
● 𝑁 là tổng số lượng văn bản
● 𝑛(𝑞𝑖) là số lượng văn bản chứa từ 𝑞𝑖
Tuy nhiên phương pháp tính này có một nhược điểm đó là đối với những từ vựng phổ biến
ví dụ như: là, và, hoặc, nhưng, của,.v.v Nếu nó xuất hiện nhiều hơn một nửa số văn bản
trong tập, giá trị của 𝐼𝐷𝐹(𝑞𝑖) sẽ âm, vì vậy trong thực tế chúng ta cần đưa những từ phổ biến này vào một danh sách loại trừ để có thể lược bỏ, điều này tương tự việc loại bỏ 𝐼𝐷𝐹 có giá trị âm hoặc ta sẽ quy định một số 𝜀 nào đó đại diện cho mức 𝐼𝐷𝐹 thấp nhất có thể chấp nhận được để so sánh, tức là chỉ lấy nếu giá trị 𝐼𝐷𝐹 lớn hơn 𝜀, còn lại sẽ bằng 𝜀 Tuy nhiên BM25 cũng có những hạn chế của nó khi chỉ tìm kiếm theo xác suất xuất hiện nhưng không thể tìm dựa trên ý nghĩa của nó, vì vậy người ta đã sử dụng học sâu để tăng khả năng tìm kiếm thông qua một phương pháp tìm kiếm tương tự bằng cách nhúng từ
2.4.3 Tìm kiếm tương đồng dựa trên vector nhúng từ
Bằng cách trích xuất đặc trưng của từ vựng hoặc một câu thành các vector embedding, nếu biểu diễn vector này trên không gian nhiều chiều ta có thể tính toán được khoảng cách giữa vector của câu tìm kiếm với các vector nội dung trong database từ đó có thể truy xuất được tài liệu có khoảng cách ngắn nhất, tức mức độ liên quan cao nhất Việc tính toán khoảng cách giữa 2 vector có thể dùng công thức toán cấp 3 như cosine để thực hiện Tuy nhiên vấn đề ở chỗ ta phải tìm được một mô hình có khả năng trích xuất đặc trưng đủ tốt để chuyển đổi văn bản thành các vector có thể biểu diễn được ngữ nghĩa Thông thường một model BERT sử dụng cấu trúc Transformer Encoder sẽ là một lựa chọn phù hợp để sử dụng cho việc chuyển đổi này
2.5 Lịch sử hình thành mô hình ngôn ngữ
Trang 23Một mô hình ngôn ngữ (language model) là một mô hình có thể gán được xác suất, khả
năng xuất hiện của một phần tử từ trong một câu Dưới góc nhìn toán học thì một câu được biểu diễn dưới dạng một chuỗi liên tục kèm theo những từ mà ở đó xác suất, khả năng một từ xuất hiện của từ đó trong một chuỗi biết trước Ta có thể hình dung một câu là một chuỗi 𝑃 như sau:
𝑃(𝑤1, 𝑤2, , 𝑤𝑛)
= 𝑃(𝑤1)𝑃(𝑤2|𝑤1)𝑃(𝑤3|𝑤1, 𝑤2) 𝑃(𝑤𝑛|𝑤1, , 𝑤𝑛−1) = ∏ 𝑃(𝑤𝑖|𝑤1:𝑖−1)
Ví dụ: 𝑃("𝐼 𝑙𝑜𝑣𝑒 𝑐𝑎𝑡") = 𝑃(𝐼) × 𝑃(𝑙𝑜𝑣𝑒|𝐼) × 𝑃(𝑐𝑎𝑡|𝐼 𝑙𝑜𝑣𝑒)
Để tính được xác xuất các từ được sinh ra ta cần biểu diễn chuỗi văn bản đầu vào sang dạng
số, việc chuyển văn bản thành số gọi là encode (mã hóa) hay còn gọi là nhúng từ (word
Hình 2.3: Minh họa về kỹ thuật nhúng từ
Trong quá khứ, việc chuyển văn bản thành vector (tokenizer) sẽ thông qua các phương
pháp mang tính chất đơn giản như phương pháp túi từ (Bag-of-Words - BOW), chỉ việc
Trang 24trích xuất sự xuất hiện của các từ trong văn bản để lấy làm đặc trưng hoặc phương pháp
TF-IDF chỉ việc lấy tần suất xuất hiện của từ trong câu làm đặc trưng của từ đó Tuy nhiên,
hiện tại hai phương pháp này không còn hiệu quả và người ta dần thay thế nó bằng các mô hình phức tạp hơn áp dụng học sâu để có thể biểu diễn nhiều thông tin trong một từ hơn,
từ đó kỹ thuật nhúng từ ra đời, một phương pháp nhúng từ hiệu quả cần phải thỏa mãn 2
Một đại diện tiêu biểu của kỹ thuật nhúng từ được sử dụng phổ biến là word2vec ra đời
2013 bởi Tomas Mikolov với mục tiêu biểu diễn embedding từ xuống một không gian tối
ưu hơn rất nhiều so với số lượng từ có trong từ điển Mô hình word2vec là một mạng
nơ-ron có 3 tầng, mô hình sẽ lấy từ mục tiêu và các từ ngữ cảnh của từ đó để làm đầu vào và
đầu ra, tùy thuộc vào cách ta sử dụng thông thường sẽ có 2 kiểu mô hình word2vec:
● Skip-gram: Lấy từ mục tiêu làm đầu vào và các từ xung quanh nó (từ ngữ cảnh)
làm đầu ra mong muốn để huấn luyện mạng nơ ron
● CBOW (Continuous Bag of Words): Lấy từ mục tiêu làm đầu ra dự đoán từ đầu vào là các từ xung quanh nó để huấn luyện mạng
Mục tiêu cuối cùng của mô hình word2vec là lấy đầu ra biểu diễn của một từ để làm đầu
vào cho một mô hình ngôn ngữ, một mô hình xử lý chuỗi dữ liệu liên tục
Ví dụ để encode được câu: "𝐼 𝑙𝑜𝑣𝑒 𝑐𝑎𝑡" có 3 từ ta cần đưa qua một vector embedding
(véc-tơ nhúng từ), một vector embedding có chiều dài là số lượng từ trong câu tối đa mà ta muốn
đưa vào mô hình ví dụ 1024 làm tiêu chuẩn, thì lúc này đầu ra sau khi encode sẽ là 3 × 1024 = 3072 tham số, đó là chỉ với 3 từ Trong thực tế số lượng từ đầu vào có thể là hàng trăm hoặc thậm chí hàng nghìn gần với độ dài vector embedding Để một mô hình học các đặc trưng với số lượng tham số lớn như vậy với ngôn ngữ thì mạng nơ ron truyền thống là không khả thi Do đó ta cần mô mô hình có khả năng chia sẻ tham số lẫn nhau trong việc xử lý chuỗi liên tục Để xây dựng một mô hình ngôn ngữ lớn (LLM) cho tác vụ
Sinh văn bản (Text generation) phục vụ cho việc xây dựng mô hình hỏi đáp, ta cần tìm hiểu
Trang 25về khởi nguồn của các mạng xử lý chuỗi liên tục, từ đó làm tiền đề cho việc phát triển mô hình này
2.5.2 Mạng Nơ-ron Hồi tiếp truyền thống (RNN)
Mạng nơ-ron Hồi tiếp (Recurrent Neural Network (RNN)) là một họ các mạng có khả năng
xử lý dữ liệu dạng chuỗi bao gồm một chuỗi các giá trị 𝑥(1), , 𝑥(𝑡) với thời gian 𝒕 Ý
tưởng của mạng này là sử dụng cách thức dùng chung tham số (parameter sharing) giữa các phần khác nhau của mô hình đơn cử là việc lưu lại thông tin thông qua biến tiềm ẩn
(hidden state), nơi kết nối giữa các nút để tạo thành đồ thị có hướng dọc theo một trình tự
thời gian[4]
Hình 2.4: Cấu trúc một tế bào RNN
Một tế bào (cell) của RNN sẽ nhận 2 tham số đầu vào tại thời điểm t hiện tại là 𝑥(𝑡)và ℎ(𝑡−1) Tham số ℎ ở đây chính là trạng thái ẩn (hidden state) mà chúng ta đã nhắc đến phía
trên, tế bào sẽ duy trì bộ nhớ thông qua trạng thái ẩn này, sau đó sẽ nhân vô hướng với
trọng số (weight) và hàm kích hoạt ϕ (activation) để cho ra đầu ra ℎ(𝑡) Công thức lan truyền thuận ở đây là:
ℎ(𝑡) = 𝜙1(𝑏 + 𝑊 ℎ(𝑡−1)+ 𝑈𝑥(𝑡)) ⇔ ℎ(𝑡) = 𝑡𝑎𝑛ℎ (𝑏 + 𝑊 ℎ(𝑡−1)+ 𝑈𝑥(𝑡))
Trong đó U, W là ma trận trọng số và b là hệ số tự do (bias) Ta có thể giả định 𝜙1là một hàm 𝑡𝑎𝑛ℎ(𝑥) Lúc này ta đã có một mạng nơ-ron hồi duy đơn giản (SimpleRNN) với đầu
Weight & Activation
Trang 26ra 𝑦(𝑡)và ℎ(𝑡)là tương đương nhau Tuy vậy, giả sử bài toán toán là dự đoán từ hoặc ký tự, giá trị đầu ra là rời rạc, để cho ra được 𝑦(𝑡) ta cần thêm một bước là nhân ℎ(𝑡) với một ma
trận trọng số V rồi đưa qua một hàm kích hoạt 𝜙2
𝑦(𝑡) = 𝜙2(𝑐 + 𝑉 ℎ(𝑡)) ⇔ 𝑦(𝑡) = 𝑠𝑜𝑓𝑡𝑚𝑎𝑥 (𝑐 + 𝑉 ℎ(𝑡))
Tại đây, c cũng là một hệ số bias khác Lúc này 𝜙2 là một hàm 𝑠𝑜𝑓𝑡𝑚𝑎𝑥(𝑥)
Hình 2.5: Cấu trúc một tế bào RNN đầu ra rời rạc
Cứ như vậy, nhân này sẽ tiếp tục theo quá trình đó xuyên suốt độ dài chuỗi Tế bào nhân
này được dàn trải (unfolding) ra, ta sẽ có một mạng có hình dáng như sau
Hình 2.6: Cấu trúc mạng RNN [5]
Weight & Activation
Trang 27Trạng thái ẩn ht là một bản sao của đầu ra dự đoán yt , ở tế bào đầu tiên của mạng thì trạng thái ẩn thường sẽ mang giá trị là 0 Mạng RNN có ưu điểm là nó có thể hoạt động bất kể chiều dài chuỗi đầu vào mà không tăng số lượng tham số bởi ta chỉ sử dụng duy nhất một
nhân với ma trận trọng số W, U, V này để cập nhật qua các phần tử của chuỗi Như hình
ví dụ trên ta thấy thì thực chất chỉ có một nhân được lặp qua 3 lần cho 3 phần tử liên tiếp chứ không phải 3 nhân tế bào như nhiều người vẫn lầm tưởng Ví dụ về bài toán dịch máy
sử dụng mạng RNN như sau
Hình 2.7: Mạng Nơ-ron Hồi tiếp cho bài toán dịch máy [5]
Tuy nhiên mạng RNN cũng tồn đọng một vấn đề đó chính là vấn đề bộ nhớ ngắn hạn
(Short-term memory) tức là nếu đầu vào là một chuỗi càng dài, càng về sau trạng thái ẩn sẽ
không còn nhiều thông tin về điểm bắt đầu của nó nữa Vấn đề này còn có một tên gọi khác
là phụ thuộc xa (long-term dependencies), tức là tính tích một chuỗi dài các ma trận, giá trị gradient sau khi lan truyền qua nhiều giai đoạn có xu hướng tiêu biến (thường gặp) hoặc bùng nổ (ít khi xảy ra, có thể giải quyết bằng cắt gradient (clipping gradient)) Do đó kiến
trúc mạng LSTM và GRU ra đời để giải quyết hạn chế này, thường là giải quyết việc đạo hàm tiêu biến
2.5.3 Mạng Nơ-ron Hồi tiếp hiện đại (LSTM và GRU)
Sự khác biệt đầu tiên so với RNN là các mạng hồi tiếp hiện đại như LSTM (Long
Short-Term Memory) và GRU (gated recurrent unit) có các cổng (gate) với cơ chế kiểm soát
trạng thái ẩn, nghĩa là mạng sẽ có thể quyết định được những thông tin nào cần nhớ (cập
Trang 28nhật) và những thông tin nào có thể quên đi (xóa) Ý tưởng cốt lõi của mô hình LSTM là
sử dụng các vòng tự lặp để tạo ra các đường ống mà ở đó gradient có thể lan truyền trong một thời gian dài Trong một tế bào LSTM có tính truy hồi nội tại (một vòng tự lặp) thay vì truy hồi bên ngoài như RNN và sử dụng hệ thống các cổng kiểm soát dòng thông tin
Tổng cộng sẽ có 3 cổng bao gồm: cổng vào (input gate), cổng quên (forget gate), cổng ra
(output gate)
Hình 2.8: Cấu trúc một tế bào LSTM
Cổng quên 𝑓𝑡 (forget gate) sẽ quyết định xem sẽ giữ bao nhiêu phần trăm (%) thông tin từ
trạng thái tế bào phía trước Cổng vào 𝑖𝑡 (input gate) quyết định sẽ giữ lại bao nhiêu phần trăm (%) thông tin từ bộ nhớ mới để tính vào trạng thái tế bào hiện tại Cổng ra 𝑜𝑡 (output
gate) sẽ quyết định bao nhiêu % thông tin từ trạng thái tế bào hiện tại ra ngoài trạng thái
ẩn (hidden state) ở đầu ra Cả 3 cổng này đều dùng 𝑠𝑖𝑔𝑚𝑜𝑖𝑑(𝑥) làm hàm kích hoạt Bộ
nhớ mới 𝐶𝑡 sẽ kết hợp giữa thông tin của đầu vào hiện tại với trạng thái ẩn của bước trước đó rồi dùng hàm 𝑡𝑎𝑛ℎ(𝑥) làm hàm kích hoạt, ta có thể coi đây như một mạng nơ-ron nhỏ Ngoài ra, LSTM có thêm 1 trạng thái ẩn nữa là ct, , ct+n để sử dụng nội bộ sẽ vận chuyển
thông tin xuyết suốt các bước thời gian (time-step) Nhờ vậy, mạng LSTM thường sẽ cho
ra kết quả tốt hơn rất nhiều so với RNN truyền thống, mô hình cho thấy khả năng học các phụ thuộc dài hạn tốt hơn Về sau này mạng GRU ra đời như là một phiên bản tối giản hơn của LSTM
Trang 29Hình 2.9: Cấu trúc một tế bào GRU
Với chỉ có 2 cổng và loại bỏ trạng thái ct đã giúp cho hiệu xuất của mô hình tăng lên đáng kể, ít tính toán hơn, nhưng việc lựa chọn giữa LSTM hay GRU vẫn nên dựa vào bài toán cụ thể để đánh giá Vì vậy ta cần kiểm thử cả 2 cấu trúc để đưa ra quyết định tối ưu Tuy vậy so với RNN, thì LSTM và GRU vẫn chậm hơn do có nhiều bước tính toán hơn, và một vấn đề nữa là cả 3 mạng này đều theo cơ chế tuần tự để tính toán Việc tính tuần tự
như vậy sẽ khiến cho mô hình bị chậm đi, một số mạng hiện đại như Transformer với cơ chế tập trung (attention) giúp ta có thể song song hóa làm tăng tốc độ tính toán của mô hình nhờ việc tận dụng tốt các luồng (threads) để sử dụng tối đa sức mạnh phần cứng
2.5.4 Kiến trúc Mã hóa - Giải mã (Encoder - Decoder)
Bài toán dịch máy thường sử dụng mô hình Chuỗi sang chuỗi (sequence to sequence
(seq2seq)) [9], hoặc có cách gọi khác cho dạng của nó là nhiều-nhiều (many-to-many) tức
ta sẽ sử dụng toàn bộ đầu ra từ đầu vào tương ứng, mô hình này cũng được dùng cho bài toán Nhận dạng giọng nói (speech recognition) Ngoài ra còn có 3 kiến trúc khác là một-nhiều (one-to-many) thường dùng cho bài toán sinh từ (text generation), nhiều-một (many-
to-one) thường dùng cho phân loại văn bản (text classification) và một cái tên nữa của
nhiều-nhiều gọi là Mã hóa-giải mã (encoder-decoder) được ứng dụng rất rộng rãi để xử lý
các chuỗi đầu vào với độ dài khác nhau, chi tiết nằm ở [6]
Trang 30Hình 2.10: Các kiểu kiến trúc của mạng hồi tiếp
Cơ chế encoder và decoder hoạt động bằng cách encoder sẽ xử lý lần lượt từng giá trị vector đặc trưng của phần tử trong chuỗi đầu vào (vector sinh ra từ lớp embedding tương
ứng với đặc trưng của từ) và cố gắng nhét toàn bộ thông tin đầu vào đó vào trong một vectơ ngữ cảnh (context vector) có độ dài cố định Sau đó bộ mã hóa sẽ chuyển vector này sang
bộ giải mã để giải mã đưa ra kết quả
Hình 2.11: Kiến trúc mô hình seq2seq
Cấu trúc Encoder
Ví dụ chuỗi đầu vào 𝑥1, , 𝑥𝑇, trong đó 𝑥𝑡 là từ vựng tại bước thời gian thứ 𝑡 Lúc này một
tế bào mạng nơ-ron hồi tiếp sẽ nhận 2 giá trị là vector đặc trưng xt (vector embedding) của
từ 𝑥𝑡 và trạng thái ẩn ℎ𝑡−1của bước thời gian trước đó Ta cho hàm 𝑓( ) là phép biến đổi các trạng thái ẩn của RNN
ℎ𝑡 = 𝑓(xt, 𝒉𝒕−𝟏)
Tiếp tục như vậy ta sẽ có được các giá trị trạng thái ẩn ℎ1, , ℎ𝑇 của toàn bộ chuỗi đầu vào, sau đó encoder sẽ mã hóa thông tin của trạng thái ẩn này qua hàm 𝑞 để có được vector ngữ cảnh 𝑐
Trang 31𝑃(𝑦𝑡′|𝑦1, , 𝑦𝑡′−1, 𝑐)
Tại bộ giải mã lúc này, ta coi đây như một RNN mới có các trạng thái ẩn là𝑠1, , 𝑠𝑡′−1,
lúc này trạng thái ẩn 𝑠𝑡′ của tế bào ở decoder sẽ được tính dựa trên vector đặc trưng yt’-1
của từ 𝑦𝑡′−1 , vector ngữ cảnh c và trạng thái ẩn trước đó 𝑠𝑡′−1 Cũng giống như hàm 𝑓( )
tại encoder, ta gọi 𝑔( ) là phép biến đổi các trạng thái ẩn của RNN này trên decoder
𝑠𝑡′ = 𝑔(yt’-1, 𝒄, 𝒔𝒕′−𝟏)
Trạng thái ẩn khởi tạo 𝑠0 của decoder sẽ bằng với trạng thái ẩn cuối cùng ở encoder ℎ𝑇 Từ trạng thái ẩn 𝑠𝑡′ này ta có thể kèm thêm một hàm kích hoạt rời rạc như softmax(x) để có đầu ra 𝑦𝑡′ khi giả định đầu ra là rời rạc như đã được nhắc đến trước đó
2.5.5 Cơ chế Tập trung (Attention)
Hiểu một cách đơn giản thì cơ chế tập trung (attention mechanism) [10] cho phép mạng có
thể chọn ra những phần tử nào trong chuỗi nên tập trung vào
Hình 2.12: Mô tả về cơ chế tập trung (attention)
Trang 32Ý tưởng của cơ chế này là sử dụng một vectơ ngữ cảnh (context vector) để tương tác với
toàn bộ trạng thái ẩn của encoder Nó gần như giải quyết vấn đề của seq2seq với những hạn chế khi nó buộc phải nén tất cả đầu vào thành một vector duy nhất, điều có thể gây khó khăn khi trích xuất thông tin ở một số điểm mà có thể nó quan trọng hơn so với ở những điểm khác Cơ chế này được ứng dụng rõ ràng hơn trong mạng Transformer hiện đại
2.5.6 Kiến trúc mạng Transformer
Để giải quyết vấn đề tuần tự không thể song song và đạo hàm quá lớn hoặc quá bé của các mạng truy hồi truyền thống, năm 2017 nhóm nghiên cứu của Google Brain đã cho ra đời mô hình Transformer [18] Mô hình này là một đột phá lớn trong việc xử lý dữ liệu liên tục và được ứng dụng rộng rãi trong các lĩnh vực như NLP (Xử lý ngôn ngữ tự nhiên) và Computer Vision (Xử lý ảnh)
Hình 2.13: Kiến trúc mô hình Transformer
Trang 33Mô hình này gồm 2 thành phần là Khối Encoder và Khối Decoder giống như kiến trúc Seq2seq truyền thống Tuy vậy, sự đột phá của mô hình này đến từ sự xuất hiện của 3 kỹ
thuật mới: Self-Attention, Multi-head Attention và Positional Encoding
Tự tập trung (Self-attention)
Cụ thể lớp tự tập trung (self-attention) sẽ bao gồm 3 đầu vào là: Truy vấn (Query), Khóa
(Key) và Giá trị (Value) Áp dụng theo hướng Chú ý điểm tích có tỉ lệ (Scaled Dot-Product
Attention) như sau
Hình 2.14: Scaled Dot-Product Attention
Giả sử ta có chuỗi đầu vào là 𝑥1, , 𝑥𝑇 , trong đó 𝑇 là độ dài chuỗi đầu vào, đưa chuỗi này qua lớp embedding độ dài 𝑑 ta có được vector embedding 𝑋𝑇×𝑑 của chuỗi Sau đó nhân lần lượt với 3 ma trận trọng số 𝑊𝑞, 𝑊𝑘, 𝑊𝑣 để có được 3 vector ma trận 𝑄, 𝐾, 𝑉 tương ứng Với 𝑑 là kích thước của vector embedding, để đơn giản, ta sẽ cho 𝑑 = 𝑑𝑘 = 𝑑𝑣
𝑄𝑇×𝑑 = 𝑊𝑑×𝑑𝑞 ∙ 𝑋𝑇×𝑑 với 𝑄 𝜖 ℝ𝑑𝑘𝐾𝑇×𝑑 = 𝑊𝑑×𝑑𝑘 ∙ 𝑋𝑇×𝑑 với 𝐾 𝜖 ℝ𝑑𝑘
𝑉𝑇×𝑑 = 𝑊𝑑×𝑑𝑣 ∙ 𝑋𝑇×𝑑 với 𝑄 𝜖 ℝ𝑑𝑣
Tiếp tục ta sẽ nhân vô hướng ma trận 𝑄 với ma trận chuyển vị của 𝐾, ta thu được giá trị (𝑄𝐾⊤) Đây chính là giá trị của lớp 𝑀𝑎𝑡𝑀𝑢𝑙
(𝑄𝐾⊤)𝑇×𝑇 = 𝑄𝑇×𝑑∙ 𝐾⊤𝑇×𝑑
Tiếp tục ta sẽ tiến hành 𝑆𝑐𝑎𝑙𝑒 bằng cách chia cho căn bậc 2 của kích thước ma trận trọng số 𝑑 rồi đưa qua hàm 𝑠𝑜𝑓𝑡𝑚𝑎𝑥 ta sẽ có được ma trận điểm số 𝐴𝑇×𝑇 Ma trận này có giá trị các phần tử dao động trong khoảng [0,1] sẽ thể hiện mối quan hệ của từng từ trong câu với nhau ở từng vị trí thứ 𝑡 tương ứng
Trang 34𝐴𝑇×𝑇 = 𝑠𝑜𝑓𝑡𝑚𝑎𝑥 ((𝑄𝐾⊤)𝑇×𝑇√𝑑 )
Cuối cùng, ma trận giá trị tập trung 𝐴𝑡𝑡𝑒𝑛𝑡𝑖𝑜𝑛(𝑄, 𝑉, 𝐾) sẽ được tính bằng cách nhân vô
hướng 𝐴𝑇×𝑇 với ma trận 𝑉𝑇×𝑑 ban đầu
𝐴𝑡𝑡𝑒𝑛𝑡𝑖𝑜𝑛(𝑄, 𝑉, 𝐾)𝑇×𝑑 = 𝐴𝑇×𝑇 ⋅ 𝑉𝑇×𝑑
Như vậy ta đã đi qua công thức toán học của cơ chế Tự tập trung một đầu (Single Head
Self-Attention) Từ cơ chế này người ta đã
Tập trung đa đầu (Multi-head attention)
Ta có thể hình dung đơn giản, Tập trung đa đầu (Multi-head attention) là việc thực hiện cơ chế Tự tập trung (Self-attention) nhiều lần với mỗi một đầu (head) là một lần thực hiện
tự tập trung Sau đó sẽ tổng hợp kết quả ở lớp 𝐶𝑜𝑛𝑐𝑎𝑡, nhờ cơ chế này mà mạng Transformer có thể thực hiện song song khi tính toán thay vì tuần tự
Trang 35Trong đó 𝑊𝑖𝑄 𝜖 ℝ𝑑𝑚𝑜𝑑𝑒𝑙 × 𝑑𝑘, 𝑊𝑖𝐾 𝜖 ℝ𝑑𝑚𝑜𝑑𝑒𝑙 × 𝑑𝑘, 𝑊𝑖𝑉 𝜖 ℝ𝑑𝑚𝑜𝑑𝑒𝑙 × 𝑑𝑣 là các trọng số cần học Do việc giảm kích thước 𝑑𝑣 =𝑑𝑚𝑜𝑑𝑒𝑙
ℎ cho nên tổng chi phí tính toán sẽ không tăng mà giữ nguyên so với việc dùng self-attention với kích thước 𝑑𝑣 = 𝑑𝑚𝑜𝑑𝑒𝑙
Positional Encoding
So với kỹ thuật Self-Attention và Multi-head Attention như đã trình bày ở phần trên thì
Positional Encoding chỉ đến việc mã hóa vị trí của từ đưa vào vector embedding của từ, ta
bắt buộc phải mã hóa vị trí của input đầu vào trước khi đưa vào lớp encoder hoặc decoder
(đi qua lớp Positional Encoding), bởi kiến trúc của Transformer không tuần như như RNN
hoặc LSTM nên cơ chế scaled dot-product attention không thể biểu diễn được vị trí của
một từ khi tạo ra vectơ ngữ cảnh của nó Lớp Positional Encoding này là một ma trận có
cùng kích thước với ma trận embedding được thực hiện qua hàm 𝑠𝑖𝑛 và 𝑐𝑜𝑠 có công thức như sau:
𝑃𝐸(𝑝𝑜𝑠,2𝑖) = 𝑠𝑖𝑛(𝑝𝑜𝑠/100002𝑖/𝑑𝑚𝑜𝑑𝑒𝑙) 𝑃𝐸(𝑝𝑜𝑠,2𝑖+1) = 𝑐𝑜𝑠(𝑝𝑜𝑠/100002𝑖/𝑑𝑚𝑜𝑑𝑒𝑙)
với 𝑝𝑜𝑠 là vị trí của từ trong câu và cũng là vị trí hàng trong ma trận PE, i là chiều thứ i
của ma trận PE Sau khi đã có được ma trận Positional Encoding ta sẽ cộng nó với ma trận
embedding rồi nhân với √𝑑𝑚𝑜𝑑𝑒𝑙 để nhúng thông tin về thứ tự của từ
Khối Encoder của Transformer: Bao gồm N = 6 lớp encoder (encoder layer) xếp chồng
lên nhau với mỗi lớp sẽ có cấu trúc như sau:
Trang 36Hình 2.16: Cấu trúc khối Encoder Transformer
Ở lớp này sẽ bao gồm 2 lớp con thành phần (sub-layer) là lớp con thành phần thứ nhất bao gồm một lớp Multi-head Attention và Fully Connected Network để nhúng ngữ nghĩa các từ Đầu ra của nó sẽ qua một lớp chuẩn hóa Add & Norm bao gồm lớp Residual Connection và Layer Normalization với mục tiêu hạn chế khả năng đạo hàm biến mất (vanishing
gradient) và giảm lỗi khi huấn luyện (training error), việc tính lớp này minh họa như sau:
số mô hình ngôn ngữ lớn hiện đại sử dụng kiến trúc Encoder có thể kể đến như BERT, DeBERTa
Khối Decoder của Transformer: Tương tự ở khối decoder cũng bao gồm N = 6 lớp
decoder (decoder layer) xếp chồng lên nhau với mỗi lớp có cấu trúc như sau:
Trang 37Hình 2.17: Cấu trúc khối Decoder Transformer
Tương tự với khối encoder thì khối decoder cũng có 2 lớp con thành phần giống encoder tuy nhiên sẽ xuất hiện thêm một lớp con thành phần thứ 3 nằm ở trước 2 lớp này để thực
hiện attention với đầu ra của khối encoder phía trước Ở đây là một lớp Masked Multi-head
Attention, về bản chất thì lớp này không khác gì so với lớp Multi-head Attention phía trên,
tuy nhiên nó sẽ loại trừ những từ trong tương lai, tránh lấy thông tin từ các từ trong tương lai khi huấn luyện mô hình Mô hình tiêu biểu sử dụng kiến trúc Decoder của Transformer kể đến như GPT
2.5.7 Mô hình BERT
Ra đời năm 2018 bởi Devlin và các cộng sự tại Google, BERT (Bidirectional Encoder
Representations from Transformers) là một mô hình tiền huấn luyện (pretrained model) sử
dụng lớp Encoder của Transformer làm lõi chính Mô hình đã thực sự có hiệu quả khi đạt
mức điểm số SOTA trên một loạt các tác vụ như hỏi đáp (question answering) và suy luận ngôn ngữ (language inference) mà không cần thực hiện việc sửa đổi cấu trúc của nó Một
Trang 38số ứng dụng của BERT hiện nay bao gồm: máy dịch (machine translation), phân tích cảm xúc văn bản (sentiment analysis), tóm tắt văn bản (text summarization) và hỏi đáp (question
answering)
Hình 2.18: Kiến trúc mô hình BERT
Kiến trúc của mô hình BERT tiêu chuẩn (BERT Base) bao gồm: một lớp embedding để encode câu đầu vào, một lớp gồm 12 các khối Transformer Encoder (kích thước ẩn = 768,
số lượng đầu self-attention = 12) và cuối cùng là một lớp mạng nơ ron kết nối hoàn toàn (fully connected network)
Cách mô hình BERT được tạo ra
Mô hình được xây dựng trải qua 2 giai đoạn bao gồm: huấn luyện (pretraining) để mô hình hiểu cấu trúc của ngôn ngữ tự nhiên và tinh chỉnh (fine-tuning) để sử dụng cho một tác vụ
cụ thể
Trang 39Hình 2.19: Quá trình huấn luyện BERT
Huấn luyện (pretraining): Mô hình BERT được huấn luyện trên một tập dữ liệu lớn
(copus) sử dụng lớp embeddings WordPiece (30,000 token từ vựng) để encode với 2 mục
tiêu chính là huấn luyện mô hình ngôn ngữ bằng cách che đi các từ (masked language
modeling - MLM) và dự đoán câu tiếp theo (next sentence prediction - NSP), cả 2 kỹ thuật
này có thể được thực hiện đồng thời
• Việc huấn luyện bằng cách che (mask) - MLM được thực hiện bằng cách ở câu
đầu vào mô hình sẽ ngẫu nhiên thay thế một từ trong câu bằng token [MASK] rồi cố gắng dùng những từ còn lại xung quanh để dự đoán nó Từ đây việc đi song song
2 chiều (bidirectional) đã phát huy tác dụng khi mô hình có thể nhìn thấy không
gian toàn cảnh của câu Việc che này được thực hiện ngẫu nghiên trên đầu vào với tỉ lệ 15% trên toàn bộ câu trong đó nếu một từ thứ 𝒊 được chọn thì 80% nó sẽ được thay thế bằng token [MASK], 10% là nó được thay thế bằng một từ khác và 10% còn lại sẽ được giữ nguyên Do đó đầu ra của mô hình BERT có thể được sử dụng như một lớp embedding của các từ được chắt lọc thông tin ngữ cảnh từ cả 2 hướng thông qua cơ chế seft-attention của từng khối Transformer encoder Sau khi đã có
Trang 40được đầu ra của khối này, sẽ được tiếp tục đưa qua một lớp mạng nơ ron kết nối
hoàn toàn (fully connected network) với activation đầu ra là một hàm softmax nhằm tạo ra một vector phân bổ xác xuất của từng từ trong bộ từ vựng (vocab) tại vị trí
tương ứng trong câu Những giá trị xác xuất này sẽ cho ta biết được từ nào có khả năng cao phù hợp ở vị trí đó, đó là kết quả dự đoán của mô hình Trong quá trình huấn luyện mô hình BERT sẽ so sánh xác xuất của từ bị che MASK với từ tương ứng trong tập nhãn huấn luyện rồi xác định Cross Entropy Loss để cập nhật trọng số mô hình
• Việc huấn luyện dự đoán câu tiếp theo - NSP sẽ được thực hiện bằng cách cho
đầu vào là các cặp chuỗi với ngăn cách ở giữa chúng là một token [SEP] (separate
token – token ngăng cách), tại đây mô hình sẽ cố gắng dự đoán xem hai chuỗi này
có phải là một cặp câu liên tiếp nhau hay không? Như hình trên ta thấy với token
[CLS] (classification token – token phân loại) sẽ quy định giá trị cho một giá trị đầu
ra nhị phân C thể hiện kết quả của tác vụ NSP, nếu C = 1 thì 2 câu này là một cặp liên tiếp nhau, C = 0 thì ngược lại
Từ đây ta có thể hiểu rằng BERT khi được huấn luyện có 2 phần là: lớp Transformer Encoder và một lớp Fully Connected Sau khi đã huấn luyện không giám sát trên một tập
dữ liệu lớn (copus) để mô hình hiểu được về ngôn ngữ con người Lớp Fully Connected sẽ
được bỏ ra và lớp Transformer Encoder sẽ được giữ lại để sử dụng như một tầng embedding, tầng embedding này sẽ được sử dụng nhằm tạo ra các biểu diễn cho văn bản để tiếp tục phục vụ cho các bài toán khác
Ngày đăng: 15/06/2024, 22:48
Xem thêm:
Từ khóa liên quan
Tài liệu cùng người dùng
Tài liệu liên quan