1. Trang chủ
  2. » Giáo Dục - Đào Tạo

(TIỂU LUẬN) xây dựng chatbot tư vấn và hướng dẫn tự chăm sóc sức khỏe tại nhà với những bệnh nhân nhiễmnghi nhiễm virus SARS cov 2

62 13 0

Đ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

Thông tin cơ bản

Tiêu đề Xây dựng Chatbot tư vấn và hướng dẫn tự chăm sóc sức khỏe tại nhà với những bệnh nhân nhiễm/nghi nhiễm virus SARS-CoV-2
Tác giả Bùi Trần Công Minh, Đoàn Quang Chính
Người hướng dẫn PGS. TS. Quản Thành Thơ
Trường học Trường Đại Học Bách Khoa TP. Hồ Chí Minh
Chuyên ngành Khoa Học Máy Tính
Thể loại Luận văn tốt nghiệp
Năm xuất bản 2022
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 62
Dung lượng 3,85 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Hồ Chí Minh Khoa Khoa Học và Kỹ Thuật Máy Tính Tóm tắt Hiện nay với sự phát triển của các kỹ thuật Trí Tuệ Nhân Tạo Artificial Intelligence,các hệ thống Chatbot thông minh đang thu hút n

Trang 1

LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC

Xây dựng Chatbot tư vấn và hướng dẫn tự chăm sóc

sức khỏe tại nhà với những bệnh nhân nhiễm/nghi

nhiễm virus SARS-CoV-2 NGÀNH: KHOA HỌC MÁY TÍNH

HỘI ĐỒNG: KHOA HỌC MÁY TÍNH 11GVHD: PGS TS Quản Thành Thơ

ThS Mai Đức TrungGVPB: ThS Lê Đình ThuậnSVTH1: Bùi Trần Công Minh -SVTH2: Đoàn Quang Chính -

TP HỒ CHÍ MINH, THÁNG 5/2022

Trang 2

Trường Đại Học Bách Khoa TP Hồ Chí Minh

Khoa Khoa Học và Kỹ Thuật Máy Tính

Lời cam đoan

Chúng tôi xin cam đoan rằng, luận văn tốt nghiệp "Xây dựng Chatbot tư vấn vềcác triệu chứng và hướng dẫn tự chăm sóc sức khỏe tại nhà với những bệnh nhânnhiễm/nghi nhiễm virus SARS-CoV-2" là công trình nghiên cứu của chúng tôi dưới

sự hướng dẫn của thầy PGS TS Quản Thành Thơ, xuất phát từ nhu cầu thực tiễnđại dịch covid-19 đang diễn ra gây ảnh hưởng lớn tới cuộc sống và nguyện vọng tìmhiểu của bản thân chúng tôi

Ngoại trừ kết quả tham khảo từ các công trình khác đã ghi rõ trong luận văn, các nộidung trình bày trong luận văn này là kết quả nghiên cứu do chính chúng tôi thực hiện vàkết quả của luận văn chưa từng công bố trước đây dưới bất kỳ hình thức nào

TP Hồ Chí Minh, ngày tháng năm

Nhóm tác giả

Bùi Trần Công Minh Đoàn Quang Chính

Trang 3

Lời cảm ơn

Chúng tôi xin cảm ơn PGS TS Quản Thành Thơ đã tận tình giúp đỡ chúng tôitrong quá trình thực hiện đề tài Sự nhiệt tình và những lời động viên, chỉ dẫn và góp

ý vô giá của thầy đã giúp chúng tôi hoàn thành tốt luận văn tốt nghiệp này

Chúng tôi cũng xin cảm ơn TS Nguyễn Như Vinh cùng các anh chị sinh viên đến

từ trường Đại học Y Dược thành phố Hồ Chí Minh đã nhiệt tình giúp đỡ nhóm trongviệc gán nhãn, thu thập dữ liệu và góp ý trong quá trình thực hiện đề tài

Luận văn tốt nghiệp - Năm học 2021-2022 Trang 2/60

Trang 4

Trường Đại Học Bách Khoa TP Hồ Chí Minh

Khoa Khoa Học và Kỹ Thuật Máy Tính

Tóm tắt

Hiện nay với sự phát triển của các kỹ thuật Trí Tuệ Nhân Tạo (Artificial Intelligence),các hệ thống Chatbot thông minh đang thu hút nhiều sự chú ý vì tính hiệu quả của chúngtrong việc thay thế con người trong nhiều lĩnh vực Trong lĩnh vực y tế, sự ứng dụng củaChatbot này càng được quan tâm vì lĩnh vực này có nhu cầu lớn từ cộng đồng và đòi hỏinhân lực có trình độ nhất định tham gia tư vấn Để xây dựng một Chatbot phục vụ ngườidân hiệu quả trong lĩnh vực y tế, các thách thức cần phải giải quyết bao gồm: (i) tích hợpcác kiến thức y tế chuyên ngành vào cơ sở tri thức của Chatbot; và (ii) huấn luyện choChatbot có thể giao tiếp hiệu quả với con người bằng ngôn ngữ tự nhiên

Trong đề tài này, chúng tôi đã giải quyết các vấn đề trên bằng các phương pháp họcmáy tiên tiến để xây dựng một Chatbot tư vấn cho người dùng các vấn đề y tế liên quanđến các triệu chứng hậu Covid Đây là một vấn đề cấp thiết và có tính ứng dụng cao đốivới TPHCM nói riêng và Việt Nam nói chung sau khi đã phần nào khống chế được đạidịch Covid-19 Hệ thống Chatbot này hiện đang trong quá trình triển khai thử nghiệm tạiĐại học Y dược TPHCM và ghi nhận được các phản hồi khá tích cực từ người dùng

Luận văn của nhóm được trình bày tại Hội nghị Khoa học công nghệ lần thứ 15:Hướng tới mạng lưới bác sĩ gia đình thông minh được tổ chức tại Đại học Y khoaPhạm Ngọc Thạch

Trang 5

Danh sách hình vẽ 6

