BỘ LAO ĐỘNG THƯƠNG BINH VÀ XÃ HỘI
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT VĨNH LONG
DEEP LEARNING ALGORITHM
BÁO CÁO MÔN: PHÂN TÍCH THIẾT THUẬT TOÁN NÂNG CAO
GIẢNG VIÊN:
TS. PHAN ANH CANG
HỌC VIÊN THỰC HIỆN:
HÀ HOÀI NAM – 22904005
Lớp: 0CTT22A
NỘI DUNG
1. Tìm hiểu về Deep Learning
2. Giải thích và minh hoạ thuật toán
3. Đánh giá và phân tích giải pháp
4. Tài liệu tham khảo
1. Tìm hiểu về Deep Learning
1.1. Deep Learning là gì?
Deep learning được bắt nguồn từ thuật toán Neural network vốn xuất phát chỉ là một ngành nhỏ của machine learning
1. Tìm hiểu về Deep Learning
1.1. Deep Learning là gì?
Deep Learning là một chi của ngành máy học dựa trên một tập hợp các thuật toán để cố gắng mô hình dữ liệu trừu tượng hóa ở mức cao bằng cách sử dụng nhiều lớp xử lý với cấu trúc phức tạp, hoặc bằng cách khác bao gồm nhiều biến đổi phi tuyến.
1. Tìm hiểu về Deep Learning
1.2. Deep Learning hoạt động ra sao?
Deep Learning là một phương pháp của Học máy. Nó cho phép chúng ta huấn luyện một AI có thể dự đoán được các đầu ra dựa vào một tập các đầu vào. Cả hai phương pháp có giám sát và không giám sát đều có thể sử dụng để huấn luyện.
1. Tìm hiểu về Deep Learning
1.2. Deep Learning hoạt động ra sao?
Một mạng neural nhân tạo trong Deep learning bao gồm nhiều lớp (layer) khác nhau, số lượng layer càng nhiều thì mạng sẽ càng “sâu”. Trong mỗi layer là các nút mạng (node) và được liên kết với những lớp liền kề khác. Mỗi kết nối giữa các node sẽ có một trọng số tương ứng, trọng số càng cao thì ảnh hưởng của kết nối này đến mạng neural càng lớn.
1. Tìm hiểu về Deep Learning
1.2. Deep Learning hoạt động ra sao?
Để dạy máy tính nhận diện hình ảnh một con mèo thì chúng ta sẽ lập trình ra nhiều lớp trong mạng thần kinh nhân tạo, mỗi lớp có khả năng xác định một đặc điểm cụ thể của con mèo như râu, vuốt, chân,… rồi cho máy xem hàng ngàn bức ảnh mèo (chỉ ra rằng “Đây là con mèo”) cùng hàng ngàn bức ảnh không phải mèo (chỉ ra rằng "đây không phải mèo").
1. Tìm hiểu về Deep Learning
1.2. Deep Learning hoạt động ra sao?
Muốn dạy xe hơi cách băng qua đường, theo cách truyền thống bạn sẽ đưa cho nó một loạt quy tắc hướng dẫn cách nhìn trái phải hay đợi xe và người đi qua,… Thế nhưng nếu trong Machine Learning nói chung và Deep Learning nói riêng, bạn sẽ cho máy tính xem 10.000 video quay cảnh người ta băng qua đường an toàn và 10.000 video quay cảnh ai đó bị xe đâm để nó tự học theo.
1. Tìm hiểu về Deep Learning
1.3. Một số thuật toán của Deep Learning
2. Giải thích và minh hoạ thuật toán
2.1. Thuật toán Convolutional Neural Network - CNN
CNN (Convolutional Neural Network) là gì?
Convolutional Neural Network (CNNs – Mạng nơ-ron tích chập) là một trong những mô hình Deep Learning tiên tiến. Nó giúp cho chúng ta xây dựng được những hệ thống thông minh với độ chính xác cao.
2. Giải thích và minh hoạ thuật toán
2.1. Thuật toán Convolutional Neural Network - CNN
Tìm hiểu về Convolutional
Là một cửa sổ trượt (Sliding Windows) trên một ma trận.
Các convolutional layer có các parameter(kernel) đã được học để tự điều chỉnh lấy ra những thông tin chính xác nhất mà không cần chọn các feature.
2. Giải thích và minh hoạ thuật toán
2.1. Thuật toán Convolutional Neural Network - CNN
Cấu trúc mạng Convolutional Neural Network
Mạng CNN là một tập hợp các lớp Convolution chồng lên nhau và sử dụng các hàm nonlinear activation (như ReLU và Tanh) để kích hoạt các trọng số trong các node. Mỗi một lớp sau khi thông qua các hàm kích hoạt sẽ tạo ra các thông tin trừu tượng hơn cho các lớp tiếp theo.
2. Giải thích và minh hoạ thuật toán
2.2. Giải thích và minh hoạ thuật toán CNN
Mạng CNN sử dụng 3 ý tưởng cơ bản:
- Các trường hợp tiếp nhận cục bộ (Local receptive field)
- Trọng số chia sẻ (Shared weights)
- Tổng hợp (Pooling)
2. Giải thích và minh hoạ thuật toán
2.2. Giải thích và minh hoạ thuật toán CNN
✡ Trường tiếp nhận cục bộ (Local receptive field):
Đầu vào của mạng CNN là một ảnh. Ví dụ như ảnh có kích thước 28×28 thì tương ứng đầu vào là một ma trận có 28×28 và giá trị mỗi điểm ảnh là một ô trong ma trận.
2. Giải thích và minh hoạ thuật toán
2.2. Giải thích và minh hoạ thuật toán CNN
✡ Trường tiếp nhận cục bộ (Local receptive field):
Chúng ta chỉ kết nối trong một vùng nhỏ của các neural đầu vào như một filter có kích thước 5×5 tương ứng (28- 5 + 1) 24 điểm ảnh đầu vào. Mỗi một kết nối sẽ học một trọng số và mỗi neural ẩn sẽ học một bias. Mỗi một vùng 5×5 đấy gọi là một trường tiếp nhận cục bộ.
2. Giải thích và minh hoạ thuật toán
2.2. Giải thích và minh hoạ thuật toán CNN
✡ Trường tiếp nhận cục bộ (Local receptive field):
Các bước để tạo ra hidden layer:
1. Tạo ra neural ẩn đầu tiên trong lớp ẩn 1
2. Giải thích và minh hoạ thuật toán
2.2. Giải thích và minh hoạ thuật toán CNN
✡ Trường tiếp nhận cục bộ (Local receptive field):
Các bước để tạo ra hidden layer:
2. Dịch filter qua bên phải một cột sẽ tạo được neural thứ 2
2. Giải thích và minh hoạ thuật toán
2.2. Giải thích và minh hoạ thuật toán CNN
✡ Trường tiếp nhận cục bộ (Local receptive field):
Các bước để tạo ra hidden layer:
Với bài toán nhận dạng ảnh người ta thường gọi ma trận lớp đầu vào là feature map, trọng số xác định các đặc trưng là shared weight và độ lệch xác định một feature map là shared bias. Như vậy đơn giản nhất là qua các bước trên chúng ta chỉ có 1 feature map. Tuy nhiên trong nhận dạng ảnh chúng ta cần nhiều hơn một feature map.
2. Giải thích và minh hoạ thuật toán
2.2. Giải thích và minh hoạ thuật toán CNN
✡ Trường tiếp nhận cục bộ (Local receptive field):
Các bước để tạo ra hidden layer:
Như vậy, Local receptive field thích hợp cho việc phân tách dữ liệu ảnh, giúp chọn ra những vùng ảnh có giá trị nhất cho việc đánh giá phân lớp.
2. Giải thích và minh hoạ thuật toán
2.2. Giải thích và minh hoạ thuật toán CNN
✡ Trọng số chia sẻ (Shared weight bias):
Đầu tiên, các trọng số cho mỗi filter (kernel) phải giống nhau. Tất cả các neural trong lớp ẩn đầu sẽ phát hiện chính xác feature tương tự chỉ ở các vị trí khác nhau trong hình ảnh đầu vào. Chúng ta gọi việc map từ input layer sang hidden layer là một feature map.
Một convolutional layer bao gồm các feature map khác nhau. Mỗi một feature map giúp detect một vài feature trong bức ảnh. Lợi ích lớn nhất của trọng số chia sẻ là giảm tối đa số lượng tham số trong mạng CNN.
2. Giải thích và minh hoạ thuật toán
2.2. Giải thích và minh hoạ thuật toán CNN
✡ Lớp tổng hợp (Pooling layer):
Lớp pooling thường được sử dụng ngay sau lớp convulational để đơn giản hóa thông tin đầu ra để giảm bớt số lượng neural.
2. Giải thích và minh hoạ thuật toán
2.2. Giải thích và minh hoạ thuật toán CNN
✡ Lớp tổng hợp (Pooling layer):
Thủ tục pooling phổ biến là max-pooling, thủ tục này chọn giá trị lớn nhất trong vùng đầu vào 2×2.
2. Giải thích và minh hoạ thuật toán
2.2. Giải thích và minh hoạ thuật toán CNN
✡ Lớp tổng hợp (Pooling layer):
Cuối cùng ta đặt tất cả các lớp lại với nhau thành một CNN với đầu ra gồm các neural với số lượng tùy bài toán.
Hai lớp cuối cùng của các kết nối trong mạng là một lớp đầy đủ kết nối (fully connected layer) . Lớp này nối mọi neural từ lớp max pooled tới mọi nơron của tầng ra.
2. Giải thích và minh hoạ thuật toán
2.3. Cách chọn tham số cho CNN
1. Số các convolution layer: càng nhiều các convolution layer thì performance càng được cải thiện. Sau khoảng 3 hoặc 4 layer, các tác động được giảm một cách đáng kể.
2. Filter size: thường filter theo size 5×5 hoặc 3×3
3. Pooling size: thường là 2×2 hoặc 4×4 cho ảnh đầu vào lớn.
4. Cách cuối cùng là thực hiện nhiều lần việc train test để chọn ra được param tốt nhất.
3. Đánh giá và phân tích thuật toán
3.1. Đánh giá thuật toán CNN
Convolutional Neural Network là một trong những phương pháp chính khi sử dụng dữ liệu về ảnh. Kiến trúc mạng này xuất hiện do các phương pháp xử lý dữ liệu ảnh thường sử dụng giá trị của từng pixel. Vậy nên với một ảnh có giá trị kích thước 100x100 sử dụng kênh RGB ta có tổng cộng ta có 100 * 100 * 3 bằng 30000 nút ở lớp đầu vào.
3. Đánh giá và phân tích thuật toán
3.1. Đánh giá thuật toán CNN
Điều đó kéo theo việc có một số lượng lớn weight và bias dẫn đến mạng nơ-ron trở nên quá đồ sộ, gây khó khăn cho việc tính toán. Hơn nữa, chúng ta có thể thấy rằng thông tin của các pixel thường chỉ chịu tác động bởi các pixel ngay gần nó, vậy nên việc bỏ qua một số nút ở tầng đầu vào trong mỗi lần huấn luyện sẽ không làm giảm độ chính xác của mô hình. Vậy nên người ta sử dụng cửa số tích chập nhằm giải quyết vấn đề số lượng tham số lớn mà vẫn trích xuất được đặc trưng của ảnh.
3. Đánh giá và phân tích thuật toán
3.1. Đánh giá thuật toán CNN
Về mặt kỹ thuật, trong mô hình học sâu CNN, mô hình ảnh đầu vào sẽ chuyển nó qua một loạt các lớp tích chập với các bộ lọc, sau đó đến lớp Pooling, rồi tiếp theo là các lớp được kết nối đầy đủ (FC — fully connected layers) và cuối cùng áp dụng hàm softmax để phân loại một đối tượng dựa trên giá trị xác suất trong khoản từ 0 đến 1.
3. Đánh giá và phân tích thuật toán
3.2. Phân tích thuật toán CNN
Convolution Layer
Convolution (lớp tích chập) là lớp đầu tiên trích xuất các đặc tính từ hình ảnh. Tham số lớp này bao gồm một tập hợp các bộ lọc có thể học được. Các bộ lọc đều nhỏ thường có kích cỡ hai chiều đầu tiên khoảng 3x3 hoặc 5x5,... và có độ sâu bằng với độ sâu của đầu vào đầu vào. Bằng cách trượt dần bộ lọc theo chiều ngang và dọc trên ảnh, chúng thu được một Feature Map chứa các đặc trưng được trích xuất từ trên hình ảnh đầu vào.
3. Đánh giá và phân tích thuật toán
3.2. Phân tích thuật toán CNN
Full Connected Layer
Sau khi ảnh được truyền qua nhiều convolutional layer và pooling layer thì model đã học được tương đối các đặc điểm của ảnh thì tensor của output của layer cuối cùng sẽ được là phẳng thành vector và đưa vào một lớp được kết nối như một mạng nơ-ron. Với FC layer được kết hợp với các tính năng lại với nhau để tạo ra một mô hình. Cuối cùng sử dụng softmax hoặc sigmoid để phân loại đầu ra.
3. Đánh giá và phân tích thuật toán
3.2. Phân tích thuật toán CNN
Pooling Layer
Pooling layer thường được dùng giữa các convolutional layer, để giảm kích thước dữ liệu nhưng vẫn giữ được các thuộc tính quan trọng. Kích thước dữ liệu giảm giúp giảm việc tính toán trong model. Trong quá trình này, quy tắc về stride và padding áp dụng như phép tính convolution trên ảnh.