Chương 1 trình bày khái quát về bài toán nhận dạng cảm xúc khuôn mặt, những ứng dụng cũng như mục tiêu của đề tài. Chương 2: Cơ sở lý thuyết và các nghiên cứu liên quan: Chương 2 trình bày cơ sở lý thuyết và các nghiên cứu liên quan đến các thuật toán phát hiện, nhận dạng và phân loại hình ảnh được phát triển trong luận văn. Chương 3: Mô hình đề xuất: Chương 3 trình bày phương pháp phát hiện khuôn mặt, phương pháp nhận dạng, phân loại cảm xúc, sơ đồ liên kết giữa mô hình và ứng dụng web. 4 Chương 4: Thực nghiệm: Chương 4 trình bày quá trình thực nghiệm, kết quả đạt được, phân tích và đánh giá các kết quả đạt được.
Chương 5: Kết luận và hướng phát triển: Chương 5 tổng quát kết quả thực hiện, đưa ra các hướng phát triển cho mô hình trong tương lai. 5 CHƯƠNG 2 CƠ SỞ LÝ THUYẾT VÀ CÁC NGHIÊN CỨU LIÊN QUAN 2. Mạng Nơ-ron tích chập 2. Mạng Nơ-ron nhân tạo 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 hay còn gọi là mạng Nơ-ron sinh học (hình 2.
Cấu tạo từ số lượng lớn các nơ-ron được kết nối với nhau để xử lý thông tin. ANN giống như bộ não con người, được học bởi kinh nghiệm thông qua huấn luyện, có khả năng lưu giữ những kinh nghiệm 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. ANN được giới thiệu năm 1943 bởi nhà thần kinh học Warren McCulloch và nhà logic học Walter Pits. 1: Mạng Nơ-ron sinh học [21] Các ứng dụng của Mạng neuron được sử dụng trong rất nhiều lĩnh vực như điện, điện tử, kinh tế, quân sự,… để giải quyết các bài toán có độ phức tạp và đòi hỏi có độ chính xác cao như điều khiển tự động, khai phá dữ liệu, nhận dạng,… Một ANN gồm ba tầng: lớp đầu vào (input layer), các lớp ẩn (hidden layers) và cuối cùng là lớp đầu ra (output layer) được mô tả trong hình 2.2 6 [21], trong đó, lớp ẩn gồm nhiều nơ-ron nhận dữ liệu đầu vào từ các lớp trước đó để xử lý và chuyển đổi các dữ liệu này cho các lớp tiếp theo.
Một ANN có thể có nhiều lớp ẩn hoặc không có lớp ẩn. 2: Cấu trúc của mạng nơ-ron nhân tạo [21] Mỗi node trong mạng gọi là một nơ-ron. Mỗi nơ-ron nhận các dữ liệu đầu vào xử lý chúng và trả ra một kết quả duy nhất. Kết quả đầu ra của nơ- ron này có thể làm dữ liệu đầu vào của các nơ-ron khác.3 [21] mô tả quá trình xử lý của một nơ-ron trong ANN.
Trong đó input là dữ liệu đầu vào, output là kết quả đầu ra. Trọng số liên kết hay trọng số (connection weights hay gọi tắt là weights) là thành phần rất quan trọng, thể hiện mức độ quan trọng đối với quá trình xử lý dữ liệu từ lớp này sang lớp khác. Quá trình học của ANN thực ra là quá trình điều chỉnh trọng số của các dữ liệu đầu vào. 3: Quá trình xử lý của một nơ-ron trong ANN [21] Hàm tổng Σ tính tổng của tích trọng số và dữ liệu vào.
Hàm tính tổng một nơ-ron của k dữ liệu đầu vào của lớp thứ i 𝑎𝑖 = ∑ 𝑥𝑘 𝜔𝑖,𝑘 (2.1) Hàm kích hoạt hay hàm chuyển đổi 𝑓 tính toán đầu ra của một nơ-ron để chuyển đến lớp tiếp theo trong mạng nơ-ron. Hàm kích hoạt phi tuyến được sử dụng vì mạng chỉ sử dụng các hàm kích hoạt tuyến tính có thể lược giản thông qua các biến đổi đại số thành mô hình perceptron một lớp (là mô hình ANN đơn giản nhất, không có lớp ẩn). Một số hàm kích hoạt phi tuyến thường dùng là ReLU (Rectified Linear Unit), sigmoid, logistic, Gaussian, tanh, softmax. 4: Đồ thị các hàm kích hoạt: (a).
Hàm Sigmoid Kết quả xử lý đầu ra hàm tổng của nơ-ron đôi khi quá lớn, hàm kích hoạt thường dùng để xử lý đầu ra này trước khi chuyển đến lớp tiếp theo. Đôi khi thay vì sử dụng hàm kích hoạt, ta thường sử dụng giá trị ngưỡng để 9 kiểm soát đầu ra của nơ-ron. Nếu đầu ra của một nơ-ron nhỏ hơn ngưỡng thì sẽ không được chuyển đến lớp tiếp theo. Một số dạng mạng nơ-ron nhân tạo: Mạng liên kết đầy đủ (fully connected-FC): nếu mọi đầu ra của một lớp liên kết với mọi nơ-ron của lớp tiếp theo.
Mạng lan truyền thẳng (feedforward network): nếu không tồn tại liên kết giữa các nơ-ron thuộc cùng một lớp. Mạng phản hồi (feedback network): nếu tồn tại đầu ra của một nơ-ron liên kết ngược lại làm đầu vào của một nơ-ron cùng lớp. Mạng hồi quy (recurrent network): nếu các mạng phản hồi có các vòng lặp kín. Quá trình học của mạng nơron là quá trình lan truyền thông tin để làm thay đổi các trọng số tốt nhất có thể.
Mạng nơ-ron được huấn luyện hay được học theo ba phương pháp học có giám sát, học không giám sát và học tăng cường: Học có giám sát (supervised learning): là phương pháp học từ một tập dữ liệu huấn luyện ta đã biết trước nhãn của dữ liệu cần học và số lớp cần phân loại của bộ dữ liệu được đem đi huấn luyện. Đây là phương pháp học phổ biến nhất trong các phương pháp học của mạng nơ-ron. Mục đích của phương pháp này là từ tập dữ liệu đã gán nhãn qua quá trình học tạo ra một hàm số thật tốt để khi có dữ liệu mới ta có thể tính hay dự đoán được nhãn tương ứng của dữ liệu đó [21]. Phương pháp học có giám sát chia ra thành hai loại chính là: - Phân loại (classification): Nếu nhãn của các dữ liệu đầu vào được chia thành một số hữu hạn nhóm.
Như các bài toán nhận dạng chữ số viết tay, dò tìm khuôn mặt người, … 10 - Hồi quy (regression): Nếu nhãn của các dữ liệu đầu vào không được chia thành các nhóm mà là một giá trị thực cụ thể. Ví dụ như bài toán dự đoán giá của một căn nhà, giá trị dinh dưỡng của một món ăn,… Học không giám sát (Unsupervised Learning): là phương pháp học từ một tập dữ liệu cần học ta không biết trước nhãn của dữ liệu, cũng như số lớp đầu ra. Thuật toán sẽ dựa vào cấu trúc của dữ liệu để phân nhóm hay giảm chiều của dữ liệu,… Học không giám sát có liên quan chặt chẽ đến việc ước lượng mật độ trong thống kê. Cách học này không sử dụng tri thức từ bên ngoài trong quá trình học nên còn được gọi là tự tổ chức.
Mạng nơ-ron điển hình cho cách học này là Self – Organizing Map (SOM). Một số thuật toán học không giám sát khác như k-means, Hierarchical Agglomerative Clustering (HAC), Fuzzy Cognitive Map (FCM),….[21] Phần lớn ứng dụng học không giám sát vào các bài toán ước lượng như mô hình hóa thống kê, nén, lọc, phân nhóm,… Học tăng cường (Reinforcement Learning): là phương pháp học giúp cho một hệ thống tự động xác định hành động dựa trên hoàn cảnh để đạt lợi ích cao nhất. Học tăng cường bằng cách thử nghiệm dữ liệu để khám phá ra hành động nào là tốt nhất. Hành động đó không chỉ có lợi ích tốt cho bước hiện tại mà còn cho các bước tiếp theo.
Hai đặc điểm quan trọng để phân biệt học tăng cường là tìm kiếm thử - sai (trialand-error search) và bồi dưỡng chậm (delayed reward).[21] Môi trường học thường được biểu diễn dưới dạng quy trình quyết định markov (Markov Decision Process - MDP) trạng thái hữu hạn và các thuật toán học tăng cường liên quan đến các kỹ thuật quy hoạch động. Hiện tại, học tăng cường chủ yếu được áp dụng vào Lý thuyết trò chơi, thuật toán cần xác định hành động tiếp theo để đạt số điểm tốt nhất. Ví 11 dụ, AlphaGo của Google đánh cờ vây thắng con người, trong khi cờ vây có độ phức tạp cao xấp xỉ 10761. AlphaGo kết hợp cả học có giám sát và học tăng cường, Hình 2.
5: AlphaGo của Google1 Thuật toán lan truyền ngược Với thuật toán lan truyền ngược (Backpropagation Algorithm), giả sử L(W,b,X,Y) là một hàm lỗi của bài toán, trong đó W,b là tập hợp tất cả các ma trận trọng số giữa các lớp và hướng của mỗi lớp. X,Y là cặp dữ liệu huấn luyện, X là tập hợp các điểm dữ liệu, Y là nhãn của các điểm dữ liệu tương ứng trong X. Đầu ra dự đoán y ̂ của dữ liệu đầu vào x của mạng neural truyền thẳng đa lớp được tính như sau: 𝑎(0) = 𝑥 (2.com 12 Với 𝑙 = 1, … , 𝐿 là số thứ tự của lớp, a là kết quả của hàm kích hoạt tại mỗi node của một lớp. Bước này được gọi là truyền thẳng vì cách tính toán được thực hiện từ lớp đầu tiên đến lớp cuối của mạng nơ-ron.
Phương pháp phổ biến nhất để tối ưu mạng nơ-ron truyền thẳng đa lớp là trượt dốc. Để có thể áp dụng trượt dốc, ta cần tính được đạo hàm của hàm lỗi theo từng ma trận trọng số W(l) và vector hướng b(l) 𝜕𝐿 𝜕𝐿 ; (2.12) 𝑁 Với N là số cặp dữ liệu (X,Y) trong tập huấn luyện. Theo công thức (2.12) thì việc tính đạo hàm của hàm lỗi theo trọng số và hướng một cách trực tiếp là cực kỳ phức tạp, vì hàm lỗi không phụ thuộc trực tiếp vào các hệ số. Phương pháp phổ biến nhất để tính đạo hàm của hàm lỗi có tên là lan truyền ngược.
Lan truyền ngược giúp tính đạo hàm ngược từ lớp cuối cùng đến lớp đầu tiên. Lớp cuối cùng được tính trước vì nó gần hơn với đầu ra dự đoán và hàm lỗi. Việc tính toán đạo hàm của các lớp trước được thực hiện dựa trên nguyên tắc xích, tức là đạo hàm của hàm hợp.13) 𝜕𝑥 𝜕𝑦 𝜕𝑥 Với z = f(y) và y = g(x) 13 Với một cặp điểm dữ liệu huấn luyện (x,y) và hàm lỗi L chỉ xét cho cặp điểm này, ta có thể tính đạo hàm của hàm lỗi theo ma trận trọng số và hướng. Đạo hàm của hàm lỗi theo chỉ một thành phần của ma trận trọng số của lớp cuối cùng.6 mô phỏng cách tính lan truyền ngược, với đạo hàm theo hệ số ở các lớp 𝑙 thấp hơn, lớp cuối có thể là lớp đầu ra, 𝑑 (𝑙) là số node trong lớp ẩn thứ 𝑙.
6: Mô phỏng cách tính lan truyền ngược [1] 14 Dựa vào hình 2.