1.1 Đặt vấn đề 9

1.2 Ví dụ minh họa 10

1.3 Mục tiêu của đề tài 10

1.3.1 Mục tiêu 10

1.3.2 Các giai đoạn thực hiện 10

1.4 Tổng quan về báo cáo 11

2 Kiến thức nền tảng 12 2.1 Chatbot 12

2.2 Giao thức Websocket 14

2.3 Intent 14

2.4 Entity 15

2.5 Thuật toán Support Vector Machine (SVM) 15

2.6 Thuật Toán K-Nearest Neighbors (KNN) 17

2.7 Mô Hình Transformer 17

2.7.1 Tổng quan về mô hình 17

2.7.2 Cơ chế Self-Attention 18

2.7.3 Multi-Head Attention 19

2.7.4 Mã hoá vị trí (Positional Encoding) 20

2.8 Mô Hình Bert 21

2.8.1 Tổng quan 21

2.8.2 Kiến trúc 21

2.8.3 Huấn luyện BERT 21

2.8.3.1 Masked Language Model (MLM) 21

2.8.3.2 Next Sentence Prediction (NSP) 22

2.8.3.3 Phương pháp Fine-tuning BERT 23

2.8.4 RoBERTa 24

2.8.5 PhoBERT 25

2.9 Hệ thống TODS 26

2.9.1 Khối Natural Language Understanding (NLU) 27

2.9.2 Khối Dialogue Manager (DM) 27

2.9.3 Khối Natural Language Generation (NLG) 28

4

Trang 6

Trường Đại Học Bách Khoa TP Hồ Chí Minh

Khoa Khoa Học và Kỹ Thuật Máy Tính

3.1 Ngôn ngữ lập trình 29

3.1.1 Python 29

3.1.2 Javascript 30

3.2 Framework và Library 30

3.2.1 React 30

3.2.2 FastAPI 31

3.2.3 Botkit 31

3.3 Công cụ 32

3.3.1 Google Colab 32

3.3.2 MongoDB - Mongo Atlas 32

3.3.3 Heroku 33

4 Thiết kế và hiện thực hệ thống 34 4.1 Tổng quan về kiến trúc và chức năng 34

4.1.1 Định nghĩa các intent, entity cho Chatbot 34

4.1.2 Các yêu cầu hệ thống 36

4.1.3 Kiến trúc 37

4.1.3.1 Natural Language Understanding 37

4.1.3.2 Dialogue Manager 38

4.1.3.3 Natural Language Generation 38

4.1.4 Các khó khăn 39

4.2 Lưu trữ dữ liệu và truy vấn 39

4.2.1 Thu thập dữ liệu 39

4.2.2 Xây dựng cơ sở dữ liệu của hệ thống 41

4.2.3 Xử lí và truy vấn dữ liệu 42

4.3 Huấn luyện mô hình 45

4.3.1 Mô hình SVM thứ nhất 46

4.3.2 Mô hình SVM thứ hai 47

4.3.3 Mô hình Named Entity Recognition 49

4.3.4 Mô hình KNN tìm kiếm câu hỏi gần nhất với tin nhắn của người dùng 52

4.3.5 Huấn luyện lại mô hình Chatbot với dữ liệu mới 54

4.4 Kết quả hiện thực Chatbot 54

5 Tổng kết 57 5.1 Các công việc đạt được 57

5.2 Các hạn chế 57

5.3 Mục tiêu phát triển 58

Trang 7

1.1 Thống kê số ca mắc covid trong tháng 4 năm 2022 9

1.2 Ví dụ minh hoạ về đoạn hội thoại tư vấn của Chatbot 10

2.1 Cách thức hoạt động của một Chatbot 12

2.2 Kiến trúc mô hình khái quát hóa (Generative model)[11] 13

2.3 Kiến trúc mô hình truy vấn (Retrieval-based model)[11] 13

2.4 Mô tả các siêu phẳng phân tách tập dữ liệu[10] 16

2.5 Mô tả đường phân chia tốt nhất đối với tập dữ liệu[10] 16

2.6 Thuật toán KNN[9] 17

2.7 Kiến trúc Transformer[15] 18

2.8 Ví dụ về attention trong transformer[16] 18

2.9 Mô tả các bước tính ma trận attention[16] 19

2.10 Positional Encoding trong kiến trúc Transformer[15] 20

2.11 Mô tả quá trình add vector thể hiện vị trí vào vector Embedding[13] 21

2.12 Kiến trúc Masked LM[3] 22

2.13 Mô tả input cho bài toán Next Sentence Prediction[3] 23

2.14 BERT trong nhiều loại bài toán xử lí ngôn ngữ tự nhiên khác nhau[12] 24

2.15 Trích từ paper của RoBERTa[4] 25

2.16 Hiệu năng của các mô hình với tập data NER và NLI[6] 25

2.17 Kiến trúc của hệ thống TODs[5] 26

3.1 Ngôn ngữ lập trình Python 29

3.2 Ngôn ngữ lập trình Javascript 30

3.3 Reactjs 31

3.4 FastAPI 31

3.5 Botkit 32

3.6 Google Colab 32

3.7 MongoDB 33

3.8 Heroku 33

4.1 Kiến trúc tổng thể của Chatbot 37

4.2 Kiến trúc khối NLU 37

4.3 Kiến trúc khối Dialogue Policy 38

4.4 Kiến trúc khối NLG 39

4.5 Trang web tư vấn covid: https://www.icliniq.com/qa/covid-19 40

4.6 Chi tiết cuộc hội thoại tư vấn covid 40

4.7 Dữ liệu phản hồi cho kịch bản tư vấn triệu chứng 41

4.8 Dữ liệu phản hồi cho kịch bản tư vấn thông tin chung 42

4.9 Các siêu tham số tốt nhất sau khi sử dụng RandomizedSearchCV 46

6

Trang 8

Trường Đại Học Bách Khoa TP Hồ Chí Minh

Khoa Khoa Học và Kỹ Thuật Máy Tính

