CHƯƠNG 1: CƠ SỞ LÝ THUYẾT VÀ KỸ THUẬT CHO DEEP LEARNING Kỹ thuật Học sâu (Deep Learning) là một lĩnh vực của Học máy (Machine Learning), Học sâu tập trung giải quyết các vấn đề liên quan đến mạng thần kinh nhân tạo (Artificial Neural Network - ANN) nhằm nâng cấp các công nghệ như nhận dạng giọng nói, thị giác máy tính và xử lý ngôn ngữ tự nhiên. Trong chương này, chúng tôi sẽ trình bày khái quát về Học máy, các thuật toán học máy, mạng nơ-ron nhân tạo. Chúng tôi trình bày chi tiết về mô hình mạng nơ-ron tích chập (CNN - Convolution Neural Networks) cũng như cách hoạt động, cấu trúc mô hình CNN.1 Tổng quan về học máy 1.1 Một số khái niệm chung Học máy (Machine Learning) là một phần trong trí tuệ nhân tạo bao gồm các thuật toán máy tính được sử dụng để tự học từ dữ liệu để giải quyết những vấn đề và xử lý các thông tin cụ thể nào đó. Mặc dù học máy là một lĩnh vực trong khoa học máy tính, nó khác với các phương pháp tính toán truyền thống.
Trong tính toán truyền thống, các thuật toán là tập hợp các hướng dẫn được lập trình rõ ràng được sử dụng bởi các máy tính để tính toán hoặc giải quyết vấn đề. Thay vào đó, thuật toán học máy cho phép máy tính đào tạo dữ liệu đầu vào và sử dụng phân tích thống kê để đưa ra các giá trị nằm trong một phạm vi cụ thể. Do đó, học máy tạo điều kiện cho các máy tính xây dựng mô hình từ dữ liệu mẫu để tự động hóa các quy trình ra quyết định dựa trên dữ liệu đầu vào. Ngày nay, học máy được áp dụng rộng rãi ở mọi lĩnh vực như: nhận dạng khuôn mặt (face detection), nhận dạng ký tự quang học (OCR).
Các công cụ đề xuất, được hỗ trợ bởi học máy, đề xuất những bộ phim hoặc chương trình truyền hình nào để xem tiếp theo dựa trên sở thích của người dùng. Xe tự lái dựa vào học máy để vận hành có thể sớm có mặt trên thị trường. 6 Các mô hình học máy yêu cầu lượng dữ liệu đủ lớn để "huấn luyện" và đánh giá mô hình. Sự tăng trưởng trong dữ liệu lớn (big data) đã cung cấp dữ liệu cho các thuật toán học máy để cải thiện độ chính xác của mô hình.2 Các thuật toán học máy - Học có giám sát (Supervised learning) Trong học máy có giám sát, máy tính học cách mô hình hóa các mối quan hệ dựa trên dữ liệu được gán nhãn (Labeled data).
Sau khi tìm hiểu cách tốt nhất để mô hình hóa các mối quan hệ cho dữ liệu được gán nhãn, các thuật toán được huấn luyện được sử dụng cho các bộ dữ liệu mới. Một số ví dụ sử dụng phổ biến của việc học có giám sát là sử dụng dữ liệu lịch sử để dự đoán các sự kiện có thể xảy ra trong tương lai. Xác định tín hiệu hay biến số tốt nhất để dự báo lợi nhuận trong tương lai của cổ phiếu hoặc dự đoán xu hướng thị trường chứng khoán. - Học không giám sát (Unsupervised learning) Trong học máy không giám sát, máy tính không được cung cấp dữ liệu được gán nhãn mà thay vào đó chỉ được cung cấp dữ liệu mà thuật toán tìm cách mô tả dữ liệu và phát hiện cấu trúc của chúng.
Ví dụ phân loại các công ty thành các nhóm công ty tương đồng dựa trên đặc điểm của chúng thay vì sử dụng tiêu chuẩn của các nhóm ngành hoặc các quốc gia. - Học bán giám sát (Semi-Supervised Learning) Trong học máy bán giám sát, máy tính được cung cấp dữ liệu nhưng dữ liệu mới được gán nhãn một phần. Do đó phải sử dụng học không giám sát (để khám phá và tìm hiểu cấu trúc dữ liệu đầu vào) và học có giám sát (để dự đoán cho dữ liệu không được gán nhãn) để giải quyết. - Học củng cố (Reinforcement learning) 7 Học củng cố còn gọi là học tăng cường, thuật toán tự học cách xác định hành động tùy theo các quan sát về thế giới.
Mỗi hành động đều có tác động tới môi trường, và môi trường cung cấp thông tin phản hồi để hướng dẫn cho thuật toán trong quá trình học. Chuyển đổi tương tự học máy có giám sát nhưng không xây dựng hàm một cách rõ ràng. Thay vì thế, cố gắng đoán kết quả mới dựa vào các dữ liệu huấn luyện, kết quả huấn luyện, và dữ liệu thử nghiệm có sẵn trong quá trình huấn luyện.1 Tổng quan về mạng nơ-ron Mạng nơ-ron nhân tạo (Artificial Neural Network: ANN) được thiết kế để mô hình một số tính chất của mạng nơ-ron sinh học. Để mô phỏng các tế bào thần kinh và các khớp nối thần kinh của bộ não con người, trong mạng nơ-ron nhân tạo cũng có các thành phần có vai trò tương tự các thành phần trong mạng nơ-ron thần kinh.
Mạng nơ-ron nhân tạo là một cấu trúc khối gồm các đơn vị tính toán đơn giản được liên kết chặt chẽ với nhau trong đó các liên kết giữa các nơ-ron quyết định chức năng của mạng. Nơ-ron là một đơn vị tính toán có nhiều đầu vào và một đầu ra. Trong đó, thành phần cơ bản của ANN là nơ-ron nhân tạo có cách thức hoạt động và xử lý tương tự nơ-ron sinh học. ANN được hình thành từ số lượng lớn các nơ-ron được liên kết với nhau theo cấu trúc từng tầng (layer), các nơ-ron kết nối với nhau giữa các tầng thông qua trọng số liên kết (weight).
Mô hình toán học x1 w1 z x2 w2 w3 y x3 wN xN Hình 1.1: Mô hình mạng nơ-ron [4] 8 1.2 Các thành phần cơ bản của mạng nơ-ron nhân tạo 1.1 Đơn vị xử lý Còn được gọi là một nơ-ron hay một nút (node), thực hiện công việc đơn giản: nó nhận tín hiệu vào từ các đơn vị phía trước hay một nguồn bên ngoài và sử dụng chúng để tính tín hiệu ra sẽ được lan truyền sang các đơn vị khác. Trong một mạng nơ-ron có ba kiểu đơn vị: - Các đơn vị đầu vào (Input units), nhận tín hiệu từ bên ngoài. - Các đơn vị đầu ra (Output units), gửi dữ liệu ra bên ngoài. - Các đơn vị ẩn (Hidden units), tín hiệu vào (input) và ra (output) của nó nằm trong mạng.
9 Mỗi đơn vị j có thể có một hoặc nhiều đầu vào x0, x1, x2, …, xn, nhưng chỉ có một đầu ra zj. Một đầu vào tới một đơn vị có thể là dữ liệu từ bên ngoài mạng, hoặc đầu ra của một đơn vị khác, hoặc là đầu ra của chính nó.2 Hàm kết hợp Mỗi một đơn vị trong một mạng kết hợp với các giá trị đưa vào nó thông qua các liên kết với các đơn vị khác, sinh ra một giá trị gọi là net input. Hàm thực hiện nhiệm vụ này gọi là hàm kết hợp (combination function). Trong phần lớn các mạng nơ-ron, mỗi đơn vị cung cấp một bộ công cụ như là đầu vào cho đơn vị mà nó liên kết.
Tổng đầu vào đơn vị j đơn giản chỉ là tổng có trọng số của các đầu vào từ các đơn vị kết nối cộng thêm ngưỡng hay độ lệch (bias) θj : Trong trường hợp wji >0, nơ-ron được coi là đang ở trong trạng thái kích hoạt. Tương tự, nếu như wji <0, nơ-ron ở trạng thái kiềm chế. Các đơn vị với luật lan truyền như trên là các sigma units. Trong một vài trường hợp cũng có thể sử dụng các luật lan truyền phức tạp hơn.
Một trong số đó là luật sigma-pi, có dạng: Rất nhiều hàm kết hợp sử dụng một “độ lệch” hay “ngưỡng” để tính net input tới đơn vị. Đối với một đơn vị đầu ra tuyến tính, thông thường θj được chọn là hằng số và trong bài toán xấp xỉ đa thức θj = 1.3 Hàm kích hoạt (activation function) Phần lớn các đơn vị trong mạng nơ-ron chuyển net input bằng cách sử dụng một hàm vô hướng (scalar-to-scalar function) gọi là hàm kích hoạt, kết quả của hàm này là một giá trị gọi là mức độ kích hoạt của đơn vị (unit’s activation). Trừ đơn vị đó thuộc lớp ra, giá trị kích hoạt được đưa vào một hay nhiều đơn vị khác. Các hàm kích hoạt thường bị ép vào một khoảng giá trị xác định.
Các hàm kích hoạt hay được sử dụng là: - Hàm đồng nhất (Linear function, Identity function) g(x) =x Nếu coi các giá trị đầu vào là một đơn vị thì chúng sẽ sử dụng hàm này. Đôi khi một hằng số được nhân với net input để tạo ra một hàm đồng nhất.3 Hàm đồng nhất (Identity function) - Hàm bước nhị phân (Birary step function, Hard limit function) Hàm này cũng được biết đến với tên “Hàm ngưỡng” (Threshold function hay Heaviside function). Đầu ra của hàm này được giới hạn vào một trong hai giá trị: Hàm này được dùng trong các mạng chỉ có một lớp. Với θ được chọn bằng 1 hàm bước nhị phân có dạng: 11 Hình 1.4 Hàm bước nhị phân (Binary step function) - Hàm sigmoid (Sigmoid function (logsig)) Hàm này đặc biệt thuận lợi khi sử dụng cho các mạng được huấn luyện (trained) bởi thuật toán Lan truyền ngược (back-propagation), bởi vì nó dễ lấy đạo hàm, do đó có thể giảm đáng kể tính toán trong quá trình huấn luyện.
Hàm sigmoid được ứng dụng cho các chương trình ứng dụng mà các đầu ra mong muốn rơi vào khoảng [0,1].5 Hàm Sigmoid - Hàm sigmoid lưỡng cực (Tan-Sigmoid) Hàm này có thuộc tính tương tự hàm sigmoid. Nó làm việc tốt đối với các ứng dụng có đầu ra yêu cầu trong khoảng [-1,1].6 Hàm sigmoid lưỡng cực - Hàm ReLU Hàm ReLu được dùng khá nhiều trong huấn luyện các mạng nơ-ron. ReLu đơn giản lọc các giá trị bé hơn 0. Tức là, nếu đầu vào lớn hơn 0, đầu ra bằng đầu vào.
Hoạt động của ReLU gần với cách hoạt động của các tế bào thần kinh sinh học của chúng ta.7 Đồ thị hàm ReLU Hình 1.8 Một số hàm truyền phổ biến 13 1.3 Kiến trúc ANN Kiến trúc chung của ANN được mô tả gồm ba kiểu lớp: Lớp đầu vào (Input Layer), lớp ẩn (Hidden Layer) và lớp đầu ra (Ouput Layer).9 Kiến trúc 3 phần của mạng ANN Lớp input layer (lớp đầu vào): lớp này nằm bên trái cùng của mạng, thể hiện cho các đầu vào của mạng. Lớp output layer (lớp đầu ra): là lớp bên phải cùng và nó thể hiện cho những đầu ra của mạng. Lớp hidden layer (lớp ẩn): lớp này nằm giữa lớp đầu vào và lớp đầu ra nó thể hiện cho quá trình suy luận logic của mạng. Mỗi một mạng nơ-ron chỉ có duy nhất một lớp đầu vào và một lớp đầu ra nhưng lại có rất nhiều lớp ẩn.10 Mạng nơ-ron nhiều lớp 14 1.4 Hoạt động của ANN Hình 1.