1. Trang chủ
  2. » Luận Văn - Báo Cáo

Chatbot tìm kiếm thông tin về nhà hàng

61 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Nội dung

Phạm vi đề tài: trong hệ thống, tiếng Anh sử dụng làm ngôn ngữ trao đổi giữa người dùng và chatbot. Dựa vào chức năng phân loại ý định để biết nhu cầu cơ bản của người dùng. Phân tích ngữ nghĩa để trích xuất nội dung cần tìm kiếm liên quan đến nhà hàng như tên, địa chỉ, món ăn, rating (min, max, trung bình) hay số lượng nhà hàng, ..

Trang 1

Chatbot tìm kiếm thông tin về nhà hàng

Trang 2

Tóm tắt nội dung đồ án

Ngày nay, con người ngày càng có nhiều nhu cầu về tìm kiếm thông tin trên web để phục vụ nhu cầu, sở thích của bản thân như tìm sản phẩm mua sắm, địa điểm ăn uống, địa điểm du lịch, … Bên cạnh đó, việc tương tác với người quản lý trang web (hệ thống) này cũng sẽ gặp nhiều khó khăn khi không thể phục vụ 24/7, hoặc trả lời một số lượng lớn người một lúc

Từ thực tế trên, cùng với sự định hướng và gợi ý của TS Trần Việt Trung, em đã xây dựng nên hệ thống chatbot để phục vụ việc tìm kiếm thông tin đơn giản về nhà hàng áp dụng phân tích ngữ nghĩa Đồ án được làm dựa trên những kiến thức về Deep learning cùng với ngôn ngữ lập trình Python Về cơ bản, hệ thống có thể tìm kiếm các thông tin về tên nhà hàng, địa điểm, rating, món ăn bằng tiếng Anh

Hà Nội, ngày 08 tháng 01 năm 2021 Sinh viên thực hiện

Ký và ghi rõ họ tên

Trang 3

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 3

2.1 Một số khái niệm liên quan 3

2.2 Chatbot và phương hướng tiếp cận 5

Giới thiệu về Chatbot 5

Các phương hướng tiếp cận 8

Cơ sở lý thuyết 10

2.3 Một vài nét về mô hình Transformer 10

2.4 Một vài nét về mô hình BERT 16

2.5 Giới thiệu qua về phân tích ngữ nghĩa 24

CHƯƠNG 3 THIẾT KẾ KIẾN TRÚC 25

4.1 Phân loại ý định (Intent Classification) 31

Dữ liệu đào tạo 31

Mô hình phân loại ý định 36

4.2 Phân tích ngữ nghĩa (Semantic Parsing) 38

Dữ liệu đào tạo 38

Mô hình phân tích ngữ nghĩa (Text2SQL) 40

4.3 Web 46

API 46

Giao diện 47

Trang 4

5.2 Hướng phát triển trong tương lai 53

TÀI LIỆU THAM KHẢO 54

Trang 5

Hình 2.6 Transformer Encoder và Decoder 12

Hình 2.7 Minh họa vector của word embedding 12

Hình 2.8 Word embedding và encoder 12

Hình 2.9 Mối liên giữa các từ trong câu 13

Hình 2.10 Minh họa Query vector, Key vector và Value vector 14

Hình 2.11 Minh họa tính điểm trong self-attention 14

Hình 2.12 Minh họa bước 3 và 4 trong tính toán self-attention 15

Hình 2.13 Minh họa bước 5 và 6 trong tính toán self-attention 15

Hình 2.14 Minh họa ý tưởng Multihead attention 16

Hình 2.15 BERT và bộ dữ liệu SQuAD v1.1 18

Hình 2.16 BERT trong một số tác vụ suy luận 18

Hình 2.17 Cấu trúc BERT base, OpenAI và ELMo 19

Hình 2.18 Trực quan hóa đại diện đầu vào của BERT 19

Hình 2.19 Đại diện câu của BERT 20

Hình 2.20 Masked ML 22

Hình 3.1 Sơ đồ tổng quan hệ thống 25

Hình 4.1 Tạo dữ liệu dùng Chatito 33

Hình 4.2 Ví dụ khi tạo slot name 34

Hình 4.3 Ví dụ khi tạo alias “how are you” 35

Hình 4.4 File bye.chatito 35

Hình 4.5 Định dạng dữ liệu khởi tạo 36

Hình 4.6 Chi tiết trường common_example trong dữ liệu khởi tạo 36

Hình 4.7 Phân loại intent áp dụng BERT 37

Hình 4.8 Định dạng dữ liệu trong file kiểu “*.jsonl” 38

Hình 4.9 Định dạng dữ liệu trong file kiểu "*.tables.jsonl" 39

Hình 4.10 Mã hóa câu hỏi và tiêu đề bảng 44

Hình 4.11 Minh hoạ mô hình dự đoán 44

Hình 4.12 Minh họa mô hình phân tích ngữ nghĩa 45

Hình 4.13 mô hình tương tác của Vuex 48

Hình 4.14 Giao diện 49

Hình 4.15 Xác định ngôn ngữ 50

Trang 6

Hình 4.16 Kết quả sau khi phân tích ngữ nghĩa 51

Trang 7

DANH MỤC BẢNG

Bảng 3.1 Bảng thông tin nhà hàng 27Bảng 3.2 Bảng thông tin người dùng 28Bảng 3.3 Bảng thông tin lịch sử hội thoại 28

Trang 8

CHƯƠNG 1 GIỚI THIỆU CHUNG

Mặc dù còn mới mẻ, nhưng cùng với những bước đột phá trong lĩnh vực xử lý ngôn ngữ tự nhiên gần đây, thì tốc độ nghiên cứu và phát triển chatbot vẫn đang là khá nhanh và cũng đã đạt được một số thành tựu nhất định

1.2 Mục đích và phạm vi đề tài

Mục đích chính của đồ án này là tìm hiểu về xử lý ngôn ngữ tự nhiên Áp dụng, xây dựng hệ thống chatbot để trả lời cho những câu hỏi tìm kiếm thông tin đơn giản về nhà hàng