4.10 Dữ liệu huấn luyện mô hình thứ nhất 46

4.11 Kết quả huấn luyện mô hình thứ nhất 47

4.12 Các siêu tham số tốt nhất sau khi sử dụng RandomizedSearchCV 47

4.13 Dữ liệu huấn luyện mô hình thứ hai 48

4.14 Kết quả huấn luyện mô hình thứ hai 48

4.15 Kịch bản chẩn đoán khả năng nhiễm bệnh 49

4.16 Dữ liệu thu thập được từ VinAI[14] 50

4.17 Kiến trúc mô hình phobert cho bài toán NER 50

4.18 Quá trình training theo micro-f1-score 51

4.19 Quá trình training theo Cross-entropy loss 51

4.20 Kết quả mô hình 52

4.21 Ví dụ về tập data mẫu 52

4.22 Ví dụ về phản hồi của mô hình KNN 53

4.23 Ví dụ về dữ liệu hội thoại được lưu trữ trong cơ sở dữ liệu 54

4.24 Kịch bản cung cấp thông tin liên hệ 55

4.25 Kịch bản cung cấp thông tin số ca nhiễm 55

4.26 Kịch bản tư vấn khả năng nhiễm bệnh 56

4.27 Kịch bản cung cấp các thông tin chung 56

Trang 9

1.1 Tổng quan về báo cáo 112.1 Các sự kiện WebSocket 142.2 Các phương thức của WebSocket 14

8

Trang 10

Hình 1.1: Thống kê số ca mắc covid trong tháng 4 năm 2022

Từ những vấn đề cấp bách ở trên, chúng tôi muốn xây dựng một hệ thống hội thoại

tự động cung cấp các thông tin chính thống, đồng thời có khả năng chẩn đoán cơ bản vềkhả năng nhiễm bệnh dựa vào một số thông tin của bệnh nhân Qua đó mong muốn cóthể giúp đỡ, giảm tải áp lực lên các đội ngũ y bác sĩ tuyến đầu chống dịch và là nguồncung cấp thông tin nhanh chóng, chính xác và kịp thời đến người dân

Trang 11

1.2 Ví dụ minh họa

Hình 1.2: Ví dụ minh hoạ về đoạn hội thoại tư vấn của Chatbot

Hình trên là ví dụ về một đoạn hội thoại giữa Chatbot và người dùng Khi ngườidùng đã truyền đạt nhu cầu của mình, Chatbot sẽ phân tích nhu cầu đó và trả về cáckết quả có được từ cơ sở dữ liệu là các thông tin chính thống đã được kiểm chứng

từ các ban ngành y tế có chuyên môn

1.3 Mục tiêu của đề tài

1.3.1 Mục tiêu

Mục tiêu của đề tài là xây dựng một hệ thống hội thoại tự động (Chatbot) tronglĩnh vực tư vấn cho bệnh Covid có khả năng giao tiếp với người dùng một cách đơngiản và phân tích được nhu cầu người dùng để trả về kết quả phù hợp từ cơ sở dữliệu đồng thời có thể mở rộng cho các loại bệnh khác trong tương lai

Ngoài ra, Chatbot có thể được triển khai vào thực tế góp phần giảm bớt sự quátải cho hệ thống các y bác sĩ tuyến đầu, qua đó đóng góp phần nào công sức vàocông cuộc phòng chống đại dịch Covid-19

1.3.2 Các giai đoạn thực hiện

Với các mục tiêu trên đề tài được chia làm 5 giai đoạn chính:

Luận văn tốt nghiệp - Năm học 2021-2022 Trang 10/60

Trang 12

Trường Đại Học Bách Khoa TP Hồ Chí Minh

Khoa Khoa Học và Kỹ Thuật Máy Tính

• Giai đoạn 1: Thu thập và gắn nhãn dữ liệu Đồng thời thu thập lượng thông tin chính thống xoay quanh đại dịch

• Giai đoạn 2: Thiết kế cấu trúc dữ liệu, cấu trúc hệ thống

• Giai đoạn 3: Huấn luyện mô hình Intent Classification và hiện thực mô-đun Infor-mation Extraction

• Giai đoạn 4: Hoàn thiện Chatbot với các chức năng ban đầu và tiến hành deploy lên host(heroku) để khảo sát và thử nghiệm hệ thống

• Giai đoạn 5: Từ dữ liệu thực tế thu thập được tiến hành đánh giá và cải thiện Chatbot dựa trên dữ liệu thực tế

1.4 Tổng quan về báo cáo

1 Giới thiệu tổng quan về nội dung đề tài, các giai đoạn thực hiện

2 Trình bày các kiến thức nền tảng có được áp dụng vào đề tài như intent,entity, hệ thống TODs, các kiến trúc học máy và học sâu

3 Trình bày về các công nghệ được áp dụng trong đề tài

4 Trình bày tổng quan về kiến trúc, chức năng và chi tiết hiện thực

hệ thống của đề tài

5 Tổng kết, đánh giá kết quả của đề tài và những hạn chế còn gặp phải

Bảng 1.1: Tổng quan về báo cáo

Trang 13

Kiến thức nền tảng

2.1 Chatbot

Hình 2.1: Cách thức hoạt động của một Chatbot

Chatbot là công cụ có khả năng tương tác với người dùng qua tin nhắn theo thời gian thực, 24/7/365 Do đó, người dùng sẽ không phải chờ đợi lâu để nhận được sự hỗ trợ từ con người Chatbot hỗ trợ con người thực hiện tự động các công việc tốn nhiều thời gian nhất, giúp các doanh nghiệp tiết kiệm được khoản chi phí lớn cho nhân sự Đội ngũ nhân viên được tối ưu nhiệm vụ, tập trung xử lí các công việc chuyên sâu ở mức độ khó hơn.

Chatbot đã được phát minh ra từ hàng chục năm trước Tuy nhiên, Chatbotthường chỉ thực hiện được các nhiệm vụ với câu hỏi và câu trả lời chuẩn theo mẫu

