Chương 1: Tổng quan về nội dung, mục tiêu và cấu trúc luận văn. Chương 2: Kiến thức nền tảng có liên quan đến đề tài như ANN, RNN, LM… Chương 3: Các công trình nghiên cứu có liên quan đến đề tài. Chương 4: Trình bày các phương pháp sử dụng khi hiện thực luận văn. Chương 5: Mô tả thực tế việc hệ thống và đánh giá kết quả.
Chương 6: Tổng kết lại những kết quả đã đạt được và định hướng trong tương lai. 5 Chương 2 Kiến thức nền tảng 2.1 Mạng nơ-ron nhân tạo – Artificial Neural Network (ANN) 2.1 Tổng quan mạng ANN Mạng nơ-ron nhân tạo (Artificial Neural Network – ANN) là mô hình xử lý thông tin được mô phỏng dựa trên hoạt động của hệ thống thần kinh của sinh vật, bao gồm rất nhiều các node được liên kết với nhau tạo thành một mạng lưới cực kì lớn và phức tạp. ANN hoạt động giống như bộ não của con người, được học bởi kinh nghiệm (thông qua việc huấn luyện), có khả năng lưu giữ những kinh nghiệm hiểu biết (tri thức) và sử dụng những tri thức đó trong việc dự đoán các dữ liệu chưa biết (unseen data). Mạng nơ-ron nhân tạo 6 Kiến trúc chung của một ANN gồm 3 thành phần chính, đó là: Input Layer, Hidden Layer và Output Layer (hình 2.
Trong đó, lớp ẩn (Hidden Layer) gồm các nơ-ron nhận dữ liệu input từ các nơ-ron ở lớp (layer) trước đó và chuyển đổi các input này cho các lớp xử lý tiếp theo. Trong một ANN có thể có nhiều lớp ẩn. Các node xử lý của ANN gọi là nơ-ron. Chúng nhận các dữ liệu vào (inputs), tính toán và cho ra một kết quả (output) duy nhất.
Kết quả xử lý của nơ-ron này có thể làm input cho các nơ- ron khác. Quá trình xử lý thông tin của một ANN: Hình 2. Xử lý thông tin trong ANN Mỗi input tương ứng với 1 thuộc tính (attribute) của dữ liệu. Các giá trị này thường được đưa vào dưới dạng một vector m-chiều.
Output là kết quả đầu ra tương ứng với dữ liệu input. Các trọng số liên kết (Weights) là thành phần rất quan trọng của ANN, nó thể hiện mức độ quan trọng giữa các input đầu vào đối với quá trình xử lý thông tin, chuyển đổi dữ liệu từ layer này sang layer khác. Cuối cùng là bias (hệ số tự do) giúp chuẩn hoá trong quá trình cập nhật trọng trọng số. Quá trình học (Learning Processing) của ANN thực ra là quá trình điều chỉnh các Weights để có được kết quả mong muốn.
Hàm tổng (Summation Function) cho phép tính tổng có trọng số của tất 7 cả các input được đưa vào mỗi nơ-ron và giá trị bias. Hàm tổng của một nơ-ron đối với N input được tính theo công thức sau: " 𝑧 = # 𝑥! 𝜔! + 𝑏 !#$ Kết quả trên sẽ được cho vào một hàm kích hoạt (Activation function) để đánh giá khả năng đi tiếp trong mạng. Có nghĩa là liệu output của nơ-ron này có thể được lan truyền đến layer tiếp theo để làm input hay không? 𝑦 = 𝜑(𝑧) Việc lựa chọn hàm kích hoạt rất quan trọng vì nó có tác động lớn đến kết quả của ANN. Người ta thường sử dụng các hàm phi tuyến để tăng hiệu năng cho mạng.
Một số hàm kích hoạt phổ biến sẽ được trình bày rõ ở phần sau.2 Một số hàm kích hoạt (Activation function) Sigmoid Hàm Sigmoid nhận đầu vào là một số thực và chuyển thành một giá trị trong khoảng (0,1). Hàm có công thức như sau: 𝑒% 𝜎 (𝑥 ) = % 𝑒 +1 Hình 2. Đồ thị hàm sigmoid 8 Tanh Hàm tanh có hình dạng đồ thị khá giống với của sigmoid nhưng giá trị nằm trong khoảng (-1, 1) với công thức: 𝑒 % − 𝑒 &% 𝑡𝑎𝑛ℎ(𝑥 ) = % 𝑒 + 𝑒 &% Hình 2. Đồ thị hàm tanh ReLU Hàm ReLU (Rectified Linear Unit) đang được sử dụng khá nhiều trong những năm gần đây khi huấn luyện các mạng nơ-ron.
ReLU đơn giản lọc các giá trị < 0. Nhìn vào công thức chúng ta dễ dàng hiểu được cách hoạt động của nó: 𝑅𝑒𝐿𝑈(𝑥) = max (0, 𝑥) Hai ưu điểm khá vượt trội của nó so với Sigmoid và Tanh, đó là không xuất hiện vấn đề triệu tiêu gradient và tốc độ tính toán nhanh hơn. Tuy nhiên, ReLU cũng có một nhược điểm là với các node có giá trị nhỏ hơn 0, qua ReLU sẽ trở thành 0. Các node ấy sẽ không có ý nghĩa ở lớp tiếp theo và các hệ số từ node ấy sẽ không được cập nhật.
Hiện tượng này được gọi là “Dying ReLU”. Đồ thị hàm ReLU 2.2 Mạng nơ-ron hồi quy - Recurrent Neural Network (RNN) 2.1 Tổng quan mạng RNN Đối với các mạng ANN truyền thống, đầu vào và đầu ra của mạng đều độc lập với nhau. Các tính toán ở layer này chỉ sử dụng thông tin từ layer liền kề trước đó, tức là chúng không liên kết thành chuỗi với nhau. Trong lĩnh vực xử lý ngôn ngữ tự nhiên (Natural Language Processing – NLP), input của các mô hình thường là một câu gồm nhiều từ, độ dài của câu không cố định và giữa các từ lại có quan hệ ngữ nghĩa với nhau.
Do đó ta không thể chỉ sử dụng ANN để giải quyết các bài toán NLP. Mạng nơ-ron hồi quy (Recurrent Neural Network - RNN) đã được phát triển để giải quyết vấn đề này. Ý tưởng chính của RNN [5] là sử dụng một bộ nhớ để lưu lại những thông tin từ các thời điểm trước, kết hợp cùng với giá trị input tại thời điểm hiện tại để có thể đưa ra được output chính xác nhất. RNN được gọi là hồi quy bởi vì chúng thực hiện cùng một tác vụ cho tất cả các phần tử của một chuỗi với đầu ra phụ thuộc vào cả những phép tính trước đó.
Hay nói cách khác, RNN có khả năng "nhớ" các thông tin được tính toán trước đó. 10 Kiến trúc cơ bản của RNN: Hình 2. Mạng nơ-ron hồi quy trong đó: • 𝑥' là đầu vào tại bước t • U, V, W là các ma trận trọng số • ℎ' là trạng thái ẩn tại bước t. Đây được xem như là bộ nhớ của mạng.
ℎ' được tính toán dựa trên các trạng thái ẩn ở phía trước và input tại bước đó: ℎ' = 𝑓(𝑈𝑥' + 𝑉ℎ'&$ ) Hàm 𝑓 là một activation function như được giới thiệu ở trên, thông thường là hàm Tanh hoặc Relu. Ở bước tính toán đầu tiên, ℎ'&$ chưa có giá trị nên có thể khởi tạo một cách ngẫu nhiên hoặc được gán bằng 0. • 𝑜' là đầu ra tại bước t 𝑜' = 𝑔(𝑊ℎ' ) Hàm 𝑔 cũng là một activation function như hàm 𝑓 và thường là ReLU hoặc Tanh. Trong trường hợp xây dựng mô hình ngôn ngữ, 𝑜' là một vector xác suất các từ trong danh sách từ vựng, hàm 𝑔 được sử dụng lúc này là hàm softmax.2 Long Short Term Memory (LSTM) Một vấn đề khi sử dụng RNN đó là vấn đề phụ thuộc gần xa, tức là RNN không thể nhớ được các thông tin quá dài.
Đối với những chuỗi quá dài, những thông tin ban đầu sẽ bị “lãng quên” dần, bộ nhớ chỉ ghi nhớ những thông tin gần hơn. Nguyên nhân là do khi huấn luyện mạng RNN, việc tính đạo hàm qua quá nhiều bước sẽ dẫn đến việc tiêu biến đạo hàm (gradient vanishing). Vì vậy, Long Short Term Memory (LSTM) ra đời để giải quyết vấn đề này. Long Short Term Memory [6] được giới thiệu bởi Hochreiter và Schmidhuber (1997), và sau đó đã được cải tiến và phổ biến bởi rất nhiều người trong ngành.
Việc nhớ thông tin trong suốt thời gian dài là đặc tính mặc định của chúng, chứ ta không cần phải huấn luyện nó để có thể nhớ được. Tức là bên trong nó đã có thể ghi nhớ được mà không cần bất kì can thiệp nào. Chúng hoạt động cực kì hiệu quả trên nhiều bài toán khác nhau nên dần đã trở nên phổ biến như hiện nay. Kiến trúc LSTM Kiến trúc của LSTM phức tạp hơn RNN rất nhiều.
Để nhớ được nhiều thông tin, LSTM sử dụng các cổng để giữ lại các thông tin quan trọng và bỏ đi những thông tin dư thừa. Thành phần quan trọng nhất của LSTM là cell state, đây chính là bộ nhớ của LSTM, ngoài ra còn một thành phần khác là hidden state. Cell state và hidden state ở 12 thời điểm t được kí hiệu là 𝐶' và ℎ'. Cell state và hidden state sẽ lần lượt được cập nhật ở mỗi thời điểm thông qua các cổng, chi tiết như sau: • Cổng forget: cổng này quyết định xem thông tin nào cần bỏ đi 𝑓' = 𝜎(𝑊( [ℎ'&$ , 𝑥' ] + 𝑏( ) • Cổng input: cổng này quyết định xem thông tin nào cần giữ lại 𝑖' = 𝜎(𝑊! [ℎ'&$ , 𝑥' ] + 𝑏! ) • Cập nhật cell state bằng cách sử dụng cổng input và cổng forget: 𝐶' = 𝑓' ∗ 𝐶'&$ + 𝑖' ∗ tanh(𝑊) [ℎ'&$ , 𝑥' ] + 𝑏) ) • Cổng output: cổng này giúp tính toán các thông tin cần xuất ra ở bước hiện tại 𝑜' = 𝜎(𝑊* [ℎ'&$ , 𝑥' ] + 𝑏* ) • Cập nhật hidden state bằng cách sử dụng cổng output ℎ' = 𝑜' ∗ tanh(𝐶' ) 2.3 Phân loại kiến trúc RNN Để tăng hiệu quả, có thể kết hợp nhiều tầng RNN (hoặc LSTM) với số lượng các đơn vị nhớ lớn hơn để tạo thành một mạng hồi quy có khả năng nhớ được nhiều thông tin hơn, học tốt nhiều ngữ cảnh hơn và độ chính xác cũng sẽ tăng lên.
Sự kết hợp theo nhiều cách tạo ra nhiều kiến trúc khác nhau của bài toán RNN, phù hợp cho nhiều mục đích khác nhau. Ví dụ như các kiến trúc one-to-one, one-to-many, many-to- many,… Hình 2. Các kiến trúc của RNN 13 Các kiến trúc này có nhiều ứng dụng thực tế trong lĩnh vực trí tuệ nhân tạo: • one-to-many: tạo bình luận cho ảnh (Image Captioning), sinh văn bản (Text Generation), sinh âm nhạc (Music Generation). • many-to-one: phân loại văn bản (Text Classification), phân loại sắc thái văn bản (Sentiment Classification).
• many-to-many: nhận biết tên thực thể (Name Entity Recognition), gán nhán từ loại (Part of Speech Tagging), dịch máy (Machine Translation).3 Word Embedding Thành phần cơ bản của một văn bản đó là các từ. Để máy tính có thể hiểu được, việc đầu tiên là cần phải biểu diễn các từ thành các vector thực, các vector này sẽ dược dùng làm input để đưa vào mô hình huấn luyện. Phương pháp đơn giản nhất là gán mỗi từ cho số và biểu diễn dưới dạng One-hot vector, đây là một vector có số chiều bằng với số lượng từ vựng trong từ điển và chỉ có duy nhất một thành phần là 1 ứng với từ được biểu diễn, các thành phần khác đều bằng 0.