Phạm vi đề tài: trong hệ thống, tiếng Anh sử dụng làm ngôn ngữ trao đổi giữa người dùng và chatbot Dựa vào chức năng phân loại ý định để biết nhu cầu cơ bản của người dùng Phân tích ngữ nghĩa để trích xuất nội dung cần tìm kiếm liên quan đến nhà hàng như tên, địa chỉ, món ăn, rating (min, max, trung bình) hay số lượng nhà hàng,

1.3 Bố cục đồ án

Nội dung đồ án gồm 5 chương:

Chương 1 - Giới thiệu chung

Chương mở đầu đặt ra vấn đề, xác định mục tiêu và phạm vi của đề tài

Chương 2 - Cơ sở lý thuyết

Trình bày chi tiết một số khái niệm liên quan, lý thuyết tiền đề Tìm hiểu bài toán xây dựng chatbot và phương pháp tiếp cận

Chương 3 - Phân tích, thiết kế và triển khai Tổng quan thiết kế của hệ thống

Chương 4 – Xây dựng ứng dụng

Trang 9

Triển khai chức năng

Thực nghiệm Đánh giá

Chương 5 - Kết luận:

Đánh giá kết quả đồ án đạt được, chưa đạt được, đóng góp

Phương hướng để cải thiện, phát triển đề tài trong tương lai Phần cuối của đồ án là danh sách tài liệu tham khảo

Trang 10

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT

2.1 Một số khái niệm liên quan

Contextual (Ngữ cảnh): là ngữ cảnh của từ Một từ được định nghĩa bởi

một cách phát âm nhưng khi được đặt trong những câu khác nhau thì có thể mang ngữ nghĩa khác nhau Ngữ cảnh có thể coi là môi trường xung quanh từ để góp phần định nghĩa từ

Downstream task (Nhiệm vụ hạ lưu): là những tác vụ supervised-learning

được cải thiện dựa trên những pretrained model

Ví dụ: Sử dụng lại các biểu diễn của từ học được từ những pre-trained model trên bộ văn bản lớn vào một tác vụ phân tích ý định của người dùng, huấn luyện trên bộ văn bản có kích thước nhỏ hơn Áp dụng pretrain-embedding đã giúp cải thiện mô hình Như vậy tác vụ sử dụng pre train-embedding được gọi là downstream task

Hyperparameter (Siêu tham số): trong học máy, siêu tham số là một tham

số có giá trị được sử dụng để kiểm soát quá trình học Ngược lại, các giá trị của các tham số khác có được thông qua đào tạo

Token (Từ tố): là một dãy các ký tự mang ý nghĩa cụ thể, biểu thị cho một

đơn vị ngữ nghĩa trong xử lý ngôn ngữ Nhiều khi token được hiểu là một từ mặc dù cách hiểu này không hoàn toàn chính xác Ví dụ: trong tiếng Anh các từ thường được phân tách bằng dấu cách, tuy nhiên từ New York vẫn chỉ được coi là một từ mặc dù nó có dấu cách ở giữa

Tokenization: là quá trình chuyển một dãy các ký tự thành một dãy các

token Trong Xử lý ngôn ngữ tự nhiên, Tokenization là bước cơ bản và là bước đầu tiên cần thực hiện trước khi có thể tiến hành việc phân tích sâu hơn Kết quả của quá trình Tokenization chính là đầu vào cho các quá trình xử lý tiếp theo như xác định Part of Speech, Lemma, Named Entity Recognition, …

SOTA (State of the Art): là những phương pháp, kỹ thuật tốt nhất, hiện

đại nhất mang lại hiệu quả cao nhất của một công nghệ, một lĩnh vực khoa học, hoặc một thiết kế nào đó đạt được từ trước đến thời điểm được công bố

Task: nhiệm vụ, tác vụ

Trang 11

Pre-training: đào tạo máy móc, trước khi chúng bắt đầu thực hiện một

nhiệm vụ cụ thể

Pre-train model: là mô hình đã được đào tạo trước Thay vì xây dựng mô

hình từ đầu để giải quyết vấn đề tương tự, bạn sử dụng mô hình được đào tạo về vấn đề khác làm điểm khởi đầu

Fine-tuning: nghĩa là sử dụng một mô hình đã được đào tạo tốt để tiếp tục

thực hiện một nhiệm vụ tương tự bằng cách điều chỉnh nó một chút

MLM (Masked Language Model): là mô hình mà bối cảnh của từ được

học từ cả 2 phía bên trái và bên phải cùng một lúc từ những bộ dữ liệu unsupervised text Dữ liệu input sẽ được masked (tức thay bằng một token MASK) một cách ngẫu nhiên với tỷ lệ thấp Huấn luyện mô hình dự báo từ được masked dựa trên bối cảnh xung quanh là những từ không được masked nhằm tìm ra biểu diễn của từ

WordPiece: là kỹ thuật phân đoạn các từ thành cấp độ từ phụ (subword)

trong nhiệm vụ NLP Nó được sử dụng trong các mô hình như BERT, mặc dù về nguyên tắc có thể được sử dụng cho nhiều mô hình NLP Nó tạo ra một bộ từ vựng có kích thước cố định do người dùng chỉ định cho các tác vụ NLP kết hợp cả từ và từ phụ

Ví dụ: running → run + ##ing

Embedding: nhúng là một kỹ thuật biểu diễn biến rời rạc từ một không

gian phức tạp nhiều chiều sang dạng các vector có giá trị thực trong không gian có số chiều thấp hơn

NLP (Natural language processing): xử lý ngôn ngữ tự nhiên là một

nhánh của trí tuệ nhân tạo giúp máy tính hiểu, giải thích và vận dụng ngôn ngữ của

con người

NLU (Natural Language Understanding): là phương pháp giúp các hệ

thống máy tính như chatbot hiểu được các mệnh lệnh của người dùng mà không dựa trên bất kỳ ngôn ngữ, cấu trúc nào được định nghĩa sẵn trong hệ thống

NLG (Natural Language Generation): là một quá trình phần mềm biến đổi dữ liệu có cấu trúc thành ngôn ngữ tự nhiên

Intent: ý định

NER (Named Entity Recognition): còn được gọi là nhận dạng thực thể,