đã được chuẩn bị trước Do đó, gây ra những hạn chế trong việc giao tiếp với ngườidùng, tạo cảm giác nhàm nhán và mất thiện cảm

Khoảng 5 năm trở lại đây, Trí tuệ nhân tạo phát triển mạnh mẽ Chatbot được trang

bị thêm công nghệ Trí tuệ nhân tạo (AI), công nghệ Học máy, Học sâu giúp Chatbot có

12

Trang 14

Trường Đại Học Bách Khoa TP Hồ Chí Minh

Khoa Khoa Học và Kỹ Thuật Máy Tính

khả năng tự học từ những cuộc trò chuyện thực tế với người dùng để trở nên thông minh hơn theo thời gian Người dùng không phải nhập những câu rập khuôn máy móc để giao tiếp với Chatbot mà nó có thể hoàn toàn có thể diễn tả ý định theo cách của riêng mình.

Dưới đây là 2 loại cấu trúc Chatbot truyền thống và Chatbot hiện đại:

Hình 2.2: Kiến trúc mô hình khái quát hóa (Generative model)[11]

Phương pháp đầu sử dụng mô hình học sâu để sinh ra câu trả lời thường rất khó đểxây dựng và huấn luyện Thông thường cần phải có tập dữ liệu lớn gồm hàng triệu ví dụ

để huấn luyện mô hình học sâu có thể tạo ra đoạn hội thoại có chất lượng tạm ổn, tuynhiên cũng không thể biết chắc được là mô hình sẽ sinh ra câu trả lời gì Phương phápnày là tương lai của Chatbot vì nó sẽ làm cho Chatbot thông minh hơn

Hình 2.3: Kiến trúc mô hình truy vấn (Retrieval-based model)[11]

Mô hình thứ hai dễ xây dựng hơn và đáng tin cậy hơn Mặc dù không thể có100% độ chính xác của các câu trả lời, nhưng chúng ta có thể biết các loại câu trả lời

có thể có và đảm bảo rằng Chatbot không đưa ra những phản hồi không phù hợphoặc không chính xác Ở mô hình này thì Chatbot sẽ dựa trên những tin nhắn củangười dùng và ngữ cảnh lúc đó của cuộc hội thoại để đưa ra những câu trả lời từdanh sách các câu trả lời đã được định nghĩa sẵn

Để Chatbot có thể lựa chọn được câu trả lời phù hợp thì ý định (intent) trong tin nhắncủa người dùng cần được xác định Phương pháp cổ điển trong việc xác định ý định

Trang 15

của người dùng là sử dụng các phương pháp so trùng mẫu Tuy nhiên phương pháp này không thể giải quyết được hết tất cả các trường hợp, vì trong ngôn ngữ tự nhiên, một

ý định có thể được diễn đạt bằng nhiều cách khác nhau Do vậy các phương pháp học máy/học sâu nhằm phát hiện ý định của người dùng được ưa chuộng hơn

2.2 Giao thức Websocket

WebSocket là một giao thức giúp truyền dữ liệu hai chiều giữa server-client qua mộtkết nối TCP duy nhất Hơn nữa, webSocket là một giao thức được thiết kế để truyền dữliệu bằng cách sử dụng cổng 80 và cổng 443 và nó là một phần của HTML5 Vì vậy,webSockets có thể hoạt động trên các cổng web tiêu chuẩn, nên không có rắc rối về việc

mở cổng cho các ứng dụng, lo lắng về việc bị chặn bởi các tường lửa hay proxy server

Tất cả dữ liệu giao tiếp giữa client-server sẽ được gửi trực tiếp qua một kết nối cốđịnh làm cho thông tin được gửi đi nhanh chóng và liên tục khi cần thiết WebSocketlàm giảm độ trễ bởi vì một khi kết nối WebSocket được thành lập, server không cầnphải chờ đợi cho một yêu cầu từ client

Các sự kiện WebSocket:

open onopen Khi một WebSocket chuyển sang trạng thái mở, “onopen”

sẽ được gọi

message onmessage Khi WebSocket nhận dữ liệu từ Server

error onerror Có bất kỳ lỗi nào trong giao tiếp

close onclose Kết nối được đóng Những sự kiện được truyền cho “onclose”

có ba tham số là “code”, “reason”, và “wasClean”

close() Đóng kết nối đang tồn tại

Bảng 2.2: Các phương thức của WebSocket

Ưu điểm WebSocket là nó cung cấp giao thức giao tiếp hai chiều mạnh mẽ Có độ trễthấp và dễ xử lý lỗi Websocket thường được sử dụng cho những trường hợp yêu cầureal time như chat, hiển thị biểu đồ hay thông tin chứng khoán Do đó chúng tôi sử dụngwebsocket để giao tiếp giữa frontend và backend trong hệ thống của chúng tôi

Trang 16

2.3 Intent

Khi tham gia tư vấn, người dùng luôn có các nhu cầu tư vấn nhất định (gọi làintent hay ý định người dùng) Để đảm bảo hệ thống Chatbot hoạt động tốt và

Trang 17

làm hài lòng người dùng, việc phân loại cũng như hiểu các ý định này là vô cùng cần thiết.

Với ví dụ “Tôi muốn biết về các triệu chứng thường gặp của Covid”, thì ý định củangười dùng ở đây là mong muốn biết được các triệu chứng gặp phải nếu nhiễmbệnh Ý định đều có thể đặt tên, thường là một động từ kết hợp với một danh từ,chẳng hạn: “request_symptom”

Để làm nhiệm vụ phân loại intent, cần một mô hình phân loại ý định người dùng(Intent classification) Dữ liệu là tập hợp các đoạn text (trong trường hợp này là cáctin nhắn của người dùng) đã được gán sẵn nhãn chủ đề

2.4 Entity

