XÂY DỰNG HỆ THỐNG TRẢ LỜI CÂU HỎI RAG TRÊN TIẾNG VIỆT - NTTU CHATBOT

86 105 0
Tài liệu đã được kiểm tra trùng lặp
XÂY DỰNG HỆ THỐNG TRẢ LỜI CÂU HỎI RAG TRÊN TIẾNG VIỆT - NTTU CHATBOT

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

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 1

BỘ 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 2

BỘ 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 3

LỜ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 4

LỜ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 5

NHẬ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 6

NHẬ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 7

DANH 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 8

2.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 10

DANH 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 11

DANH 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 12

Hì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 13

Hì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 14

IR 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 15

CHƯƠ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 16

Do đó, 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 17

1.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 18

CHƯƠ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 19

Hệ 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 20

Thô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 21

Tiế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 23

Mộ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 24

trí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 25

về 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 26

ra 𝑦(𝑡)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 27

Trạ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 28

nhậ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 29

Hì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 30

Hì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 33

Mô 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 35

Trong đó 𝑊𝑖𝑄 𝜖 ℝ𝑑𝑚𝑜𝑑𝑒𝑙 × 𝑑𝑘, 𝑊𝑖𝐾 𝜖 ℝ𝑑𝑚𝑜𝑑𝑒𝑙 × 𝑑𝑘, 𝑊𝑖𝑉 𝜖 ℝ𝑑𝑚𝑜𝑑𝑒𝑙 × 𝑑𝑣 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 36

Hì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 37

Hì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 38

số ứ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 39

Hì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