Chương 1 Giới thiệu chung về nội dung của đề tài và tổng quan về báo cáo. Chương 2 Tôi sẽ trình bày về các lý thuyết nền tảng cần có để giải quyết bài toán phân tích cảm xúc. Trong chương này tôi trình bày các kiến thức căn bản của Deep Learning, thế nào là Artificial Neural Network (mạng nơron nhân tạo - ANN), cách thức hoạt động và ưu nhươc điểm của nó. Theo sau đó là biến thể phức tạp hơn của ANN là CNN (Convolutional Neural Network - Mạng neron tích chập) và LSTM (Long Short Term Memory – mạng nơ-ron hồi quy bộ nhớ ngắn-dài).
Ngoài ra trong phần này còn trình bày một phương pháp chuyển đổi từ một từ sang một vector được sử dụng phổ biến trong các mô hình xử lý ngôn ngữ tự nhiên là word2vec. Đây là một trong những chương quan trọng nhất trong báo cáo này. Chương 3 Một số công trình liên quan nổi tiếng về phân tích cảm xúc trong văn bản ứng dụng kỹ thuật Deep Learning sẽ được trình bày trong chương này. Chương 4 Trong chương này tôi trình bày về một mô hình mà tôi đề xuất.
Thực hiện thí nghiệm đánh giá mô hình này trên nhiều tập dữ liệu và đạt được kết quả khá tốt so với các phương pháp hiện đại khác. Trực quan hóa lên website. Chương 5 Tôi sẽ giới thiệu các công nghệ được tôi sử dụng để hoàn thành đề tài này bao gồm các ngôn ngữ lập trình, các framework, library và các công cụ liên quan. Chương 6 Tổng kết và nêu ra những điểm còn tồn tại của đề tài cũng như hướng cải tiến trong tương lai.1: Tổng quan các chương của báo cáo 9 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 Giới thiệu Mạng nơ-ron nhân tạo hay thường được gọi ngắn gọn là mạng nơ-ron được giới thiệu năm 1943 bởi Warren McCulloch và Walter Pits là một 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 số lượng lớn các nơ-ron được gắn kết để xử lý thông tin. Trong mạng nơ-ron nhân tạo, mỗi nơ-ron là một đơn vị tính toán có đầu vào và đầu ra là các đại lượng vô hướng. Mỗi đầu vào có một trọng số tương ứng với nó. Nơ-ron nhân mỗi đầu vào của nó với trọng số tương ứng, cộng tất cả đầu vào lại, áp dụng một hàm phi tuyến tính để cho ra kết quả ở đầu ra.
Các nơ-ron được kết nối với nhau, thành lập một mạng lưới: đầu ra của nơ-ron này có thể được truyền cho đầu vào của một hay nhiều nơ- ron khác. Nếu các trọng số được thiết lập chính xác, một mạng nơ-ron có thể tính toán xấp xỉ nhiều hàm toán học phức tạp.1: Mạng nơ-ron nhân tạo với 2 lớp ẩn Kiến trúc chung của một ANN gồm 3 thành phần đó là đầu vào (input layer), tầng ẩn (hidden layer) và đầu ra (output layer). Trong hình 1, minh họa một mạng nơ-ron cơ bản với 2 tầng ẩn. Mỗi vòng tròn là một nơ-ron, các mũi tên đi vào là các đầu vào và các mũi tên đi ra là các kết quả đầu ra của nơ-ron đó.
Các nơ-ron được sắp xếp thành các tầng, biểu diễn luồng thông tin đi qua mạng. Tầng dưới cùng không có bất kỳ mũi tên đi vào, và là đầu vào của mạng. Tương tự, tầng trên cùng không có bất kỳ mũi tên đi ra, và là đầu ra của mạng. Các tầng khác được gọi là tầng "ẩn".
Ký hiệu ∫ bên trong các nơ-ron biểu diễn hàm phi tuyến tính (hàm kích hoạt) sigmoid = (1/(1 + e−x)) được áp dụng vào giá trị 10 của nơ-ron trước khi cho ra đầu ra. Mỗi nơ-ron đều kết nối tới tất cả các nơ-ron ở tầng tiếp theo - vì vậy nên được gọi là tầng "kết nối đầy đủ". Giá trị của mỗi tầng trong mạng nơ-ron có thể được xem là một vector. Trong hình 1, tầng đầu vào là một vector 4 chiều (x), và tầng trên nó là một vector 6 chiều (h1).
Tầng fully-connected có thể được xem là một phép biến đổi tuyến tính một vector từ 4 chiều thành 6 chiều. Một tầng fully-connected hiện thực một phép nhân ma trận: h = xW, trong đó trọng số của kết nối từ nơ-ron thứ i của tầng trước nó tới nơ-ron thứ j của nó là Wij. Giá trị của h sau đó được biến đổi bằng một hàm phi tuyến tính g và truyền cho tầng tiếp theo.2 Cơ sở toán học Mạng nơ-ron đơn giản nhất là perceptron, chỉ bao gồm một hàm tuyến tính của đầu vào: 𝑁𝑁𝑃𝑒𝑟𝑐𝑒𝑝𝑡𝑟𝑜𝑛 (𝑥) = 𝑥𝑊 + 𝑏 𝑥 ∈ 𝑅𝑑𝑖𝑛 , 𝑊 ∈ 𝑅𝑑𝑖𝑛×𝑑𝑜𝑢𝑡 , 𝑏 ∈ 𝑅𝑑𝑜𝑢𝑡 W là ma trận trọng số, và b là bias. Để loại bỏ tính chất tuyến tính, một tầng "ẩn" phi tuyến tính được tạo ra đó gọi là Multi Layer Perceptron (MLP) (trong hình 1 có 2 tầng như vậy).
Một mạng nơ-ron một tầng có dạng: 𝑁𝑁𝑀𝐿𝑃1 = 𝑔(𝑥𝑊 1 + 𝑏1 )𝑊 2 + 𝑏2 𝑥 ∈ 𝑅𝑑𝑖𝑛 , 𝑊 1 ∈ 𝑅 𝑑𝑖𝑛×𝑑1 , ∈ 𝑅 𝑑𝑜𝑢𝑡 Trong công thức trên, xW1 + b1 thể hiện sự biến đổi tuyến tính từ đầu vào x từ không gian din chiều sang không gian d1 chiều. g được áp dụng trên mỗi chiều trong d1 chiều và ma trận W2 cùng với bias b2 được sử dụng để biến đổi kết quả thành vector có d2 chiều. Hàm phi tuyến tính g có vai trò hết sức quan trọng trong mạng để biểu diễn những hàm phức tạp. Nếu không có hàm g, mạng nơ-ron chỉ có thể biểu diễn sự biến đổi tuyến tính của đầu vào.
Chúng ta cũng có thể kết hợp giữa biến đổi tuyến tính và biến đổi phi tuyến tính, kết quả là một MLP 2 tầng (mạng ở hình 1 thuộc dạng này): 𝑁𝑁𝑀𝐿𝑃2 = (𝑔2 (𝑔1 (𝑥𝑊 1 + 𝑏1 )𝑊 2 + 𝑏2 ))𝑊 3 Công thức trên có thể được viết lại rõ ràng hơn bằng cách sử dụng các biến trung gian: 𝑁𝑁𝑀𝐿𝑃2 = 𝑦 ℎ1 = 𝑔1 (𝑥𝑊 1 + 𝑏1 ) ℎ2 = 𝑔2 (ℎ1 𝑊 2 + 𝑏2 ) 𝑦 = ℎ2 𝑊 3 11 Các vector có được từ kết quả của các phép biến đổi tuyến tính được gọi là một tầng. Kết quả của phép biến đổi ở ngoài cùng được gọi là tầng đầu ra và kết quả của các phép biến đổi còn lại được gọi là tầng "ẩn" (hidden). Mỗi tầng "ẩn" đều có một activation phi tuyến tính theo sau. Trong một số trường hợp, ví dụ như tầng cuối cùng của mạng ở hình 1, vector bias bị gán bằng 0.
Các tầng có được từ kết quả của phép biến đổi tuyến tính còn được gọi là kết nối đầy đủ (fully-connected) hoặc affine. Khi mô tả một mạng nơ-ron phải nêu rõ chiều của các tầng lẫn đầu vào của nó. Một tầng luôn nhận một vector din chiều làm đầu vào, và biến đổi nó thành vector có dout chiều. Chiều của một tầng được quy ước bằng với chiều đầu ra của tầng đó.
Với một tầng kết nối đẩy đủ l(x) = xW + b với đầu vào và đầu ra có chiều lần lượt là din và dout thì chiều của x là 1 × din, của W là din × dout và của b là 1 × dout. Đầu ra của mạng nơ-ron là một vector có dout chiều. Trong trường hợp dout = 1, đầu ra của mạng là một đại lượng vô hướng. Những mạng như thế thường được dùng để hồi quy bằng giá trị của đầu ra, hoặc là phân loại nhị phân bằng dấu của đầu ra.
Còn các mạng có dout = k > 1 có thể được dùng để phân loại với k lớp, bằng cách gán mỗi chiều cho một lớp rồi tìm chiều với giá trị lớn nhất. Tương tự, nếu vector đầu ra có tất cả các phần tử là dương và tổng của chúng bằng 1 thì nó có thể xem là sự phân bố xác suất trên các lớp (đầu ra có dạng này là kết quả của việc áp dụng biến đổi softmax ở tầng đầu ra, sẽ được nói đến ở phần sau). Các ma trận và bias sử dụng trong các phép biến đổi tuyến tính gọi là các tham số của mạng. Tập hợp tất cả các tham số thường được ký hiệu là θ.
Các tham số được kết hợp với đầu vào để xác định đầu ra của mạng. Các giải thuật huấn luyện có nhiệm vụ chọn các giá trị của tham số sao cho kết quả tiên đoán của mạng là chính xác. Trong nhiều trường hợp, vector kết quả của tầng đầu ra cũng bị biến đổi. Một biến đổi thường được sử dụng là softmax: 𝑒 𝑥𝑖 𝑆𝑜𝑓𝑡𝑚𝑎𝑥 (𝑥𝑖 ) = 𝐾 , 𝑖 = 1, … , 𝑘.
∑𝑘=1 𝑒 𝑥𝑘 Kết quả là một vector chứa các số nguyên dương có tổng là 1, thể hiện phân bố xác suất rời rạc trên k kết quả có thể xảy ra. Biến đổi softmax thường được sử dụng khi chúng ta muốn mô hình một sự phân bố xác xuất trên tập các kết quả có thể xảy ra. Để đạt hiệu quả, nó thường được sử dụng kết hợp với một mục tiêu huấn luyện dạng xác suất (probabilistic training objective) như là cross-entropy. Khi biến đổi softmax được áp dụng cho đầu ra của mạng mà không có tầng ẩn nào, kết quả của nó là mô hình hồi quy logistic đa thức nổi tiếng, hay còn được gọi là bộ phân loại maximum-entropy.3 Các hàm kích hoạt thường dùng Có rất nhiều dạng hàm phi tuyến tính có thể sử dụng cho các tầng ẩn.
Hiện tại không có lý thuyết nào về việc sử dụng hàm phi tuyến tính nào trong trường hợp nào, và cách chọn hàm phi tuyến tính thích hợp cho một tác vụ cụ thể trong thực nghiệm. Trong số các hàm phi tuyến tính, các hàm sau được sử dụng nhiều nhất: sigmoid, tanh, hard tanh, và rectified linear unit (ReLU). 12 • Tanh 𝑒 2𝑥 −1 Hàm tanh có công thức tanh(𝑥) = 2𝑥 , nó có dạng chữ S, biến đổi giá trị x vào 𝑒 +1 miền [-1, 1].2: Đồ thị của hàm tanh • Hard tanh Hàm hard tanh là một biến thể của hàm tanh để đơn giản hóa việc tính toán và dễ dàng để đạo hàm hơn: −1 𝑥 < −1 ℎ𝑎𝑟𝑑𝑡𝑎𝑛ℎ(𝑥) = { 1 𝑥 > 1 𝑥 𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒 Hình 2.3: Đồ thị của hàm hard tanh • Sigmoid 1 Hàm sigmoid có công thức 𝜎(𝑥) = , nó có dạng chữ S, biến đổi giá trị x vào 1+𝑒 −𝑥 miền [0, 1].4: Đồ thị của hàm sigmoid 13 • ReLU Hàm ReLU[1], là một hàm phi tuyến tính đơn giản để sử dụng và cho kết quả rất tốt trong thực nghiệm. Hàm ReLU sẽ biến mỗi giá trị x < 0 thành 0.
Mặc dù đơn giản nhưng ReLU lại hiệu quả với nhiều tác vụ, đặc biệt là khi kết hợp với kỹ thuật dropout regularization.