Entity là các thực thể bổ nghĩa cho một ý định Vẫn ví dụ "tôi muốn biết về số canhiễm hiện nay ở Tp.HCM”, thì các thực thể bổ nghĩa là “Tp.HCM” Các thực thểcũng đều có thể được đặt tên, ví dụ: “dateTime” hoặc “location” Các thực thể nàyđôi khi được gọi là các “Slot”, có thể hình dung đó là các khe thông tin

Trong xử lý ngôn ngữ tự nhiên, để nhận ra một thực thể (Tên người, tên địadanh, ngày tháng, con số, ) trong một văn bản, người ta sử dụng một kỹ thuật họcmáy có tên gọi: Named Entity Recognition (NER) hay còn gọi là Entity Extraction(Nhận dạng thực thể có tên hay trích xuất thực thể)

2.5 Thuật toán Support Vector Machine (SVM)

SVM (Support Vector Machine) là một thuật toán học máy có giám sát được sử dụng rất phổ biến ngày nay trong các bài toán phân lớp (classification) hay hồi qui (Regression).

Ý tưởng của SVM là tìm một siêu phẳng (hyperlane) để phân tách các điểm dữliệu Siêu phẳng này sẽ chia không gian thành các miền khác nhau và mỗi miền sẽchứa một loại dữ liệu

Để dễ hình dung hơn, chúng ta vẽ đồ thị dữ liệu là các điểm trong n chiều ( ở đây n là

số lượng các feature) với giá trị của mỗi tính năng sẽ là một phần liên kết Sau đó chúng

ta thực hiện tìm "đường biên giới" phân chia các lớp Đường biên giới - nó chỉ hiểu đơngiản là 1 đường thằng có thể phân chia các lớp ra thành hai phần riêng biệt

Luận văn tốt nghiệp - Năm học 2021-2022 Trang 15/60

Trang 18

Trường Đại Học Bách Khoa TP Hồ Chí Minh

Khoa Khoa Học và Kỹ Thuật Máy Tính

Hình 2.4: Mô tả các siêu phẳng phân tách tập dữ liệu[10]

Như hình 2.4 thì ta có thể thấy có nhiều hyperlane có thể tìm thấy trong mặtphẳng (đường đen đậm nét liền và đường xanh đậm nét đứt), do đó ta cần tìm mộthyperlane sao cho phân chia tốt nhất tập dữ liệu trên Hyperlane đó phải thỏa mãn:(i) khoảng cách từ điểm gần nhất của mỗi class (các điểm được khoanh tròn) tớiđường phân chia là như nhau và (ii) khoảng cách từ điểm gần nhất của mỗi class tớiđường phân chia (margin) phải là lớn nhất Từ đó ta có thể nhận thấy đường tô đậmmàu đen là đường phân chia tốt nhất cho tập dữ liệu này (Hình 2.5)

Hình 2.5: Mô tả đường phân chia tốt nhất đối với tập dữ liệu[10]

Trang 19

2.6 Thuật Toán K-Nearest Neighbors (KNN)

Hình 2.6: Thuật toán KNN[9]

K-nearest neighbor là một trong những thuật toán học có giám sát đơn giản nhất(mà hiệu quả trong một vài trường hợp) trong Machine Learning Khi huấn luyện,thuật toán này không học một điều gì từ dữ liệu huấn luyện nên thuật toán này đượcxếp vào loại lazy learning, mọi tính toán được thực hiện khi nó cần dự đoán kết quảcủa dữ liệu mới K-nearest neighbor có thể áp dụng được vào cả hai loại của bàitoán Học giám sát là bài toán Phân loại và Hồi quy KNN còn được gọi là một thuậttoán Instance-based hay Memory-based learning

Với KNN, trong bài toán phân loại, nhãn của một điểm dữ liệu mới được suy ratrực tiếp từ K điểm dữ liệu gần nhất trong tập dữ liệu huấn luyện trước đó Nhãn củamột điểm dữ liệu thử nghiệm có thể được quyết định bằng major voting (bầu chọntheo số phiếu) giữa các điểm gần nhất, hoặc nó có thể được suy ra bằng cách đánhtrọng số khác nhau cho mỗi trong các điểm gần nhất đó rồi suy ra nhãn tương ứng

Ví dụ như trong hình 2.6, với K=3 thì nhãn của điểm cần tìm sẽ là B bởi vì trong 3điểm gần nhất thì B chiếm tới 2 Tương tự như vậy nếu K=7 thì nhãn sẽ là A

2.7 Mô Hình Transformer

2.7.1 Tổng quan về mô hình

Kiến trúc của Transformer[15] được tạo nên bằng các lớp self-attention và mạngtruyền thẳng xếp chồng lên nhau, được kết nối tạo thành các liên kết đầy đủ (fullyconnected layers) để tạo nên 6 khối encoder và decoder mỗi loại Hình 2.7 mô tả kiếntrúc của mô hình Transformer, với khối bên trái là encoder và bên phải là decoder

Luận văn tốt nghiệp - Năm học 2021-2022 Trang 17/60

Trang 20

Trường Đại Học Bách Khoa TP Hồ Chí Minh

Khoa Khoa Học và Kỹ Thuật Máy Tính

Hình 2.7: Kiến trúc Transformer[15]

2.7.2 Cơ chế Self-Attention

Transformer sử dụng cơ chế Self-Attention thay vì cho cơ chế hồi quy, từ đó môhình hiểu được ngữ cảnh của câu đang xét, sự liên quan của các từ trong câu vớinhau Ví dụ như “đá” trong câu “Tôi đá quả bóng.” sẽ khác với “đá” khi ở trong câu

“Tôi uống nước đá.”

Dưới đây là một số ví dụ về độ tương quan của các từ trong các attention khác nhau:

Hình 2.8: Ví dụ về attention trong transformer[16]

Cách tính Self-Attention như sau:Self-Attention nhận đầu vào gồm các ma trận

Trang 21

query(q), key (k) của chiều dk và value(v) Từng giá trị trả ra sẽ được tính bằng cáchnhân tích vô hướng của Q với K, sau đó chia từng giá trị cho căn bậc hai của dk và

