Series: Machine Learning Fundamentals – Bài 32
Ở bài trước, chúng ta đã nhập môn Mạng nơ-ron nhân tạo (Neural Network / MLP) – nền tảng khởi đầu cho kỷ nguyên Học sâu (Deep Learning). Mặc dù MLP hoạt động rất tốt trên dữ liệu dạng bảng (Tabular Data), nó lại gặp hạn chế cực kỳ lớn khi xử lý dữ liệu hình ảnh: bùng nổ số lượng trọng số và làm mất thông tin không gian (Spatial Features) của các điểm ảnh (Pixels).
Để giải quyết triệt để bài toán Thị giác máy tính (Computer Vision), kiến trúc Convolutional Neural Network (CNN) đã ra đời.
Convolutional Neural Network là gì?
Convolutional Neural Network (CNN) – hay Mạng nơ-ron tích chập – là một lớp kiến trúc Deep Learning chuyên dụng cho việc xử lý dữ liệu dạng mảng đa chiều, đặc biệt là hình ảnh và video.
Ảnh đầu vào (Matrix) ──> [Convolution Layer] ──> [Pooling Layer] ──> [Flatten & Dense] ──> Kết quả dự đoán
Tài liệu chính thức mô tả CNN khai thác tính chất phụ thuộc không gian giữa các điểm ảnh bằng cách sử dụng các phép tính tích chập (Convolution), giúp mô hình tự động học và trích xuất đặc trưng từ mức độ cơ bản (đường nét, góc) đến phức tạp (mắt, mũi, khuôn mặt). Xem thêm tại TensorFlow CNN Tutorial.
Cấu trúc của Convolutional Neural Network
Một mạng CNN tiêu chuẩn bao gồm 3 tầng chính xếp chồng lên nhau:
1. Convolutional Layer (Tầng tích chập)
Đây là trái tim của mạng CNN. Tầng này sử dụng các bộ lọc (Filters / Kernels) có kích thước nhỏ (ví dụ: $3 \times 3$ hoặc $5 \times 5$) trượt qua toàn bộ bức ảnh để thực hiện phép tính tích chập.
-
Feature Map: Kết quả đầu ra thể hiện sự xuất hiện của các đặc trưng (như cạnh, góc, họa tiết).
-
Stride: Bước nhảy của Filter khi trượt qua ảnh.
-
Padding: Việc bổ sung các giá trị $0$ quanh viền ảnh để giữ nguyên kích thước không gian.
2. Pooling Layer (Tầng gộp / Giảm chiều)
Tầng Pooling giúp giảm kích thước không gian của Feature Map, từ đó giảm số lượng thông số tính toán và hạn chế Overfitting:
-
Max Pooling (Phổ biến nhất): Lấy giá trị lớn nhất trong cửa sổ gộp (ví dụ: $2 \times 2$).
-
Average Pooling: Lấy giá trị trung bình cộng trong cửa sổ gộp.
3. Fully Connected Layer (Tầng kết nối đầy đủ)
Sau khi trải qua nhiều lớp Convolution và Pooling, dữ liệu được “duỗi phẳng” (Flatten) thành một vectơ 1 chiều và đưa vào các tầng Dense (MLP) truyền thống để đưa ra phân loại cuối cùng.
Cách Convolutional Neural Network hoạt động
Quá trình học đặc trưng của CNN diễn ra theo thứ tự phân cấp (Hierarchical Feature Learning):
Tầng đầu (Early Layers) ──> Học các chi tiết thô (Đường thẳng, góc, viền)
Tầng giữa (Middle Layers) ──> Học các họa tiết phức tạp (Mắt, mũi, bánh xe)
Tầng cuối (Late Layers) ──> Học toàn bộ đối tượng (Khuôn mặt, ô tô, con mèo)
Nhờ cơ chế Chia sẻ trọng số (Weight Sharing), bộ lọc tìm đường kẻ ngang có thể dùng chung cho toàn bộ bức ảnh thay vì phải học lại trọng số ở từng vị trí như mạng MLP.
Dữ liệu có cần Preprocessing / Scaling không?
CỰC KỲ BẮT BUỘC.
Ảnh số thường có giá trị Pixel nằm trong khoảng từ $0$ đến $255$. Trước khi đưa vào mạng CNN, dữ liệu ảnh luôn được chuẩn hóa (Rescaling) về khoảng $[0, 1]$ bằng cách chia cho $255.0$ hoặc chuẩn hóa Z-score để giúp quá trình huấn luyện bằng Gradient Descent diễn ra ổn định và nhanh chóng.
Ưu điểm và Nhược điểm của Convolutional Neural Network
Ưu điểm
-
Trích xuất đặc trưng tự động: Không cần làm Feature Engineering thủ công cho hình ảnh.
-
Bảo toàn thông tin không gian: Giữ nguyên mối tương quan giữa các Pixel lân cận.
-
Tiết kiệm trọng số: Cơ chế tích chập giúp giảm hàng triệu tham số so với mạng MLP thông thường.
Nhược điểm
-
Yêu cầu tài nguyên phần cứng (GPU) và dung lượng bộ nhớ lớn để huấn luyện.
-
Cần tập dữ liệu ảnh nhãn đủ lớn để tránh Overfitting (thường kết hợp Data Augmentation).
-
Khó giải thích chi tiết cơ chế ra quyết định bên trong (Black-box).
Ứng dụng của Convolutional Neural Network
-
Nhận diện & Phân loại hình ảnh: Nhận diện khuôn mặt, phân loại xe cộ, chẩn đoán ảnh Y tế (X-quang, MRI).
-
Phát hiện đối tượng (Object Detection): YOLO, Faster R-CNN trong xe tự lái.
-
Xử lý ngôn ngữ tự nhiên: Phân tích chuỗi văn bản và âm thanh.
Tóm tắt
-
Convolutional Neural Network là mạng Deep Learning chuyên dụng cho hình ảnh.
-
Convolution Layer trích xuất đặc trưng không gian nhờ các bộ lọc (Kernels).
-
Pooling Layer giảm kích thước không gian và hạn chế Overfitting.
-
Bắt buộc phải Rescale giá trị Pixel về khoảng $[0, 1]$ trước khi huấn luyện.
Tài liệu tham khảo
-
TensorFlow Documentation: Convolutional Neural Network (CNN) with Keras
-
PyTorch Tutorials: Training a Classifier (CNN) in PyTorch
-
LeCun et al. (1998): Gradient-based learning applied to document recognition – Bài báo đặt nền móng LeNet-5.
Khóa học tại MCNA Technology School
Nếu bạn muốn thực hành Machine Learning, Python và xây dựng các mô hình trên dữ liệu thực tế, có thể tham khảo:
Tác giả: Bùi Đình Tuyển – Data Analyst tại MCNA Technology School
📞 Hotline: 0939.866.825 (Mr. Khang)
🌐 Website: MCNA Technology School
📍 Hà Nội: 30 Trung Liệt, Đống Đa | Liền kề 44B TT2 Văn Quán, Hà Đông
📍 TP.HCM: 50B Phan Tây Hồ, Cầu Kiệu

