Đặt vấn đề Nhân loại ngày càng phát triển, mọi công việc của chúng ta đều đòi hỏi tốc độ và độ chính xác ngày càng cao. Cùng với sự phát triển đó, việc tìm được đáp án chính xác và nhanh chóng cho mỗi câu hỏi là một nhu cầu quan trọng và cấp thiết. Đây cũng chính là những mục tiêu của bài toán trả lời câu hỏi (Question Answering - QA). Trong lĩnh vực xử lý ngôn ngữ tự nhiên (Natural Language Processing - NLP), nó là một bài toán quan trọng.
Trước kia, các phương pháp trả lời câu hỏi dựa trên các kỹ thuật tìm kiếm theo từ khóa hoặc hoặc các mô hình xử lý ngôn ngữ truyền thống như N-gram. Tuy nhiên, những phương pháp này không đủ chính xác khi xử lý những câu hỏi phức tạp hoặc yêu cầu các kiến thức đặc biệt. Trong những năm gần đây, các công ty về lĩnh vực AI đã phát triển ra các mô hình hiện đại hơn cho bài toán trả lời câu hỏi. Trong đó, có rất nhiều mô hình dựa trên kiến trúc Transformer đã được phát triển và trở thành công cụ hữu ích.
Kiến trúc Transformer giúp các mô hình có khả năng xử lý dữ liệu dạng chuỗi với độ dài khác nhau và hiểu được ngữ cảnh của các từ trong câu dựa vào cơ chế Attention. Những ứng dụng của kiến trúc Transformer có thể xây dựng các mô hình học sâu cho bài toán trả lời câu hỏi với độ chính xác cao hơn và khả năng xử lý các câu hỏi phức tạp tốt hơn. Mục tiêu nghiên cứu - Về lý thuyết, chúng tôi muốn tìm hiểu các thành phần chi tiết của kiến trúc Transformer và cách hoạt động của nó. Kiến trúc này gồm hai thành phần chính là Encoder và Decoder.
- Về ứng dụng, chúng tôi sẽ áp dụng các mô hình dựa trên kiến trúc Transformer kết hợp với kỹ thuật Fine-Tuning cho bài toán trả lời câu hỏi dùng tập dữ liệu tiếng Việt để xây dựng một ứng dụng trả lời câu hỏi bằng tiếng Việt. Phạm vi nghiên cứu - Kiến trúc Transformer và các khái niệm liên quan. - Tập dữ liệu Tiếng Việt liên quan đến bài toán trả lời câu hỏi mà chúng tôi có thể thu thập được.Tầm quan trọng của đồ án Đây là một kiến trúc hiện đại và quan trọng trong để giải quyết bài toán trả lời câu hỏi tự động, đặc biệt là trong lĩnh vực xử lý ngôn ngữ tự nhiên. Để có thể sử dụng các mô hình dựa trên kiến trúc Transformer hiệu quả, chúng ta cần phải hiểu rõ được các thành phần của nó và phải tinh chỉnh (fine-tune) mô hình trên tập dữ liệu mà ta làm 2 việc.
Ngoài ra, ở nước ta có rất ít trường nghiên cứu bài toán trả lời câu hỏi áp dụng cho bộ từ ngữ tiếng Việt. Đây cũng là một động lực để chúng tôi thực hiện nghiên cứu này. Việc sử dụng kiến trúc Transformer và phương pháp fine-tuning giúp tăng độ chính xác của các mô hình trả lời câu hỏi, từ đó giúp giải quyết các vấn đề thực tiễn như tăng hiệu quả và độ chính xác của các hệ thống trả lời câu hỏi tự động trong các ứng dụng thương mại điện tử và cải thiện trải nghiệm người dùng khi tương tác với các hệ thống AI. Phương pháp nghiên cứu Chúng tôi tiến hành nghiên cứu dựa bao gồm hai thành phần chính: ● Nghiên cứu dựa trên lý thuyết: chúng tôi sẽ tiến hành nghiên cứu các tài liệu liên quan về Transformer và các ứng dụng của nó trong bài toán trả lời câu hỏi (bao gồm các tài liệu từ các bài báo khoa học, các tài liệu tham khảo từ các ứng dụng thực tế, và các khóa học trực tuyến về chủ đề này).
Kết quả của quá trình này là một tài liệu lý thuyết về kiến trúc Transformer và các ứng dụng của nó. ● Thực nghiệm: Sau khi chúng tôi đã xây dựng được cơ sở lý thuyết, chúng tôi sẽ tiến hành thực nghiệm trên một tập dữ liệu để đánh giá hiệu quả của Transformer trong bài toán trả lời câu hỏi. Kết quả của mô hình sẽ được đánh giá bằng các tiêu chí đánh giá thông qua các tiêu chí trong bài toán trả lời câu hỏi là độ chính xác của mô hình. 3 PHẦN 2: NỘI DUNG CHƯƠNG 2: KIẾN TRÚC TRANSFORMER 2.
Giới thiệu Trước khi có mô hình Transformer, hầu hết các hệ thống NLP tiên tiến đều dựa vào RNN, như LSTM và gate recurrent units (GRUs). Sự ra đời của cơ chế Attention vào năm 2017 đã tạo ra một kiến trúc mới dành cho các bài toán NLP mà không cần có sự xuất hiện của mạng nơ-ron hồi tiếp (RNN, LSTM,…) hay là mạng nơ-ron tích chập (CNN) đó là Transformer. Transformer là gì? Transformer là một mô hình Deep Learning được giới thiệu vào năm 2017 thường được dùng chủ yếu ở các lĩnh vực xử lý các ngôn ngữ tự nhiên (NLP) và thị giác máy tính (CV). Ngoài ra, mô hình còn hỗ trợ lĩnh vực âm thanh nó có thể giúp nhận dạng giọng nói và phân loại từng loại âm thanh hoặc ở lĩnh vực đa phương thức Transformer còn hỗ trợ trả lời câu hỏi trên bảng, nhận dạng ký tự quang học, trích xuất thông tin từ tài liệu được quét và phân loại video và trả lời câu hỏi bằng hình ảnh.
Transformer cũng xử lý dữ liệu tuần tự giống như mạng nơron hồi quy (Recurrent Neural Network - RNN). Tuy nhiên khác với RNN, nó không yêu cầu dữ liệu tuần tự phải được xử lý một cách thứ tự. Ví dụ: Chúng ta có một câu ngôn ngữ tự nhiên thay vì như trước đây ta phải xử lý đầu câu rồi mới đến cuối câu. Nhưng Transformer không yêu cầu điều đó nó cả thể xử lý cả câu văn nên Transformer cho phép thực hiện nhiều phép tính song song điều này giúp giảm thời gian huấn luyện mô hình một cách đáng kể.
Kiến trúc Transformer Transformer gồm hai thành phần chính là Encoder và Decoder như trong hình 1, cả hai thành phần này đều có cấu tạo tương tự nhau gồm nhiều Layers, mỗi Layer được thiết kế với nhiều Sub-Layer. Sub-Layer đầu tiên là Multi-Head Attention Layer, Sub- Layer tiếp theo là Feed Forward Neral Network Layer. 4 Hình 1: Mô hình kiến trúc Transformer [2] 2. Input Embedding Tất cả các thuật toán học sâu đều yêu cầu đầu vào là dữ liệu dạng số.
Tuy nhiên, trong ngôn ngữ tự nhiên, các từ không phải là các giá trị số. Do đó, chúng ta cần phải chuyển đổi các từ sang dạng số để có thể đưa chúng vào mô hình học sâu. Một trong những cách để chuyển đổi từ sang số là sử dụng một lớp nhúng từ (Word Embedding Layer). Lớp này hoạt động như một bảng tra cứu để lấy một biểu diễn vectơ đã học của mỗi từ.
Các mạng nơ-ron học thông qua các số nên mỗi từ sẽ được ánh xạ sang một vector với các giá trị liên tục để biểu diễn từ đó. Ví dụ, các từ "học sinh" và "đi học" có thể được ánh xạ sang các vector khác nhau nhưng vẫn giữ nguyên các mối quan hệ giữa chúng. Điều này cho phép mô hình học được các đặc trưng của từ và sử dụng chúng để thực hiện các tác vụ như phân loại văn 5 bản hay dịch máy. Các con số sẽ dùng để ánh xạ các từ tới một vector có các giá trị liên tục để biểu thị từ đó.
Positional Encoding Trước khi đi vào Encoder, thì chúng tôi xin giới thiệu một cơ chế rất thú vị là Positional Encoding mang thông tin về vị trí các từ để truyền vào bên trong kiến trúc Transformer. Trước tiên, các từ được biểu diễn bằng một vector sử dụng một ma trận Word Embedding có số dòng bằng kích thước của tập từ vựng. Tiếp theo các từ trong câu được tìm kiếm trong ma trận này, và được nối với nhau thành các dòng của một ma trận hai chiều chứa ngữ nghĩa của từng từ riêng biệt. Nhưng do Transformer xử lý các từ một cách song song do đó chỉ sử dụng Word Embedding thì mô hình không thể nào biết được vị trí các từ.
Như vậy mô hình cần có một cơ chế để đưa thông tin về về vị trí các từ vào trong vector đầu vào. Đó là lúc Positional Encoding xuất hiện và giải quyết vấn đề này. Vị trí của các từ được mã hóa bằng một ma trận có kích thước bằng với Word Embedding và sau đó được công trực tiếp vào Word Embedding giống phép cộng hai ma trận trong hình 2: Hình 2: Encoder Input [11] Positional Encoding sẽ biến đổi vị trí lẻ bằng cách dùng hàm Cos và vị trí chẵn sẽ dùng hàm Sin để tính giá trị tại đó, công thức trong hình 3: 6 Hình 3: Công thức tính giá trị Sin & Cos [10] Trong đó: pos: vị trí của một từ trong câu đầu vào. dmodel: số chiều của không gian Embedding đầu ra.
PE(pos, j): hàm vị trí để ánh xạ một vị trí pos trong câu đầu vào để lập chỉ mục (pos, j) của vị trí của ma trận. i: được sử dụng để ánh xạ tới các chỉ số cột 0 ≤ i ≤ dmodel/2 với một giá trị i được ánh xạ cho cả hàm Sin và Cos. Theo cách này thì mỗi chiều của Positional Encoding sẽ tương ứng với một hình Sin có bước sóng khác nhau ở các chiều khác nhau từ 2𝜋 đến 10000. Encoder Encoder là ánh xạ tất cả các chuỗi đầu vào thành một biểu diễn liên tục chứa thông tin đã học cho toàn bộ chuỗi đó.
Mỗi Encoder sẽ gồm hai thành phần chính là Multi-Headed Attention và Feed Forward Netword, ngoài ra còn có cả Skip Connection và Normalization để trực quan hơn chúng tôi đã dùng hình 4 để biểu diễn cấu tạo của Encoder. 7 Hình 4: Các thành phần của Encoder trong một module [15]. Decoder a) Decoder là gì ? Hình 5: Quá trình xử một câu đối với Encoder và Decoder [21] Decoder chính là đầu ra của Encoder giống như ở hình 5. Phrase này nhằm mục đích tìm ra phân phối xác suất từ các features learning ở Encoder từ đó xác định đâu là nhãn đầu ra.
Kết quả đầu ra của Decoder tùy thuộc vào đầu vào của Encoder nó có thể là một nhãn đối với mô hình phân loại hoặc một chuỗi theo thứ tự thời gian đối với mô hình Sequence To Sequence (Seq2Seq). 8 Ví dụ: Trong bài toán chuyển từ một câu tiếng Anh sang tiếng Pháp thì công việc của Decoder là giải mã (translate) thông tin từ Encoder và sinh ra từng từ tiếng Pháp dựa trên những từ trước đó. b) Quá trình Decoder Ở hình 6, mỗi Decoder sẽ gồm 3 thành phần chính: ● Self-Attention ● Multi-Head Attention ● Feed-forward Neural Network Hình 6: Mô hình kiến trúc Transformer [2].