áp dụng hàm softmax cho giá trị vừa có được trước khi nhân với ma trận trọng số V.Công thức:

• dk: số chiều của vector k

Hình 2.9: Mô tả các bước tính ma trận attention[16]

2.7.3 Multi-Head Attention

Multi-Head Attention là sự gộp lại của nhiều cơ chế Self-Attention Multi-head tention giúp mô hình nhận biết được thông tin từ nhiều không gian khác nhau tạitừng thời điểm khác nhau Các ma trận attention bên trên sẽ nhân với một ma trận

at-W0 để trả về ma trận output có cùng kích thước với ma trận input Công thức:

MultiHead = concat(head1, head2, head3, )W0

Trong đó: headi là output của ma trận attention

Luận văn tốt nghiệp - Năm học 2021-2022 Trang 19/60

Trang 22

Trường Đại Học Bách Khoa TP Hồ Chí Minh

Khoa Khoa Học và Kỹ Thuật Máy Tính

2.7.4 Mã hoá vị trí (Positional Encoding)

Hình 2.10: Positional Encoding trong kiến trúc Transformer[15]

Trong xử lý ngôn ngữ tự nhiên, vị trí các giá trị trong chuỗi có ý nghĩa quan trọng,giúp xác định được ngữ cảnh của từ trong chuỗi Transformer, do không sử dụngkiến trúc hồi quy để xử lý tuần tự các ký tự trong câu, mà xử lý cả một chuỗi dữ liệucùng lúc, nên mô hình cần một phương pháp giúp xác định được vị trí của các từtrong chuỗi Để xác định được vị trí của các từ trong câu, mô hình thêm vào giá trịembedding một vector giúp xác định vị trí

Công thức tính giá trị positional encoding của vector vị trí như sau:

P Epos,2i = sin(pos/100002i/dmodel )

P Epos,2i+1 = cos(pos/100002i/dmodel )Trong đó:

• pos: là vị trí của từ trong chuỗi

• i: là vị trí của chiều trong không gian embedding

Trang 23

Hình 2.11: Mô tả quá trình add vector thể hiện vị trí vào vector Embedding[13]

2.8 Mô Hình Bert

2.8.1 Tổng quan

BERT (Bidirectional Encoder Representations from Transformers)[2] là mô hình vềlĩnh vực xử lý ngôn ngữ tự nhiên, được huấn luyện sẵn (pre-trained model) dựa trên cấutrúc của Transformers,tập dữ liệu được sử dụng cho quá trình huấn luyện lớn và tổngquát nên hầu như mô hình có thể hiểu và có thể sử dụng trong nhiều lĩnh vực

2.8.2 Kiến trúc

BERT có kiến trúc bao gồm nhiều lớp Transformer chồng lên nhau Gọi L là sốlớp Transformer, H là các lớp ẩn (hidden), A là số heads Attention,tham số của haiphiên bản BERT là BERTbase và BERTlarge như sau:

-BERTbase: L=12, H=768, A=12, Tổng số tham số (Total Parameters)=110M

-BERTlarge: L=24, H=1024, A=16, Tổng số tham số (Total Parameters)=340M

2.8.3 Huấn luyện BERT

Để học được các tham số, vector biểu diễn cho từng từ mà hiểu được các ngữcảnh xung quanh từ đó, mô hình BERT được huấn luyện thông qua hay bài toán là

dự đoán từ bị che mất (Mask Language Model) dựa vào các từ lân cận và dự đoánxem hai câu có phải là liên tiếp nhau hay không (Next Sentence Prediction) Dữ liệuhuấn luyện là Wikipedia bằng Tiếng Anh (2500 triệu từ) và BookCorpus (500 triệu từ)với tổng cộng khoảng 3,3 tỷ từ BERT được huấn luyện theo phương pháp họckhông giám sát với hai tác vụ là che từ bằng lớp mặt nạ (Mask Language Model) và

dự đoán câu tiếp theo (Next Sentence Prediction)

2.8.3.1 Masked Language Model (MLM)

Với MLM thì chúng ta sẽ tiến hành che một số từ từ câu đầu vào và mô hình sẽtiến hành dự đoán ra các từ được che đó dựa vào những từ xung quanh nó

Trước khi đưa vào BERT, thì 15% số từ trong chuỗi được thay thế bởi token[MASK] và mô hình sẽ dự đoán từ được thay thế bởi [MASK] với context là các từkhông bị thay thế bởi [MASK] Mask LM gồm các bước xử lý sau :

• Thêm một classification layer với input là output của Encoder

Luận văn tốt nghiệp - Năm học 2021-2022 Trang 21/60

Trang 24

Trường Đại Học Bách Khoa TP Hồ Chí Minh

Khoa Khoa Học và Kỹ Thuật Máy Tính

• Nhân các vector đầu ra với ma trận embedding để đưa chúng về không gian từ vựng (vocabulary dimensional)

• Tính toán xác suất của mỗi từ trong tập từ vựng sử dụng hàm softmax

(Trong thực tế, 15% không phải là cố định mà có thể thay đổi theo mục đích từngbài toán.)

Hình 2.12: Kiến trúc Masked LM[3]

2.8.3.2 Next Sentence Prediction (NSP)

Dùng MLM có thể mã hoá ngữ cảnh của từ theo hai chiều, nhưng vẫn không thểbiểu diễn được mối liên hệ giữa các câu một cách tường minh,nên mô hình đã đượchuấn luyện với tác vụ dự đoán câu tiếp theo, sử dụng một cặp câu là dữ liệu đầu vào

và dự đoán câu thứ 2 là câu tiếp theo của câu thứ 1 hay không Trong quá trình huấnluyện, 50% lượng dữ liệu đầu vào là cặp câu trong đó câu thứ 2 thực sự là câu tiếptheo của câu thứ 1, 50% còn lại thì câu thứ 2 được chọn ngẫu nhiên từ tập dữ liệu.Một số nguyên tắc được đưa ra khi xử lý dữ liệu như sau:

