2.5.1 Giới thiệu cơ chế Attention
Trong một số trường hợp của bài tốn dịch máy, ta có thể khơng cần biết tồn bộ các từ để dịch một từ. Ví dụ với câu “I am going to school”, ta không cần quan tâm đến các từ phía sau “I” để có thể dịch được nó. Tuy nhiên, với mơ hình Encoder-Decoder, tồn bộ câu sẽ được nén thành một context vector để tiến hành dịch.
Để khắc phục điều này, và tận dụng ý tưởng các từ ở câu đích chỉ "chú ý" đến một số từ ở câu nguồn, Bahdanau đã đề xuất mơ hình Seq2seq kết hợp với cơ chế Attention [16](Hình 2.16). Trong mơ hình này, xác suất của một từ tại bước decode thứiđược tính bằng:
Hình 2.16:Mơ hình Encoder-decoder với Additive attention mechanism trong bài báo của Bah- danau (Nguồn: [16]).
CHƯƠNG 2 KIẾN THỨC NỀN TẢNG 20 vớisilà hidden state của Decoder-RNN tại bướci:
si= f(si−1,yi−1,ci)
vàciđược gọi là context vector tại bước thứi.
Context vectorciphụ thuộc vào toàn bộ các hidden state của Encoder(h1, ...,hT), và được tính
bằng tổng có trọng số của các hidden state này: ci=
Tx ∑ j=1
αi jhj
Trọng sốαi j cho mỗi hidden statehjđược tính bằng: αi j = exp ei j
∑Txk=1exp(eik)
với:
eiJ=score si−1,hj
được gọi là alignment model, thể hiện từ thứ j ở output liên quan như thế nào đến từ thứi ở input.
Hình 2.17:Alignment matrix với câu nguồn "L’accord sur l’Espace économique européen a étésigné en aoˆut 1992" trong tiếng Pháp và câu đích "The agreement on the European Economic signé en aoˆut 1992" trong tiếng Pháp và câu đích "The agreement on the European Economic Area was signed in August 1992" trong tiếng Anh (Nguồn: [16]).
Có nhiều cách để hiện thực hàm score, đó có thể là một mơ hình feed-forward network với một layer được train cùng với model hoặc đó cũng có thể là một hàm, do đó có rất nhiều biến thể của Attention.
CHƯƠNG 2 KIẾN THỨC NỀN TẢNG 21
2.5.2 Mơ hình Transformer
2.5.2.1 Giới thiệu
Một trong các vấn đề của RNN và các biến thể đó là mơ hình phải tính tốn tuần từ từ bước đầu tiên cho đến bước cuối cùng vì để tính được output ở bước thứi, cần phải có output ở bước thứ i−1, vấn đề phụ thuộc này làm cho RNN tính tốn rất chậm và khơng tận dụng được tối đa sức mạnh tính tốn song song của máy tính cũng như các thiết bị hỗ trợ tính tốn như GPU, TPU. Mơ hình Transformer [17] do Vaswani đề xuất đã giải quyết được vấn đề này. Transformer có kiến trúc như mơ hình Encoder-Decoder, tuy nhiên thành phần cốt lõi của Encoder, Decoder không phải là RNN mà là Attention. Kiến trúc của Transformer bao gồm:
CHƯƠNG 2 KIẾN THỨC NỀN TẢNG 22
2.5.2.2 Encoder và Decoder
Encoder:Encoder là một khối gồm 6 layer giống nhau được xếp chồng lên nhau. Mỗi layer bao gồm hai sub-layer. Sub-layer thứ nhất là cơ chế Multi-Head Attention và sub-layer thứ hai là một lớp Fully Connected Feed-Forward theo từng vị trí. Xung quanh mỗi sub-layer có sử dụng một đường Residual Connection [18] và một Layer Normalization [19] tại ouput của mỗi sub-layer.
Decoder:Decoder có cấu trúc tương tự như Encoder, tuy nhiên ở phần Decoder có thêm một sub-layer thứ ba ở giữa hai sub-layer đó là layer Multi-Head Attention, layer này sẽ thực hiện tính tốn Attention của Decoder dựa vào output của Encoder. Layer Multi-Head Attention đầu tiên được sửa đổi lại với với cơ chế Masking (mặt nạ) để khi tính tốn output tại bước thứi, mơ hình chỉ có thể được biết thơng tin tại các bước nhỏ hơni, do đó được gọi là Masked Multi-Head Attention. Cả Encoder và Decoder sẽ có số chiều cho input và output chung làdmodel.
2.5.2.3 Attention
Scaled Dot-Product Attention Một cách tổng quát, cơ chế Attention có thể phát biểu dưới dạng công thức: Attention(Q,K,V) =so f tmax QK⊤ √ dk V
vớiQ,K,V là các vector hoặc ma trận input,dk là số chiều của input. Thông thườngQ,K,V là các ma trận và sẽ chính là output của Encoder hoặc Decoder. VớiQ=K=V =Out putEncoder ta có Self-Attention trong Encoder, vớiQ=K =V =Out putDecoder ta có Self-Attention trong Decoder, vớiQ=Out putDecodervàK=V =Out putEncoder ta có Intra-Attention trong Decoder.
Multi-Head Attention Tác giả Vaswani nhận thấy rằng, thay vì thực hiện một lần hàm Atten- tion trên Queries, Keys, Values của toàn bộ output của Encoder và Decoder với số chiềudmodel, ta có thể chiếu tuyến tính Queries, Keys, Valueshlần xuống chiều khơng gian dq,dk,dv tương ứng, với mỗi phiên bản của Queries, Keys, Values, ta thực hiện hàm Attention một cách song song, thu đượchoutput có số chiều làdv. Các output này sẽ được concat (nối) với nhau, sau đó được chiếu tuyến tính về chiều khơng gian gốc làdmodel.
Multi-Head Attention cho phép model cùng lúc học được cách chú ý vào nhiều thông tin khác nhau, tại các vị trí khác nhau. Nếu chỉ dùng Single-Head thì model chỉ có thể học được duy nhất một thơng tin mà thôi.
MultiHead(Q,K,V) =Concat(head1, ...,headh)WO vớiheadi=Attention
QWiQ,KWIK,VWiV
WiQ,WK i ,WV
i ,WOlà các ma trận chiếu và cũng là các ma trận tham số sẽ được học cùng model: WiQ∈Rdmodel×dk,WK
i ∈Rdmodel×dk,WV
i ∈Rdmodel×dv,WO∈Rhdv×dmodel.
Position-wise Feed-Forward Networks Theo sau mỗi lớp Attention là một lớp Fully Con- nected Feed-Forward network, lớp này sẽ được áp dùng cho mỗi vị trí của output của lớp Atten- tion một cách phân biệt và giống nhau. Lớp này gồm hai phép biến đổi tuyến tính và sử dụng hàm ReLU ở cuối.
CHƯƠNG 2 KIẾN THỨC NỀN TẢNG 23
FFN(x) =max(0,xW1+b1)W2+b2
Các phép biến đổi này có cùng ma trận tham số ở các vị trí khác nhau trong cùng một layer, nhưng chúng khác nhau ở mỗi layer.
Positional Encoding Vì model khơng chứa các lớp RNN nên cần phải có cơ chế để model phân biệt được vị trí của các từ trong input, nếu khơng việc tính tốn các hàm Attention sẽ cho ra kết quả giống nhau ở bất kì vị trí nào. Để làm được việc này, ta cần thêm thơng tin về vị trí tương đối hoặc tuyệt đối của mỗi từ trong chuỗi input. Lớp Positional Encoding sẽ thêm thơng tin về vị trí tương đối của mỗi từ bằng cách cộng các giá trị Position Embedding vào các giá trị của Word Embedding của mỗi từ trong chuỗi input.
PE(pos,2i)=sinpos/10002i/d‘model
PE(pos,2i+1)=cos
pos/10002i/d‘model
với poslà vị trí cần encode vàilà chiều thứitrong vector encode.
2.6 Mơ hình Generative Pre-trained Transformer
GPT-2 là mơ hình được nhóm nghiên cứu OpenAI cơng bố vào năm 2019 [20]. Đây là một mơ hình ngơn ngữ có khả năng sinh các đoạn văn bản. Mơ hình được huấn luyện trên tập BookCorpus với hơn 7000 quyển sách thuộc nhiều thể loại khác nhau. Kiến trúc mơ hình GPT- 2 được thiết kế giống như GPT nhưng có nhiều tham số hơn và cả hai đều được thiết kế dựa trên phần decoder của mơ hình Transformer. Vì thiết kế dựa trên decoder của Transformer cho phép GPT có thể sinh liên tục từ tiếp theo. Tuy nhiên điều này làm mất đi khả năng hiểu được ngữ cảnh từ hai phía của câu.
Hình 2.19:Mơ tả khối decoder được dùng trong GPT
Mơ hình GPT dùng khối decoder của mơ hình Transformer, tuy nhiên, khối này khơng cịn tầng Self-Attention nữa (như hình 2.19). Lớp cuối cùng của mơ hình là một lớp Fully-Connected để cho ra kết quả ứng với từ điển của mơ hình.
CHƯƠNG 2 KIẾN THỨC NỀN TẢNG 24
2.7 Mơ hình Bidirectional Encoders Representation from Trans-former (BERT)former (BERT) former (BERT)
BERT [21] được phát triển bởi nhóm nghiên cứu Google AI. Mơ hình này được thiết kế để biểu diễn văn bản. Mơ hình BERT thường có các phiên bản đã được huấn luyện trên tập lớn dữ liệu tổng qt như BookCorpus hay Wikipedia. Mơ hình BERT được thiết kế dựa trên phần encoder của mơ hình Transformer. Chính vì thế, BERT có khả năng hiểu được ngữ cảnh của cả câu từ hai hướng. Mơ hình BERT có thể dùng trên các tác vụ cụ thể hơn như trả lời câu hỏi, phân loại văn bản,. . . Với mỗi tác vụ khác nhau thì mơ hình áp dụng BERT cũng được thiết kế lại (như hình 2.20).
3
CÁC CƠNG TRÌNH LIÊN QUAN
Trong chương này, tơi sẽ trình bày một số nghiên cứu và mơ hình học máy mà tơi tham khảo trong quá trình nghiên cứu luận văn này.
Mục lục
3.1 Chatbot tiếng Việt dựa trên mạng nơ-ron (A Neural Network Based Vietnamese Chatbot) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.2 Mô hình BERT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
CHƯƠNG 3 CÁC CƠNG TRÌNH LIÊN QUAN 26
3.1 Chatbot tiếng Việt dựa trên mạng nơ-ron (A Neural Net- work Based Vietnamese Chatbot)
Đây là một bài báo trên hội nghị SMART năm 2018 của tác giả Trang Nguyen và Maxim Shcherbakov [22]. Bài nghiên cứu chủ yếu xây dựng mơ hình chatbot cho tiếng Việt sử dụng mơ hình Sequence to Sequence kết hợp với cơ chế Attention. Trong bài viết, các tác giả có đề cập đến một số mơ hình nổi tiếng về dịch máy như sử dụng nhiều tầng của LSTM kết hợp với cơ chế Attention và tác giả của bài viết cũng sử dụng mơ hình tương tự.
Dữ liệu được dùng trong bài nghiên cứu này được lấy từ các trang web học tiếng Anh cho người Việt Nam. Tập dữ liệu có chứa các 1331 cặp câu hỏi và câu trả lời. Hình 3.1 ví dụ mẫu dữ liệu của tác giả.
Hình 3.1:Ví dụ về cặp câu hỏi và trả lời [22]
Sau khi thực hiện huấn luyện mơ hình qua 300.000 bước, tác giả có đưa ra một số nhận xét về mơ hình như sau:
• Kết quả được đánh giá bằng độ đo perplexity trong q trình huấn luyện là 6,845. • Cơ chế attention có ảnh hưởng tốt đến q trình sinh kết quả.
Hình 3.2:Một số kết quả được đề cập trong bài viết [22]
Trong đề tài luận văn này, nhóm sẽ hiện thực lại mơ hình trên cho tập dữ liệu ở mục 4.1 và so sánh với mơ hình GPT trên cùng tập dữ liệu để so sánh khả năng của hai mơ hình.
3.2 Mơ hình BERT
Mơ hình BERT [21] được đề xuất bởi nhóm nghiên cứu tại Google AI. Đây là một mơ hình ngơn ngữ được thiết kế cho nhiều tác vụ trong xử lý ngôn ngữ tự nhiên như trả lời câu hỏi, sinh câu tiếp theo. Mơ hình sẽ được huấn luyện khơng giám sát như một mơ hình ngơn ngữ trước.
CHƯƠNG 3 CÁC CƠNG TRÌNH LIÊN QUAN 27
Hình 3.3:Tổng qt quá trình tiền huấn luyện và áp dụng của mơ hình BER [21]
Sau quá trình tiền huấn luyện, các tham số của mơ hình sẽ được dùng để huấn luyện cho một nhiệm vụ cụ thể.
Một trong những áp dụng mà mơ hình BERT được sử dụng nhiều là tác vụ trả lời câu hỏi. Trong tác vụ này, theo nghiên cứu cho thấy hiệu quả của mơ hình rất tốt. Khi so sánh với các mơ hình khác trong cùng thời điểm đều có các điểm số vượt trội hơn. Cụ thể các số liệu như hình 3.4 và 3.5.
Hình 3.4:So sánh kết quả trên tập SQuAD 1.1 [21]
Trong đề tài này, nhóm sẽ sử dụng mơ hình BERT để giải quyết bài tốn trả lời câu hỏi tiếng Việt về người và áp dụng vào chatbot. Ngồi ra, nhóm sẽ phát triển thêm bộ tìm kiếm các đoạn văn bản liên quan bằng Google để có thể trả lời các câu hỏi của người dùng.
CHƯƠNG 3 CÁC CƠNG TRÌNH LIÊN QUAN 28
Hình 3.5:So sánh kết quả trên tập SQuAD 2.0 [21]
3.3 Mơ hình GPT-2
Mơ hình GPT-2 [20] được phát triển bởi nhóm nghiên cứu tại OpenAI. Mơ hình này được thiết kế để giải quyết các bài tốn của xử lý ngơn ngữ tự nhiên như trả lời câu hỏi, tóm tắt văn bản,. . . mà khơng cần phải huấn luyện có giám sát. Thay vào đó, mơ hình được huấn luyện trên tập dữ liệu rất lớn là WebText. Sau đó mơ hình được đánh giá trên các tập dữ liệu khác nhau và cho kết quả tốt so với những mơ hình cùng thời điểm. Cụ thể như hình 3.6, mơ hình có tham số ít nhất là mơ hình giống với GPT gốc, mơ hình tiếp theo là mơ hình lớn nhất của BERT, hai mơ hình cuối cùng tương ứng với GPT-2.
Hình 3.6:So sánh kết quả mơ hình GPT-2 [20]
Tuy nhiên với mơ hình có nhiều tham số như GPT-2 sẽ tiêu tốn rất nhiều tài nguyên máy tính cũng như thời gian đáp ứng cho hệ thống chatbot. Chính vì thế, nhóm sẽ điều chỉnh lại số lượng tham số của mơ hình để có thể phù hợp với ứng dụng chatbot và tiến hành huấn luyện mơ hình trên tập dữ liệu tiếng Việt được đề cập ở mục 4.1.
4
TẬP DỮ LIỆU
Trong chương này, nhóm sẽ trình bày các tập dữ liệu được sử dụng trong luận văn và các phương pháp tiền xử lí được thực hiện trên tập dữ liệu. Hầu hết các bộ dữ liệu đều được chia sẻ miễn phí, tuy nhiên cũng có bộ dữ liệu bị giới hạn quyền truy cập.
Mục lục
4.1 Dữ liệu phụ đề phim tiếng Việt - OpenSubtitles . . . . . . . . . . . . . . . . . . . 30
CHƯƠNG 4 TẬP DỮ LIỆU 30
4.1 Dữ liệu phụ đề phim tiếng Việt - OpenSubtitles
Tập dữ liệu OpenSubtitles [23] [24] được xây dựng từ bộ dữ liệu phụ đề của các bộ phim được đăng tại địa chỉ:https://www.opensubtitles.orgvà đã được tiền xử lý và công bố tại địa chỉ:https://opus.nlpl.eu/OpenSubtitles-v2018.php
Bộ dữ liệu bao gồm 41.8 triệu từ và 5.1 triệu câu với mỗi câu tương ứng một dòng trong tập dữ liệu.
Dữ liệu được lọc và tiền xử lý qua các bước sau: • Loại bỏ những câu quá dài và quá ngắn.
• Xố các thành phần không quan trọng: tên nhân vật ở đầu câu, dấu đóng/mở ngoặc, dấu "-".
Tiền xử lý dữ liệu với thơng số: • Số từ ít nhất: 2
• Số từ nhiều nhất: 128
Thống kế sau khi tiền xử lý dữ liệu:
Tổng số câu 5073177 Độ dài trung bình 6.61 từ Độ lệch chuẩn 4.73 từ Độ lớn từ điển 96243 từ
Bảng 4.1:Thống kê chi tiết bộ dữ liệu OpenSubtitles đã xử lý
4.2 Tập dữ liệu trả lời câu hỏi
Dữ liệu trả lời câu hỏi có dạng SQuAD 2.0 có thể truy cập tại địa chỉhttps://github.com/ mailong25/bert-vietnamese-question-answering/tree/master/dataset. Tập dữ liệu
này có khoảng 3454 mẫu dữ liệu và có 2328 mẫu có câu trả lời. Cấu trúc của một mẫu dữ liệu bao gồm:
• context: là văn bản để tìm câu trả lời từ câu hỏi.
• qas: là một mảng các câu hỏi và câu trả lời. Với mỗi phần tử có dạng:
– answers: là câu trả lời cho câu hỏi, gồm có vị trí bắt đầu của câu trả lời và câu trả lời được lấy từ văn bản.
– question: là câu hỏi.
5
ĐẶC TẢ VÀ HIỆN THỰC HỆ THỐNG
Trong chương này, nhóm sẽ mơ tả và hiện thực hệ thống chatbot.
Mục lục 5.1 Thiết kế hệ thống . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 5.2 Chi tiết các thành phần . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 5.3 Vấn đề cần giải quyết . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 5.4 Khó khăn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 5.5 Giải pháp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
CHƯƠNG 5 ĐẶC TẢ VÀ HIỆN THỰC HỆ THỐNG 32
5.1 Thiết kế hệ thống
5.1.1 Tổng quan về kiến trúc hệ thống và chức năng
Hình 5.1:Kiến trúc tổng quan hệ thống
Hệ thống chatbot được thiết kế gồm hai thành phần chính bao gồm: giao diện người dùng và