Convolutional neural network (CNN) đóng vai trò quan trọng trong lĩnh vực trí tuệ nhân tạo, hỗ trợ xử lý hình ảnh, nhận diện khuôn mặt, phân loại đối tượng và phân đoạn ảnh. Cùng Bizfly tìm hiểu về khái niệm, các thành phần chính và cách xây dựng Convolutional neural network hiệu quả.
Convolutional neural network (CNN) hay còn gọi là mạng nơ-ron tích chập. Đây là một mạng nơ-ron truyền thẳng được thiết kế để nhận dạng và phân loại hình ảnh, video, ngôn ngữ tự nhiên.
CNN được sử dụng trong lĩnh vực Computer Vision (hay thị giác máy tính) và xử lý hình ảnh, nhận diện vật thể. Convolutional neural network được ứng dụng nhiều trong các ngành chế tạo xe tự lái, hệ thống camera… Bên cạnh đó, nó cũng góp mặt trong lĩnh vực học sâu (deep learning) để tạo ra các hệ thống phân loại, dự đoán với độ chính xác cao.
Mạng nơ-ron tích chập được tạo thành từ 4 phần chính giúp CNN mô phỏng cách hoạt động của não người nhằm nhận dạng các mẫu hình và đặc điểm trong hình ảnh.
Đây là khối xây dựng đầu tiên của CNN. Như tên gọi của nó, nhiệm vụ toán học chính được thực hiện được gọi là tích chập, là ứng dụng của hàm cửa sổ trượt vào ma trận các điểm ảnh biểu diễn một hình ảnh. Hàm trượt được áp dụng cho ma trận được gọi là hạt nhân hoặc bộ lọc và cả hai đều có thể được sử dụng thay thế cho nhau.
Trong lớp tích chập, một số bộ lọc có kích thước bằng nhau được áp dụng và mỗi bộ lọc được dùng để nhận dạng một mẫu cụ thể từ hình ảnh, chẳng hạn như độ cong của các chữ số, các cạnh, toàn bộ hình dạng của các chữ số,...
Hiểu đơn giản hơn, trong lớp tích chập, chúng ta sử dụng các lưới nhỏ (gọi là bộ lọc hoặc hạt nhân) di chuyển trên hình ảnh. Mỗi lưới nhỏ giống như một kính lúp mini tìm kiếm các mẫu cụ thể trong ảnh, như đường thẳng, đường cong hoặc hình dạng. Khi di chuyển trên ảnh, nó tạo ra một lưới mới làm nổi bật nơi tìm thấy các mẫu này.
Một hàm kích hoạt ReLU được áp dụng sau mỗi phép toán tích chập. Hàm này giúp mạng học được mối quan hệ phi tuyến tính giữa các đặc điểm trong hình ảnh, do đó làm cho mạng mạnh mẽ hơn để xác định các mẫu khác nhau. Nó cũng giúp giảm thiểu các vấn đề về độ dốc biến mất.
Mục tiêu của lớp pooling là kéo các đặc điểm quan trọng nhất từ ma trận phức tạp. Điều này được thực hiện bằng cách áp dụng một số hoạt động tổng hợp, làm giảm chiều của bản đồ đặc điểm (ma trận phức tạp), do đó làm giảm bộ nhớ được sử dụng trong khi đào tạo mạng. Pooling cũng có liên quan để giảm thiểu tình trạng quá khớp.
Các hàm tổng hợp phổ biến nhất có thể áp dụng là:
Ngoài ra, kích thước của bản đồ đặc điểm sẽ trở nên nhỏ hơn khi hàm gộp được áp dụng. Lớp gộp cuối cùng làm phẳng bản đồ đặc điểm của nó để nó có thể được xử lý bởi lớp được kết nối đầy đủ.
Các lớp này nằm trong lớp cuối cùng của mạng nơ-ron tích chập và đầu vào của chúng tương ứng với ma trận một chiều phẳng được tạo ra bởi lớp gộp cuối cùng. Các hàm kích hoạt ReLU được áp dụng cho chúng để phi tuyến tính.
Cuối cùng, một lớp dự đoán softmax được sử dụng để tạo ra các giá trị xác suất cho mỗi nhãn đầu ra có thể có và nhãn cuối cùng được dự đoán là nhãn có điểm xác suất cao nhất.
Ngày nay, Convolutional neural network đóng vai trò quan trọng trong nhiều lĩnh vực bởi:
Convolutional neural network sử dụng 3 ý tưởng sau để xây dựng dữ liệu hình ảnh, cụ thể là:
Trong hệ thống mạng CNN, trường tiếp nhận cục bộ (local receptive field) đề cập đến phạm vi không gian trên ảnh đầu vào mà mỗi nơ-ron trong tầng convolutional kết nối.
Các nơ-ron trong tầng này chỉ kết nối với một phần nhỏ của hình ảnh đầu vào chứ không kết nối toàn bộ, đây là trường tiếp nhận cục bộ của nơ-ron.
Từ đó, các nơ-ron xử lý lần lượt, chi tiết từng phần nhỏ nhằm tập trung vào việc nhận diện các đặc trưng cục bộ. Giả sử như cạnh, góc hoặc texture trong ảnh một cách hiệu quả.
Nhờ việc áp dụng trường tiếp nhận cục bộ, giúp mạng Convolutional neural network trở nên hiệu quả hơn, giảm độ phức tạp tính toán.
Trọng số chia sẻ hầu hết được áp dụng cho các bộ lọc (filters) sử dụng trong tầng convolutional của hệ thống mạng. Cốt lõi là các nơ-ron trong cùng một tầng cần sử dụng một bộ lọc để thực hiện phép tích chập trên đầu vào.
Với mỗi bộ lọc được áp dụng lên một vùng ảnh đầu vào, tất cả các nơ-ron trong cùng một tầng sẽ sử dụng cùng một bộ lọc để tính toán đầu ra. Từ đó, số lượng trọng số cần học sẽ giảm đáng kể, tiết kiệm bộ nhớ và nâng cao tính hiệu quả cho mô hình.
Việc chia sẻ trọng số giúp mô hình trở nên bất biến về mặt hình thức. Điều này sẽ giúp tăng khả năng nhận diện các đặc trưng vật lý một cách không phụ thuộc vào vị trí hay góc độ đối tượng.
Lớp này là một phần quan trọng của kiến trúc CNN. Nền tảng được dùng để giảm kích thước cho bản đồ đặc trưng (Feature map) tạo ra bởi tầng convolutional.
Lớp tổng hợp này thường được sử dụng sau mỗi tầng convolutional nhằm giảm chiều dài của dữ liệu, giảm độ phức tạp tính toán và tạo ra tính bất biến đổi của dữ liệu đầu vào.
Hiện có hai loại Pooling layer được sử dụng rộng rãi trong CNN:
Để chọn tham số cho CNN, cần xác định quy trình cụ thể để điều chỉnh và tối ưu hóa hiệu suất của mô hình, bạn nên lưu ý đến số lượng các yếu tố sau đây: Filter size, pooling size, số convolution và số lần train test, cụ thể:
Mạng nơ-ron tích chập đã cách mạng hóa lĩnh vực thị giác máy tính, dẫn đến những tiến bộ đáng kể trong nhiều ứng dụng thực tế. Dưới đây là ứng dụng thực tế của Convolutional neural network.
Hy vọng qua bài viết trên của Bizfly, bạn đã hiểu rõ Convolutional neural network là gì, tầm quan trọng và cách xây dựng Convolutional neural network hiệu quả. Đồng thời, bạn biết cách chọn tham số CNN phù hợp để phát triển dự án của mình