phân đoạn thực thể hoặc trích xuất thực thể, là tác vụ cơ bản trong lĩnh vực Xử lý ngôn ngữ tự nhiên Vai trò chính của tác vụ này là nhận dạng các cụm từ trong văn bản và phân loại chúng vào trong các nhóm đã được định trước như tên người, tổ chức, địa điểm, thời gian, loại sản phẩm, nhãn hiệu,

GLUE score benchmark (Điểm khái quát đánh giá mức độ hiểu ngôn

Trang 12

giá, phân tích khái quát mức độ hiểu ngôn ngữ của các model NLP Các đánh giá được thực hiện trên các bộ dữ liệu tiêu chuẩn được quy định tại các quy ước về phát triển và thúc đẩy NLP Mỗi bộ dữ liệu tương ứng với một loại tác vụ NLP như: Phân tích cảm xúc (Sentiment Analysis), hỏi và đáp (Question and Answering), dự đoán câu tiếp theo (NSP - Next Sentence Prediction), nhận diện thực thể trong câu (NER - Named Entity Recognition), suy luận ngôn ngữ tự nhiên (NLI - Natural Language Inference)

Encoder: Bộ mã hóa Decoder: Bộ giải mã

RNN (Recurrent neural network): Mạng hồi quy

LSTM (Long short-term memory): Mạng bộ nhớ dài-ngắn là một dạng đặc biệt của RNN, nó có khả năng học được các phụ thuộc xa

2.2 Chatbot và phương hướng tiếp cận

Giới thiệu về Chatbot

Chatbot là một ứng dụng phần mềm, chương trình máy tính dùng để tương tác trực tiếp với người dùng thông qua ngôn ngữ tự nhiên dưới dạng văn bản hoặc âm thanh

Sự ra đời của chatbot là một cách mạng hóa tương tác giữa khách hàng và người cung cấp dịch vụ Với khả năng bắt chước các cuộc hội thoại và cung cấp kết nối kỹ thuật số ngay lập tức, giúp tiết kiệm thời gian, chi phí, tăng sự hài lòng của khách hàng Không khó để các doanh nghiệp có thể nhận ra sự tích cực mà chatbot đem lại Trên thực tế, Gartner dự đoán rằng vào năm 2021, hơn 50% doanh nghiệp sẽ chi nhiều hơn cho việc tạo bot và chatbot hàng năm so với phát triển ứng dụng di động truyền thống

Bên cạnh đó, AI và Machine learning trở thành một trong những công nghệ được đầu tư mạnh nhất trong vài năm trở lại đây giúp cho việc xử lý ngôn ngữ tự nhiên trở nên đơn giản và chính xác hơn rất nhiều

Các doanh nghiệp, không phân biệt ngành nghề đang tận dụng tối đa sự hỗ trợ từ việc sử dụng chatbot Ngoài việc chatbot hoạt động như một đại lý dịch vụ cho một doanh nghiệp để tương tác với khách hàng 24x7, nó còn có thể giúp đỡ doanh nghiệp bằng cách cung cấp các dữ liệu để phục vụ việc phân tích, dự đoán hành vi của người dùng Do đó, một chương trình, công nghệ và loại chatbot phụ thuộc rất nhiều vào nhu cầu của doanh nghiệp và cơ sở khách hàng mà nó sẽ phục vụ

Một số loại chatbot:

- Chatbot theo kịch bản:

Trang 13

+ Chatbot tương tác với người dùng thông qua một cơ sở hữu hạn các lựa chọn, kịch bản Các kịch bản này đã được soạn sẵn, nó chính là các trường hợp có thể xảy ra khi khách hàng trò chuyện với chatbot

+ Người dùng chỉ được lựa chọn những câu trả lời cho sẵn Sẽ không xảy ra việc bot không hiểu ý người dùng

+ Chatbot kiểu này chỉ phù hợp với các yêu cầu cố định, quy mô trường hợp nhỏ như là khảo sát, hỗ trợ bán hàng, … + Việc xây dựng kịch bản chatbot không hề đơn giản Xây dựng

một kịch bản chatbot hoàn chỉnh đòi hỏi người làm phải đầu tư nhiều về thời gian lẫn công sức Với trường hợp quy mô lớn thì khó có thể xây dựng chatbot có thể đáp ứng được hết các kịch bản có thể xảy ra Nội dung là kịch bản nên sẽ cứng nhắc khó có khả năng giao tiếp rộng hơn

+ Sở hữu một kịch bản chatbot với nội dung tốt sẽ giúp nâng cao trải nghiệm mua sắm của khách hàng, từ đó kích thích được việc mua hàng cũng như tạo được mối quan hệ tích cực giữa khách hàng với thương hiệu

+ Yêu cầu xây dựng một bộ mẫu cực kì lớn và tốn kém

+ Có nhiều câu hỏi mà người dùng đặt cho bot không rõ ràng về ngữ pháp, ngữ nghĩa, bot đọc từ khóa không chính xác dẫn đến phương án trả lời không đúng

Trang 14

- Chatbot thông minh:

+ Về cơ bản, nó sử dụng công nghệ AI - Xử lý ngôn ngữ tự nhiên (NLP) để ánh xạ đầu vào của người dùng (văn bản hoặc giọng nói) theo ý định Sau đó phân tích ngôn ngữ để có được câu trả lời

+ Người dùng có thể đặt bất kỳ câu hỏi nào, kể cả những câu hỏi không có liên quan đến sản phẩm, doanh nghiệp Sự tự do trong đầu vào cũng khiến thân thiện với người dùng hơn + Sự linh hoạt khi phân tích ngôn ngữ tự nhiên giúp chatbot dễ

nắm bắt nhiều loại người dùng khác nhau, thu thập dữ liệu cần thiết và cung cấp hỗ trợ

+ Tuy nhiên, mức độ thấu hiểu hội thoại thực tế chỉ khoảng 70% tùy thuộc vào dữ liệu, mô hình đào tạo bot

60-+ Có nhiều câu hỏi mà người dùng đặt cho bot không rõ ràng về ngữ nghĩa, bot đọc từ khóa không chính xác dẫn đến phương án trả lời không đúng

Hình 2.2 Chatbot thông minh

Trong giới hạn của đề tài này, em sẽ sử dụng chatbot áp dụng công nghệ xử lý ngôn ngữ tự nhiên và tập trung trình bày về nó

Trang 15

Các phương hướng tiếp cận

Chatbot có thể trông giống một ứng dụng bình thường, cũng có giao thức tầng ứng dụng (application layer), giao diện lập trình ứng dụng API (Application Programming Interface) và cơ sở dữ liệu (database) Giao diện người dùng UI (User Interface) của chatbot là giao diện trò chuyện Mặc dù, chatbot cung cấp các tính năng dễ dàng cho người dùng có thể sử dụng nhưng lại phức tạp, tinh vi trong quá trình xây dựng, phát triển, quản lý

Khi xây dựng chatbot, bất cứ ai cũng phải giải quyết các vấn đề cơ bản: người dung đang thực sự muốn gì, hệ thống phải phản hồi ra sao, …

Chính vì vậy, thông thường chatbot đơn giản sẽ được xây dựng dựa trên 4 bài toán:

- Xác định, phân loại ý định người dùng (intent classification hay intent detection)

- Trích xuất thông tin (information extraction) - Quản lý hội thoại (Dialog management) - Sinh hội thoại cho chatbot

Phân loại ý định người dùng

Thông thường, người dùng thường truy cập hệ thống chatbot với mong muốn hệ thống sẽ đưa ra những hành động trợ giúp mình về một vấn đề nào đó

Ví dụ: Người dùng muốn “tìm các nhà hàng ở Hà Nội” Để đưa ra hỗ trợ, phản hồi chính xác, chatbot cần phải xác định được ý định đó của người dùng Nếu sai, chatbot sẽ đưa ra những phản hồi không đúng, không hợp ngữ cảnh Người dung dần dần sẽ thấy chán và không bao giờ sử dụng lại hệ thống nữa

Đối với miền ứng dụng đóng, chúng ta có thể giới hạn rằng số lượng ý định của người dùng nằm trong một tập hữu hạn những intent đã được định nghĩa sẵn, có liên quan đến những nghiệp vụ doanh nghiệp mà chatbot có thể hỗ trợ Với giới hạn này, bài toán xác định ý định người dùng có thể quy về bài toán phân lớp văn bản Với đầu vào là một câu giao tiếp của người dùng, hệ thống phân lớp sẽ xác định intent tương ứng với câu đó trong tập các intent đã được định nghĩa

Bài toán phân lớp: cho trước một tập đào tạo bao gồm các cặp (câu hội thoại, intent), D = {(x1, y1), …, (xn, yn)}, trong đó xi là các câu hội thoại và yi là intent tương ứng cho xi Các intent yi nằm trong một tập hữu hạn Κ các intent được định nghĩa trước Mô hình sau khi được học sẽ có khả năng phân lớp một câu hội thoại mới vào một trong các intent thuộc tập K

Khi đã có một bộ dữ liệu đủ lớn, đa dạng cho từng intent thì chúng ta sẽ tiến hành xây dựng, đào tạo cho mô hình phân lớp

Trang 16

Hình 2.3 Xác định intent

Trích xuất thông tin

Bên cạnh việc xác định intent trong câu hội thoại của người dùng, chúng ta cần hiểu các thông tin cần thiết trong đó Các thông tin được trích xuất có thể là tên sản phẩm, tên nhà hàng, địa chỉ, số điện thoại, thời gian, …

Khi xác định được đầy đủ thông tin cần thiết thì hệ thống truy vấn cơ sở dữ liệu chính xác hơn

Thông thường, các thông tin cần trích xuất trong một câu hội thoại thường là các thực thể thuộc về một loại nào đó

Ví dụ: Khi một khách hàng muốn đặt vé tàu, hệ thống cần biết các thực thể như địa điểm xuất phát, địa điểm khách muốn đến, và ngày giờ khách hàng muốn đi

Quản lý hội thoại

Một bộ quản lý hội thoại sẽ lưu trữ, phân tích và tận dụng ngữ cảnh cuộc hội thoại và giúp chatbot suy luận hành động tiếp theo

Ví dụ: người dùng hỏi “tôi muốn đặt vé máy bay” => chatbot sẽ hiểu ngữ cảnh và phản hồi lại để yêu cầu những thông tin còn thiếu cần thiết “bạn muốn bay đi đâu, vào lúc nào”

Hầu hết các hệ thống chatbot đều có thể lưu trữ dữ liệu các cuộc đối thoại với người dùng Bên phía người phát triển sẽ tận dụng nhật ký dữ liệu để nhìn lại, cố gắng phân tích khách hàng đang có ý định gì, tại sao chatbot không hiểu, … Với sự kết hợp của các mô hình và công cụ Machine Learning, chatbot sẽ ngày càng được cải thiện chất lượng theo thời gian cũng giống như kinh nghiệm tiếp xúc khách hàng của một nhân viên bán hàng

Sinh hội thoại cho chatbot

Một thành phần xử lý ngôn ngữ tự nhiên khác có thể được thêm vào chatbot là bộ sinh ngôn ngữ (NLG) Trong khi NLG giúp sinh câu trả lời đầy đủ, tự nhiên nhất bằng ngôn ngữ tự nhiên cho chatbot

Tiếp cận qua một số nền tảng hỗ trợ

- RASA:

Trang 17

+ Là một nền tảng mạnh trong việc phân tích nội dung, quản lý hội thoại trong việc phát triển chatbot dựa trên Machine Learning + Dễ tiếp cận cho người mới bắt đầu

+ Có thể tự tùy chỉnh chatbot theo ý thích của bản thân - Dialogflow:

+ Là Framework phát triển chatbot do Google sở hữu + Nhiều ngôn ngữ được hỗ trợ

+ Kèm theo đó là Dialogflow cũng được phát triển dựa trên Machine Learning nên bạn hoàn toàn có thể dạy cho chatbot biết cách xử lý các trường hợp, ngữ cảnh khác nhau

Cơ sở lý thuyết

Việc đầu tiên, hệ thống phải hiểu được rõ mục tiêu, ý định người dùng hướng đến sau mỗi tin nhắn Sau đó, nếu ý định phù hợp với nội dung đề tài (tìm kiếm thông tin về nhà hàng) thì sẽ tiến hành phân tích ý nghĩa, ngữ nghĩa Phân tích ngữ nghĩa ở đây có nghĩa là chuyển ngôn ngữ tự nhiên sang một dạng khác để hệ thống có thể hiểu và xử lý được

Để việc phân tích ngôn ngữ tự nhiên có hiệu quả hơn thì trong phạm vi đồ án này em sẽ chủ yếu là sử dụng mô hình BERT (xây dựng dựa trên các Transformers) Bởi nó là một trong những mô hình hiện đại và ưu việt nhất hiện nay

Một vài nét cơ bản về Transformers, BERT sẽ được trình bày ở phần sau

2.3 Một vài nét về mô hình Transformer

Transformers

Kiến trúc tổng quan của mô hình transformer bao gồm 2 phần lớn là encoder và decoder Encoder (bộ mã hóa) dùng để học vector biểu của câu với mong muốn rằng vector này mang thông tin của câu đó Decoder (bộ giải mã) thực hiện chức năng chuyển vector biểu diễn kia thành ngôn ngữ đích

Ví dụ: Encoder của mô hình transformer nhận một câu tiếng anh “little sun”, và encode thành một vector biểu diễn ngữ nghĩa của câu đó Sau đó mô hình decoder nhận vector biểu diễn này, và dịch nó thành câu tiếng việt “mặt trời bé nhỏ”

Trang 18

Hình 2.4 Kiến trúc tổng quan của mô hình transformer

Transformer bao gồm sáu bộ mã hóa và sáu bộ giải mã

Hình 2.5 Kiến trúc Transformer

Encoder:

+ Bao gồm 6 layer liên tiếp, có kiến trúc giống nhau

+ Mỗi bộ mã hóa bao gồm hai lớp: Self-attention và Feed Forward Neural Network

+ Bộ mã hóa đầu đi qua Self-attention Nó giúp bộ mã hóa xem xét các từ khác trong câu đầu vào khi nó mã hóa một từ cụ thể

+ Kết thúc quá trình encoder ta thu được một vector embedding output cho mỗi từ

Trang 19

Hình 2.6 Transformer Encoder và Decoder

Self-Attention

Hãy bắt đầu xem xét các vector/tensor khác nhau và cách chúng di chuyển giữa các thành phần này để biến đầu vào của một mô hình được đào tạo thành đầu ra Như trường hợp trong các ứng dụng NLP nói chung, chúng ta bắt đầu bằng cách biến mỗi từ đầu vào thành một vector bằng thuật toán nhúng (embedding)

Hình 2.7 Minh họa vector của word embedding

Mỗi từ được nhúng vào một vector có kích thước 512 Chúng ta sẽ biểu diễn cho các vector đó bằng các hộp đơn giản như hình minh họa bên trên

Việc nhúng chỉ xảy ra trong bộ mã hóa dưới cùng Tất cả các bộ mã hóa sẽ nhận được một danh sách các vector mỗi kích thước 512

Sau khi nhúng các từ trong chuỗi đầu vào, mỗi từ sẽ chảy qua từng lớp trong hai lớp của bộ mã hóa

Hình 2.8 Word embedding và encoder

Trang 20

Trước tiên, hãy xem xét cách tính toán self-attention bằng cách sử dụng vector, sau đó tiến hành xem cách thức mà nó thực sự thực hiện - sử dụng ma trận

Hình 2.9 Mối liên giữa các từ trong câu

Bước đầu tiên tạo ra ba vector từ mỗi vector đầu vào của bộ mã hóa (trong trường hợp này là nhúng từng từ) Vì vậy, với mỗi từ, chúng ta tạo một Query vector (vector truy vấn), Key vector (vector khóa) và Value vector (vector giá trị) Các vector này được tạo ra bằng cách nhân embedding với ba ma trận mà chúng ta đã huấn luyện trong quá trình đào tạo

- Query vector: vector dùng để chứa thông tin của từ được tìm kiếm, so sánh Giống như là câu query của google search

- Key vector: vector dùng để biểu diễn thông tin các từ được so sánh với từ cần tìm kiếm ở trên Ví dụ: các trang web mà google sẽ so sánh với từ khóa mà bạn tìm kiếm

- Value vector: vector biểu diễn nội dung, ý nghĩa của các từ Nó giống như là nội dung trang web được hiển thị cho người dùng sau khi tìm kiếm

Lưu ý: các vector mới này có kích thước nhỏ hơn embedding vector Kích

thước của chúng là 64, trong khi các vector đầu vào / đầu ra của bộ mã hóa và embedding có kích thước là 512 Đây là một lựa chọn kiến trúc để làm cho tính toán của multiheaded attention (hầu hết) không đổi

Trang 21

Hình 2.10 Minh họa Query vector, Key vector và Value vector

Nhân X1 với ma trận trọng số WQ sẽ tạo ra q1, Query vector được liên kết với từ đó, … Cuối cùng, nó sẽ tạo ra Query vector, Key vector và Value vector của mỗi từ trong câu đầu vào

Bước thứ hai trong việc tính toán self-attention là tính điểm Giả sử, chúng ta tính toán self-attention cho từ đầu tiên trong ví dụ này, "Thinking" Chúng ta cần chấm điểm từng từ của câu đầu vào so với từ này Điểm số xác định mức độ tập trung vào các phần khác của câu đầu vào khi chúng ta mã hóa một từ tại một vị trí nhất định

Điểm số được tính bằng cách lấy dựa vào query vector với key vector của từ tương ứng mà chúng ta chấm điểm Vì vậy, nếu chúng ta xử lý việc self-attention cho từ ở vị trí số 1, điểm số đầu tiên sẽ dựa vào q1 và k1 Điểm thứ hai sẽ dựa vào q1 và k2

Hình 2.11 Minh họa tính điểm trong self-attention

Bước thứ ba và thứ ba là chia điểm số cho 8 (căn bậc hai kích thước của các key vector được sử dụng - 64 Điều này dẫn đến việc có độ dốc ổn định hơn Có thể có các giá trị khác, nhưng đây là mặc định), sau đó chuyển kết quả thông qua softmax Softmax chuẩn hóa điểm số để nó có thể dương và và tổng cộng bằng 1

Trang 22

Hình 2.12 Minh họa bước 3 và 4 trong tính toán self-attention

Điểm số softmax này xác định mức độ, khả năng mỗi từ sẽ được thể hiện ở vị trí này Rõ ràng từ ở vị trí này sẽ có điểm softmax cao nhất, nhưng đôi khi nó rất hữu ích khi tham gia vào một từ khác có liên quan đến từ hiện tại

Bước thứ năm là nhân mỗi value vector với điểm số softmax (để chuẩn bị tính tổng chúng) Giữ nguyên vẹn các giá trị của (các) từ mà chúng ta muốn tập trung vào, và gần như không để ý vào các từ không liên quan (Ví dụ: nhân chúng với các số nhỏ như 0,001)

Bước thứ sáu là tổng hợp các trọng số value vector Điều này tạo ra đầu ra của lớp self-attention ở vị trí này (đối với từ đầu tiên)

Hình 2.13 Minh họa bước 5 và 6 trong tính toán self-attention

Vector kết quả là một Vector chúng ta có thể gửi cùng với mạng thần kinh feed-forward

Multihead attention

Trang 23

Transformers về cơ bản hoạt động như vậy Có một vài chi tiết khác làm cho chúng hoạt động tốt hơn

Ví dụ: thay vì chỉ chú ý đến nhau trong một chiều, Transformers sử dụng khái niệm về sự chú ý của Multihead (Multihead attention)

Ý tưởng đằng sau nó là bất cứ khi nào bạn dịch một từ, bạn có thể có các chú ý khác nhau đến từng từ dựa trên loại câu hỏi mà bạn đang hỏi

Ví dụ: bất cứ khi nào bạn đang dịch “kicked” trong câu “I kicked the ball”, bạn có thể hỏi “Who kicked” Tùy thuộc vào câu trả lời, bản dịch của từ này sang ngôn ngữ khác có thể thay đổi Hoặc hỏi những câu hỏi khác, như “Did what?”,

Hình 2.14 Minh họa ý tưởng Multihead attention

Positional Encoding

Một bước quan trọng khác trong Transformer là thêm mã hóa vị trí khi mã hóa từng từ Mã hóa vị trí của mỗi từ có liên quan, vì vị trí của mỗi từ có liên quan đến bản dịch

2.4 Một vài nét về mô hình BERT

Sự thiếu hụt dữ liệu đào tạo đã được các chuyên gia nghiên cứu khẳng định là một trong những thách thức lớn nhất trong lĩnh vực xử lý ngôn ngữ tự nhiên Mặc dù đây là một lĩnh vực rộng lớn và đa dạng với nhiều nhiệm vụ riêng biệt, hầu hết các tập dữ liệu đều chỉ phục vụ đặc thù cho từng nhiệm vụ Để thực hiện được tốt những nhiệm vụ này ta cần những bộ dữ liệu lớn chứa hàng triệu, hàng tỷ mẫu ví dụ Tuy nhiên, trong thực tế hầu hết các tập dữ liệu hiện giờ chỉ chứa vài nghìn hoặc vài trăm nghìn mẫu được đánh nhãn bằng tay bởi các chuyên gia ngôn ngữ học Sự thiếu hụt dữ liệu có nhãn chất lượng cao để đào tạo mô hình gây cản trở lớn cho sự phát triển của NLP nói chung

Để giải quyết thách thức này, các nhà nghiên cứu đã phát triển các kỹ thuật khác nhau để đào tạo ra các mô hình tìm ra đại diện chung của ngôn ngữ sử dụng một số lượng lớn các văn bản chưa được gán nhãn lấy từ các trang web (điều này

Trang 24

được gọi là đào tạo trước) Ví dụ: một số mô hình đã được nghiên cứu trước đây để thực hiện nhiệm vụ này như Word2vec, Glove hay FastText

Các pre-trained model cho mục đích chung này sau đó có thể được tinh chỉnh trên các bộ dữ liệu cụ thể cho nhiệm vụ nhỏ hơn Ví dụ: phân tích cảm xúc (Sentiment Analysis), trả lời câu hỏi (Question Answering), Cách tiếp cận này mang lại sự cải thiện độ chính xác tuyệt vời hơn so với đào tạo trên các bộ dữ liệu cụ thể về nhiệm vụ nhỏ hơn từ đầu

Tuy nhiên, các mô hình kể trên có những điểm hạn chế riêng của nó, đặc biệt là không thể hiện được sự đại diện theo ngữ cảnh cụ thể của từ trong từng lĩnh vực hay văn cảnh cụ thể

Tiếp nối sự thành công nhất định của các mô hình trước đó, Google đã công

bố thêm 1 kỹ thuật mới được gọi là Bidirectional Encoder Representations from Transformers (BERT), có nghĩa là mô hình biểu diễn từ theo ngữ cảnh 2 chiều

ứng dụng kỹ thuật Transformer Khi nó xuất hiện có thể coi là 1 bước đột phá mới trong lĩnh vực xử lý ngôn ngữ tự nhiên

Cơ chế attention của Transformer sẽ truyền toàn bộ các từ trong câu văn đồng thời vào mô hình một lúc mà không cần quan tâm đến chiều của câu Do đó Transformer được xem như là huấn luyện hai chiều (bidirectional) Đặc điểm này cho phép mô hình học được bối cảnh của từ dựa trên toàn bộ các từ xung quanh nó bao gồm cả từ bên trái và từ bên phải Ở dạng cơ bản, Transformer bao gồm hai cơ chế riêng biệt: bộ mã hóa mã hóa đầu vào văn bản và bộ giải mã tạo dự đoán cho tác vụ Vì mục tiêu của BERT là tạo ra một mô hình biểu diễn ngôn ngữ, nên chỉ cần cơ chế mã hóa

Vào thời điểm đó (2018), các kỹ sư thuộc Google AI đã so sánh BERT với các mô hình tốt nhất về NLP trước đây trong các nhiệm vụ nhất định để đánh giá hiệu quả mà nó đem lại Điều quan trọng là chúng ta chỉ việc sử dụng BERT thay cho các pre-trained model trước đây mà không cần thực hiện bất kỳ thay đổi nào trong kiến trúc mạng neural sâu

Một số thành tựu tiêu biểu trong lúc đó:

- Tăng GLUE score (General Language Understanding Evaluation score) lên 80.5% (cải thiện thêm 7,7%)

- Tăng accuracy trên bộ dữ liệu MultiNLI đánh giá tác vụ quan hệ văn bản (text entailment) cải thiện thêm 4.6% lên 86.7%

- Trên bộ dữ liệu SQUAD v1.1 (tác vụ question and answering), BERT đạt được kết quả F1_score = 93.2%, vượt kết quả tốt nhất trước đó là 91.6% và hiệu năng mà con người đạt được là 91.2% - Trên SQuAD v2.0 F1_score tăng thêm 5.1% lên thành 83.1%

Trang 25

Hình 2.15 BERT và bộ dữ liệu SQuAD v1.1

Hình 2.16 BERT trong một số tác vụ suy luận

Sau đây là phần triển khai chi tiết của BERT:

Sử dụng BERT có hai giai đoạn: đào tạo trước (pre-training) và tinh chỉnh (fine-tuning)

- Trong quá trình pre-training, mô hình được đào tạo về dữ liệu chưa được gắn nhãn trên các nhiệm vụ pre-training khác nhau

- Để fine-tuning, mô hình BERT trong lần đầu tiên được khởi tạo với các tham số được đào tạo trước và tất cả các tham số được tinh chỉnh bằng cách sử dụng dữ liệu được dán nhãn từ các tác vụ downstream Mỗi tác vụ downstream có các mô hình tinh chỉnh riêng biệt, mặc dù chúng được khởi tạo với cùng các tham số được đào tạo trước

Kiến trúc mô hình (Model Architecture):

Kiến trúc của mô hình BERT là một kiến trúc đa tầng gồm nhiều lớp Bidirectional Transformer encoder

Để giống bài báo gốc, chúng ta sẽ gọi:

Trang 26

- BERT large (L=24, H=1024, A=16, Tổng tham số khoảng 340 Triệu)

BERT base có một kích thước mô hình khá giống mô hinh OpenAI GPT để nhằm mục đích cho tiện so sánh giữa 2 mô hình này Để nói một cách đơn giản:

- BERT sử dụng Transformer 2 chiều

- OpenAI GPT sử dụng kiến trúc Transformer trái sang phải right) Các token chỉ phụ thuộc vào các token trước đó