• Chèn token [CLS] vào trước câu đầu tiên và [SEP] vào cuối mỗi câu

• Các token trong từng câu được đánh dấu là A hoặc B

• Chèn thêm vector embedding biểu diễn vị trí của token trong câu (chi tiết về vector embedding này có thể tìm thấy trong bài báo về Transformer[15])

Trang 25

Hình 2.13: Mô tả input cho bài toán Next Sentence Prediction[3]

Các bước xử lý trong Next Sentence Prediction:

• Toàn bộ câu đầu vào được đưa vào Transformer

• Chuyển vector output của [CLS] về kích thước 2x1 bằng một classification layer

• Tính toán xác suất IsNextSequence bằng softmax

2.8.3.3 Phương pháp Fine-tuning BERT

Với mỗi tác vụ, cần thay đổi đầu vào của tập dữ liệu huấn luyện riêng cho phù hợp với

mô hình BERT, đầu ra của mô hình mới sẽ cần thêm một lớp đầu ra (output layer) tương ứng với tác vụ mong muốn, sau đó tiến hành huấn luyện và tinh chỉnh cho mô hình mới với

bộ trọng số ban đầu là bộ trọng số được huấn luyện trước của mô hình BERT:

Đối với Classification, cần thêm vào một Classification Layer với input là outputcủa Transformer cho token [CLS]

Đối với bài toán Question Answering, model nhận dữ liệu input là đoạn văn bản cùngcâu hỏi và được huấn luyện để đánh nhãn cho câu trả lời trong đoạn văn bản đó

Đối với bài toán Named Entity Recognition (NER), model được huấn luyện để dựđoán nhãn cho mỗi token (tên người, tổ chức, địa danh, )

Luận văn tốt nghiệp - Năm học 2021-2022 Trang 23/60

Trang 26

Trường Đại Học Bách Khoa TP Hồ Chí Minh

Khoa Khoa Học và Kỹ Thuật Máy Tính

Hình 2.14: BERT trong nhiều loại bài toán xử lí ngôn ngữ tự nhiên khác nhau[12]

Một điều quan trọng nữa, RoBERTa sử dụng 160GB văn bản để huấn luyện.Trong đó, 16GB là BookCorpus và Wikipedia được sử dụng trong huấn luyện BERT.Phần còn lại bao gồm CommonCrawl News dataset (63 triệu bản tin, 76 GB), ngữliệu văn bản Web (38 GB) và Common Crawl Stories (31 GB) Mô hình này đượchuấn luyện với GPU của Tesala 1024 V100 trong một ngày

Kết quả là, RoBERTa vượt trội hơn cả BERT trên dữ liệu đánh giá GLUE[17]

Trang 27

Hình 2.15: Trích từ paper của RoBERTa[4]

2.8.5 PhoBERT

PhoBERT[6] là sản phẩm được nhóm tác giả của VinAI [45] phát triển và giớithiệu vào năm 2020,PhoBERT là một pre-trained được huấn luyện monolinguallanguage, tức là chỉ huấn luyện dành riêng cho tiếng Việt Việc huấn luyện dựa trênkiến trúc RoBERTa của Facebook

PhoBERT được huấn luyện trên khoảng 20GB dữ liệu bao gồm khoảng 1GB namese Wikipedia corpus và 19GB còn lại lấy từ Vietnamese news corpus Đây là một lượng dữ liệu khá ổn để train một mô hình như BERT PhoBERT sử dụng RDRSeg- menter[7] của VnCoreNLP để tách từ cho dữ liệu đầu (ví dụ: “kỹ sư” là “kỹ_sư” thay vì tách

Viet-từ như các phương pháp thông thường là “kỹ sư” là “kỹ”, “sư”, điều này sẽ làm mất đi

ý nghĩa của từ) vào trước khi qua fastBPE[8] encoder Hiệu năng của mô hìnhPhoBERT cho Tiếng Việt rất tốt, hầu như đánh bại tất cả các mô hình tốt nhất ở thờiđiểm đó nếu so sánh với các tác vụ dành riêng cho Tiếng Việt

Hình 2.16: Hiệu năng của các mô hình với tập data NER và NLI[6]

Luận văn tốt nghiệp - Năm học 2021-2022 Trang 25/60

Trang 28

Trường Đại Học Bách Khoa TP Hồ Chí Minh

Khoa Khoa Học và Kỹ Thuật Máy Tính

2.9 Hệ thống TODS

Hình 2.17: Kiến trúc của hệ thống TODs[5]

Hệ thống Chatbot chúng tôi xây dựng dựa thuộc vào loại TODS(Task-orienteddialogue systems)[1], đây là loại Chatbot được thiết kế để thực hiện các tác vụ trongmột lĩnh vực nhất định, cụ thể ở đây là cung cấp thông tin về đại dịch Covid-19

TODS có hai hướng tiếp cận đó là pipeline và end-to-end Hướng tiếp cậnpipeline tức là hệ thống sẽ được chia thành các module nhỏ, mỗi module sẽ thựchiện một tác vụ khác nhau, tiến trình xử lý của hệ thống sẽ tuần tự đi qua từngmodule và trả về phản hồi Ngược lại end-to-end tức là hệ thống được thiết kế vớimột module duy nhất để xử lý yêu cầu của người dùng Trong phạm vi hệ thốngChatbot của chúng tôi sẽ sử dụng hướng tiếp cận theo pipeline

Trước hết chúng ta cần phải hiểu được một số khái niệm cơ bản:

• Slot: là đối tượng để ánh xạ giá trị các trường trong Database với với các thôngtin mà người dùng cung cấp, ví dụ thông tin người dùng cung cấp là "bị ho có phảinhiễm covid không?" thì triệu chứng “ho” sẽ được ánh xạ vào cặp key-value là

“symptom: ho” để tiện cho việc truy xuất dữ liệu

• Action: là hành động mà Chatbot có thể làm, thể hiện khả năng của Chatbot(ví

dụ: tìm thông tin về covid, đưa ra chẩn đoán )

