

Bạn có biết rằng các nhà nghiên cứu đang liên tục làm việc để huấn luyện máy tính suy nghĩ như con người, và họ đang đạt được những thành công rực rỡ? Nền tảng đằng sau điều này chính là Mạng nơ-ron (Neural Networks). Trước đây, VNPT Cloud đã chia sẻ một bài hướng dẫn xuất sắc về Mạng nơ-ron hồi quy (RNN), và hôm nay, chúng tôi mang đến cho bạn bài hướng dẫn về Mạng nơ-ron tích chập (CNN) này. Bạn sẽ nghiên cứu cách mạng nơ-ron tích chập trở thành xương sống của ngành công nghiệp trí tuệ nhân tạo và cách CNN đang định hình các ngành công nghiệp trong tương lai.
“Máy tính có thể nhìn, nghe và học hỏi. Chào mừng bạn đến với tương lai.” - Dave Waters
Học máy (Machine Learning) có rất nhiều thuật toán chịu trách nhiệm truyền tải trí thông minh cho các hệ thống. Có rất nhiều ứng dụng của Học máy, và một trong số đó là Thị giác máy tính (Computer Vision). Mục tiêu nhận dạng khuôn mặt và các hình ảnh khác được thực hiện rất tốt nhờ một loại mạng nơ-ron đặc biệt gọi là Mạng nơ-ron tích chập (CNNs). Trong bài viết này, chúng ta sẽ tìm hiểu nguyên lý hoạt động đằng sau các mạng CNN này cũng như lịch sử và ứng dụng của chúng.
Mạng nơ-ron tích chập (Convolutional Neural Networks) là một loại thuật toán Học sâu (Deep Learning) nhận hình ảnh làm đầu vào và học các đặc trưng (features) khác nhau của hình ảnh thông qua các bộ lọc (filters). Điều này cho phép chúng học các đối tượng quan trọng hiện diện trong ảnh, giúp phân biệt hình ảnh này với hình ảnh khác.
Ví dụ: Mạng tích chập sẽ học các đặc trưng cụ thể của loài mèo để phân biệt với loài chó, sao cho khi chúng ta đưa đầu vào là ảnh mèo và chó, nó có thể dễ dàng phân biệt giữa hai loài này.
Một đặc điểm quan trọng của CNN giúp nó khác biệt với các thuật toán Học máy khác là khả năng tự tiền xử lý dữ liệu. Do đó, bạn có thể không cần dành nhiều nguồn lực vào việc tiền xử lý dữ liệu thủ công. Ở giai đoạn bắt đầu (cold-start), các bộ lọc có thể cần sự can thiệp thủ công nhưng khi quá trình huấn luyện tiến triển, chúng có thể thích nghi với các đặc trưng đã học và tự phát triển các bộ lọc của riêng mình. Vì vậy, CNN liên tục phát triển cùng với sự tăng trưởng của dữ liệu.
Một điểm quan trọng khác cần lưu ý ở CNN là việc xem xét các kim tự tháp không gian (spatial pyramids) trong dữ liệu. Điều này có nghĩa là CNN có khả năng nắm bắt mối quan hệ không gian và thời gian trong một hình ảnh bằng các đặc trưng được sắp xếp theo phân cấp. Mạng càng đi sâu, nó càng có thể xác định được các mẫu phức tạp hơn bằng cách huấn luyện dựa trên các mẫu đơn giản tìm thấy ở các lớp trước đó. Kiểu học phân cấp này giúp CNN rất hữu ích trong bất kỳ tác vụ nào đòi hỏi mức độ chi tiết cao trong dữ liệu thị giác.

CNN có hiệu suất tương tự như các mạng nơ-ron kết nối đầy đủ (fully connected) thông thường. Các mạng tích chập này có các trọng số (weights) có thể học từ đầu vào và các độ lệch (biases). Mỗi nơ-ron được kết nối trong mạng sẽ nhận một đầu vào và thực hiện phép nhân vô hướng (dot product) trên đó. Quá trình này diễn ra theo một cách phi tuyến tính. Có một hàm chấm điểm (score function) duy nhất có thể vi phân ở cuối, hàm này bao gồm các điểm số mà chúng ta thu được từ các lớp khác nhau của mạng nơ-ron.
Cuối cùng, một hàm mất mát (loss function) ở cuối sẽ đánh giá hiệu suất của mô hình. Mạng nơ-ron tích chập khác với mạng nơ-ron tiêu chuẩn ở chỗ nó có một giả định rõ ràng rằng đầu vào là một hình ảnh.
Giả định này giúp kiến trúc được định nghĩa theo cách thực tế hơn. Ví dụ, khác với sự sắp xếp tuyến tính của các nơ-ron trong một mạng nơ-ron đơn giản, các nơ-ron này có cấu trúc tổng thể ba chiều – Chiều dài, Chiều rộng và Chiều cao. Chẳng hạn, hình ảnh trong tập dữ liệu CIFAR-10 sẽ chứa các ảnh có kích thước 32x32x3 và đầu ra cuối cùng sẽ có một vectơ duy nhất của các hình ảnh kích thước 1x1x10.
Kiến trúc của Mạng nơ-ron tích chập như sau:
Lớp quan trọng nhất trong kiến trúc CNN là lớp Tích chập (Convolutional Layer). Thành phần thiết yếu của lớp CONV bao gồm một bộ lọc có thể học được (learnable filter). Mỗi bộ lọc trên mạng CONV có kích thước ví dụ là 5x5x3. Khi quá trình truyền xuôi (forward pass) diễn ra, chúng ta thực hiện trượt từng bộ lọc trên toàn bộ chiều rộng cũng như chiều sâu của khối lượng đầu vào và cuối cùng tính toán tích vô hướng. Tích vô hướng này cuối cùng sẽ tạo ra một bản đồ kích hoạt (activation map) 2 chiều, cung cấp cho chúng ta phản hồi của bộ lọc tại mọi vị trí không gian.
Mạng sau đó sẽ học các bộ lọc khác nhau tương ứng với các đặc trưng thị giác như một cạnh (edge) hoặc các vết màu trong lớp đầu tiên và tạo ra một mẫu giống như tổ ong ở các lớp cao hơn của mạng. Mỗi bộ lọc trong số 12 bộ lọc trong ConvNet sẽ tạo ra một bản đồ kích hoạt 2 chiều mà chúng ta xếp chồng lên nhau để tạo ra khối lượng đầu ra.
Mạng nơ-ron tích chập (CNN) được phát triển để nhận dạng hình ảnh, do đó, chúng chủ yếu được sử dụng trong lĩnh vực thị giác máy tính để phân loại hình ảnh, phân đoạn hình ảnh (segmentation) và thực hiện định vị (localization) các đối tượng trên hình ảnh.
Tóm tắt lại bài viết về Mạng nơ-ron tích chập: Đây là thuật toán phổ biến và quan trọng nhất khi làm việc với dữ liệu hình ảnh. Chúng ta đã tìm hiểu cách CNN được sử dụng trong nhiều lĩnh vực khác ngoài dữ liệu hình ảnh để mở rộng phạm vi ứng dụng. Chúng ta cũng đã tìm hiểu cách CNN hoạt động và cách chúng thực hiện nhiều hoạt động khác nhau.