(left-to ELMo sử dụng kết hợp các LSTM từ trái sang phải và phải sang trái được đào tạo độc lập để tạo ra các đặc trưng cho các tác vụ tiếp theo

Hình 2.17 Cấu trúc BERT base, OpenAI và ELMo

Biểu diễn đầu vào cho BERT (Input Representations):

Ở đây, đầu vào của chúng ta có thể là biểu diễn của một câu văn bản đơn hoặc một cặp câu văn bản

Hình 2.18 Trực quan hóa đại diện đầu vào của BERT

Thông tin input được trước khi đưa vào mô hình huấn luyện bao gồm: - Ngữ nghĩa của từ (token embeddings): Thông qua các embedding

vector cho từng từ Các vector được khởi tạo từ pretrain model - Loại câu (segment embeddings): Gồm hai vector là EA nếu từ thuộc

câu thứ nhất và EB nếu từ thuộc câu thứ hai

- Vị trí của từ trong câu (position embedding): là các vector E0, …, E10 Tương tự như positional embedding trong transformer

Những điều cần lưu ý:

Trang 27

- Sử dụng WordPiece embeddings (Wu et al., 2016) với một từ điển khoảng hơn 30.000 từ và sử dụng ## làm dấu phân tách thành các từ phụ

Ví dụ: từ “playing” được tách thành “play” + “##ing” - Độ dài câu tối đa ứng với Positional embeddings là 512

- Token đầu tiên cho mỗi chuỗi được mặc định là một token đặc biệt có giá trị là [CLS] Đầu ra của Transformer (hidden state cuối cùng) tương ứng với token này sẽ được sử dụng để đại diện cho cả câu trong các tác vụ phân loại (Vector này được bỏ qua nếu không trong các tác vụ phân loại)

Hình 2.19 Đại diện câu của BERT

- Trong trường hợp các cặp câu được gộp lại với nhau thành một chuỗi duy nhất, chúng ta phân biệt các câu theo 2 cách Đầu tiên, chúng ta tách chúng bởi một token đặc biệt [SEP] Thứ hai, chúng ta thêm một segment embedding cho câu A và một segment embedding khác cho câu B như hình vẽ 2.7

- Khi chỉ có 1 câu đơn duy nhất, segment embedding của chúng ta chỉ có cho câu A

- Input embeddings = token embeddings + segmentation embeddings + position embeddings

BERT được đào tạo bằng cách sử dụng 2 nhiệm vụ dự đoán không giám sát được gọi là Masked LM (MLM) và Next Sentence Prediction(NSP)

Masked LM (MLM):

Trang 28

Trực quan mà thấy, một mô hình học sâu được học dựa trên ngữ cảnh 2 chiều là tự nhiên và mạnh mẽ hơn nhiều so với một mô hình chỉ dùng ngữ cảnh từ trái qua phải (hoặc ngược lại)

Tuy nhiên, thật không may các mô hình ngôn ngữ trước đây chỉ có thể đào tạo từ trái qua phải, từ phải qua trái, hoặc kết hợp nông cả 2 Lý do được lý giải là vì khi sử dụng ngữ cảnh 2 chiều sẽ gây ra một nghịch lý là một từ có thể gián tiếp “tự nhìn thấy nó” trong một ngữ cảnh nhiều lớp

Để đào tạo một mô hình tìm ra đại diện dựa vào ngữ cảnh 2 chiều, chúng ta sử dụng một cách tiếp cận đơn giản là che giấu đi một số token đầu vào một cách ngẫu nhiên Sau đó chỉ dự đoán các token được giấu đi đó và gọi nhiệm vụ này như là một "masked LM"

Trong trường hợp này, các hidden vector ở lớp cuối cùng, tương ứng với các token được ẩn đi được đưa vào 1 lớp softmax trên toàn bộ từ vựng để dự đoán Các nhà nghiên cứu của Google đã thử nghiệm che giấu 15% tất cả các token lấy trong câu một cách ngẫu nhiên (token phải trong từ điển của WordPiece), và chỉ dự đoán các từ được che giấu tốt hơn là tái cấu trúc toàn bộ đầu vào

Mặc dù điều này cho phép chúng ta có được một mô hình đào tạo 2 chiều, nhưng vẫn tồn tại nhược điểm Đầu tiên là chúng ta đang có một sự không phù hợp giữa quá trình pre-training và fine-tuning, vì các token được che giấu không bao giờ xuất hiện trong quá trình tinh chỉnh mô hình

Để giảm thiểu điều này, chúng ta sẽ không phải lúc nào cũng thay thế các từ được giấu đi bằng token [MASK] Thay vào đó, trình tạo dữ liệu đào tạo chọn 15% token một cách ngẫu nhiên cho việc dự đoán Nếu token thứ i được chọn, token thứ i có:

- 80% được thay thế bằng token [MASK] - 10% được thay thế bằng token ngẫu nhiên - 10% không thay đổi

Ví dụ: câu: "hôm nay thời tiết đẹp quá" Từ được chọn là từ "đẹp" - 80% => "hôm nay thời tiết [MASK] quá"

- 10% => "hôm nay thời tiết gạch quá" - 10% => "hôm nay thời tiết đẹp quá"

Bên dưới là sơ đồ huấn luyện BERT theo tác vụ Masked ML

Trang 29

Hình 2.20 Masked ML

Trong đó:

- Trước khi truyền vào model, khoảng 15% các token của câu đầu vào được thay thế bởi token [MASK] token đại diện cho những từ bị che dấu Mô hình sẽ dựa trên các từ không bị được che dấu xung quanh [MASK] và đồng thời là bối cảnh của [MASK] để dự báo giá trị gốc của từ được che dấu Số lượng từ được che dấu được lựa chọn chỉ khoảng 15% ít hơn so với tỷ lệ bối cảnh (85%)

- Bản chất của kiến trúc BERT vẫn là một mô hình seq2seq gồm 2 giai đoạn: encoder giúp embedding các từ đầu vào và decoder giúp tìm ra phân phối xác suất của các từ ở đầu ra Kiến trúc Transfomer encoder được giữ lại trong tác vụ Masked ML Sau khi thực hiện self-attention và feedforward ta sẽ thu được các vector embedding ở output là O1, O2, …, O5

- Để tính toán phân phối xác suất cho từ output, chúng ta thêm một Fully connected layer ngay sau Transformer Encoder Số lượng units của fully connected layer phải bằng với kích thước của bộ từ vựng - Nhân các vector đầu ra với ma trận nhúng, biến chúng về bằng kích

thước của bộ từ vựng

- Dùng hàm softmax có tác dụng tính toán phân phối xác suất

Transformer encoder không hề biết được từ nào sẽ được yêu cầu dự đoán hoặc từ nào đã được thay thế bằng một từ ngẫu nhiên Do đó, nó buộc phải giữ một biểu diễn theo ngữ cảnh của mỗi token đầu vào Ngoài ra, do thay thế 1.5% (10% trong số 15% được chọn) tất cả các token bằng một từ ngẫu nhiên nên điều này dường như sẽ không làm ảnh hưởng lớn tới khả năng hiểu ngôn ngữ của mô hình Hàm loss function của BERT sẽ bỏ qua mất mát từ những từ không bị che dấu và chỉ đưa vào mất mát của những từ bị che dấu Vì chỉ có khoảng 15% từ được dự đoán trong mỗi đợt, nên mô hình sẽ hội tụ lâu hơn nhưng đây là đặc tính bù trừ cho sự gia tăng ý thức về bối cảnh Việc lựa chọn ngẫu nhiên 15% các từ để

Trang 30

che dấu cũng tạo ra vô số các kịch bản đầu vào cho mô hình đào tạo, nên mô hình sẽ cần phải huấn luyện rất lâu mới học được toàn diện các khả năng

Next Sentence Prediction (NSP):

Đây là một bài toán phân loại học có giám sát với 2 nhãn (hay còn gọi là phân loại nhị phân) Đầu vào của mô hình là một cặp câu (pair-sequence), sao cho:

- 50% câu thứ hai được lựa chọn là câu tiếp theo của câu thứ nhất - 50% được lựa chọn một cách ngẫu nhiên từ bộ văn bản mà không có

mối liên hệ gì với câu thứ nhất

Nhãn của mô hình sẽ tương ứng với IsNext khi cặp câu là liên tiếp hoặc NotNext nếu cặp câu không liên tiếp

Để giúp mô hình phân biệt giữa hai câu trong đào tạo, token [CLS] được chèn vào đầu câu đầu tiên và token [SEP] được chèn vào cuối mỗi câu Các token này có tác dụng nhận biết các vị trí bắt đầu và kết thúc của từng câu thứ nhất và thứ hai

Ví dụ: Cặp câu có mối quan hệ

- Đầu vào: [CLS] người đàn_ông làm [MASK] tại cửa_hàng [SEP] anh_ta rất [MASK] và thân_thiện [SEP]

- Nhãn: IsNext

Ví dụ: Cặp câu không có mối quan hệ

- Đầu vào: [CLS] người đàn_ông làm [MASK] tại cửa_hàng [SEP] con hổ này [MASK] đẹp [SEP]

- Nhãn: NotNext

Fine-tuning BERT

Tinh chỉnh rất đơn giản vì cơ chế tự chú ý (self-attention) trong Transformer cho phép BERT mô hình hóa nhiều tác vụ downstream, đôi khi chỉ cần thêm một layer nhỏ vào mô hình ban đầu:

- Các bài toán phân loại như phân tích tình cảm được thực hiện tương tự như phân loại câu tiếp theo, bằng cách thêm một lớp phân loại trên đầu ra của Transformer cho token [CLS]

- Trong bài toán trả lời câu hỏi (Question Answering), đầu vào nhận được một câu hỏi liên quan đến chuỗi văn bản và được yêu cầu đánh dấu câu trả lời trong chuỗi Sử dụng BERT, một mô hình hỏi và đáp có thể được đào tạo bằng cách học thêm hai vector đánh dấu điểm bắt đầu và kết thúc của câu trả lời

- Trong bài toán nhận dạng thực thể định danh (Named Entity Recognition - NER), đầu vào nhận một chuỗi văn bản và được yêu cầu đánh dấu các loại thực thể khác nhau xuất hiện trong văn bản Ví dụ:

Ngày đăng: 25/06/2024, 17:38

w