• Domain: là một tập các intents, entities, slots, actions Chúng thể hiện cho tất

cả những gì Chatbot có thể hiểu (thông qua intents, entities, slots) và có thể làm(actions)

• Tracker Store: là cơ sở dữ liệu để lưu trữ lịch sử cuộc hội thoại của Chatbot vớingười dùng

• Knowledge DB: là cơ sở dữ liệu lưu trữ tri thức của Chatbot Ví dụ như: thông tin về các triệu chứng, dịch bệnh

Kiến trúc của một pipeline TODs được mô tả trong hình 2.17 gồm 4 module đảm nhận các vai trò khác nhau, đầu ra của module trước sẽ là đầu vào của module sau Ngoài ra một

số hệ thống TODs có thể được tích hợp thêm các dịch vụ Automatic Speech Recognition (ASR) và Text to Speech (TTS) để cung cấp khả năng tương tác bằng giọng nói cho Chatbot Giúp Chatbot có thể tương tác một cách tốt nhất với người dùng.

Trang 29

2.9.1 Khối Natural Language Understanding (NLU)

Đây là module chịu trách nhiệm chuyển đổi tin nhắn văn bản của người dùng thànhmột dạng dữ liệu có cấu trúc đã được định nghĩa từ trước Dạng dữ liệu có cấu trúc nàychính là các Intents, Entities mà mỗi Chatbot sẽ được quy định khác nhau

Để làm được điều này khối NLU sẽ phải giải quyết 2 bài toán trong lĩnh vực xử lýngôn ngữ tự nhiên là Intent Classification(IC) và Named Entity Recognition(NER) haycòn được gọi là Entity Extraction Bài toán IC giải quyết vấn đề phân loại tin nhắncủa người dùng vào một bộ các Intents đã định nghĩa trước Bài toán NER giải quyếtvấn đề trích xuất các thông tin có trong tin nhắn của người dùng

Ví dụ với tin nhắn “Thông tin về các triệu chứng của covid19":

Các Intents, Entities này sau đó được tổng hợp thành định dạng như

"re-quest_diagnostic(symptom=ho)" sau đó gửi đến module DST

2.9.2 Khối Dialogue Manager (DM)

Khối Dialogue State Tracking (DST)

Dialogue State Tracking là module chịu trách nhiệm theo dõi và cập nhật trạng thái của cuộc hội thoại Có 2 luồng xử lý riêng biệt trong module này bao gồm:

• Luồng 1: cập nhật các thông tin, slots, intents, được trích xuất bởi khối NLU

• Luồng 2: cập nhật các thông tin được xác định bởi Dialogue Policy

Ở luồng thứ nhất khối DST sẽ thực hiện các tiến trình sau:

• Cập nhật Intent và Entities được gửi tới từ NLU vào Tracker Store

• Truy xuất lịch sử cuộc trò chuyện từ Tracker Store bao gồm các Intents,

Entities, Slots, Actions trong những lịch sự cuộc trò chuyện trước đó

• Dựa trên Intent và Entities tại trạng thái hiện tại và lịch sử cuộc trò chuyện thực hiện cập nhật giá trị của các Slots

• Cập nhật giá trị của Slots mới vào Tracker Store Sau đó gửi trạng thái hiện tạicủa hệ thống cho module Dialogue Policy Trạng thái của hệ thống được gửi tớiDialogue Policy bao gồm: Intent, Entities, Slots và lịch sử cuộc trò chuyện

Luận văn tốt nghiệp - Năm học 2021-2022 Trang 27/60

Trang 30

Trường Đại Học Bách Khoa TP Hồ Chí Minh

Khoa Khoa Học và Kỹ Thuật Máy Tính

Luồng thứ 2 được kích hoạt sau khi module Dialogue Policy hoàn thành các tác vụ

Khối Dialogue Policy (DP)

Đây là module thực hiện dự đoán hành động kế tiếp mà Chatbot cần thực hiệndựa trên trạng thái cuộc hội thoại được gửi tới từ khối DS Từ trạng trái của cuộc hộithoại bao gồm:

• Intent: request_diagnostic

• Entity: (symptom=ho)

• History: Intents, Entities, Actions của những lượt trước đó

DP sẽ đưa ra dự đoán hành động kế tiếp là request_covid_test, tức là hỏi ngườidùng đã thực hiện xét nghiệm covid trong thời gian gần đây hay chưa, để có thể đưa

ra chẩn đoán chính xác nhất (đây là 1 ví dụ ở kịch bản chẩn đoán sẽ được chúng tôigiải thích ở những phần tiếp theo)

2.9.3 Khối Natural Language Generation (NLG)

Đây là module chịu trách nhiệm tạo ra câu trả lời bằng ngôn ngữ tự nhiên từ kếtquả của module DP Phương pháp là sử dụng một bộ các mẫu câu có sẵn kết hợpvới kết quả từ DP để tạo ra câu trả lời Ví dụ kết quả của module DP trả về làrep_hello NLG sẽ tạo ra câu trả lời với mẫu câu "Xin chào, mình là Chatbot hỗ trợgiải đáp các thắc mắc về Covid19"

Trang 31

Công nghệ sử dụng

Trong chương này, nhóm chúng tôi giới thiệu các công nghệ và công cụ hỗ trợcho quá trình xây dựng hệ thống tư hội thoại tư vấn tự động, bao gồm các ngôn ngữlập trình, các thư viện và các nền tảng hỗ trợ lập trình

3.1 Ngôn ngữ lập trình

3.1.1 Python

Python là một ngôn ngữ lập trình thông dịch do Guido van Rossum tạo ra năm

1990 Python được phát triển trong một dự án mã nguồn mở, do tổ chức phi lợinhuận Python Software Foundation quản lý

• Có hệ thống thư viện hỗ trợ phong phú, hỗ trợ mạnh về tính toán trong lĩnh vựcHọc máy như Numpy, Pandas, Sklearn, TensorFlow, Keras

29

Ngày đăng: 17/12/2022, 05:04

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w