Mạng CNN là một trong những động lực thúc đẩy mạnh mẽ của lĩnh vực khoa học máy tính nói chung và thị giác máy tính nói riêng. Hiện nay cộng đồng nghiên cứu đã và đang tiếp tục nghiên cứu và phát triển những mạng CNN mới với hiệu năng tốt hơn. Trong bài viết lần này nhóm chúng em sẽ giải thích nguyên nhân ra đời của CNN, đồng thời giới thiệu những kiến trúc CNN phổ biến bắt đầu với AlexNet cho đến MobileNet.
Trước khi CNN ra đời, Multilayer Perceptron hay mạng nơ-ron thần kinh nhân tạo là một công cụ mạnh mẽ cho phép giải quyết nhiều bài toán nhờ khả năng học với lượng dữ liệu lớn. Tuy nhiên việc áp dụng Multilayer Perceptron cho các bài toán liên quan đến thị giác máy tính gặp phải nhiều khó khăn, trong đó lớn nhất là về độ lớn và phức tạp của mô hình.
Lấy một bức ảnh RGB có kích thước 100 x 100 pixels làm ví dụ, số lượng nút ở lớp đầu vào để có thể xử lí bức ảnh này là 100 x 100 x3 = 30000, một số lượng nút đồ sộ. Vì MLP có số lượng tham số tăng đột biến như vậy, ảnh hưởng đến sự hiệu quả cũng như gây khó khăn, cản trở quá trình huấn luyện do yêu cầu nhiều phần cứng.
Để giải quyết vấn đề trên, người ta đã nghĩ đến giảm số chiều của đầu vào bằng cách thay vì đưa cả bức ảnh vào thì sẽ đưa những đặc trưng được trích xuất bởi các thuật toán như GIST, HOG, SIFT, LBP,... Tuy nhiên những đặc trưng này đều là những đặc trưng được trích xuất theo các thuật toán cố định và không thay đổi được, vì vậy những đặc trưng này có thể không phù hợp với một số bài toán nhất định. Lấy bài toán phân loại đối tượng làm ví dụ, với bài toán phân loại chó mèo thì chúng ta cần trích xuất những thông tin liên quan đến hình dáng cơ thể, các bộ phận trên cơ thể, ... Trong khi đó với bài toán phân loại phương tiện giao thông thì chúng ta lại cần những đặc trưng liên quan đến hình dáng phương tiện, số lượng bánh xe, ... Nếu dùng những thuật toán trích xuất đặc trưng truyền thống như GIST, HOG, SIFT, LBP, thì đặc trưng trích xuất từ hai bài toán này là giống nhau. Đó là lí do khiến phương pháp này không tốt khi áp dụng vào các bài toán cụ thể.
Những vấn đề trên là động lực thúc đẩy cho sự ra đời của mạng CNN. Mạng nơ-ron tích chập [Convolutional Neural Network - CNN] được giới thiệu và được áp dụng rộng rãi vì nó giúp giảm lượng tham số đi rất nhiều lần so với MLP do sử dụng các kết nối cục bộ và cơ chế chia sẻ tham số. Đồng thời CNN được huấn luyện dựa trên dữ liệu của bài toán nên những đặc trưng trích xuất bởi CNN đều mang đặc tính riêng theo từng bài toán, từng loại dữ liệu.
Trước khi đi vào một số mạng CNN phổ biến, chúng ta cần phải tìm hiểu một chút về cuộc thi ImageNet, là cuộc thi thúc đẩy sự ra đời và phát triển của các mạng CNN. Tên đầy đủ của cuộc thi là ImageNet Large Scale Visual Recognition Challenge lần đầu được tổ chức vào năm 2010, đây là cuộc thi về nhận diện vật thể và và phân loại ảnh. Tập dữ liệu ảnh ban đầu cho cuộc thi bao gồm khoảng 1.2 triệu ảnh thuộc 1000 lớp khác nhau và dần được mở rộng ra về số lượng ảnh cũng như số lớp.
2.1 Alexnet
Hình 1: Kiến trúc mạng AlexNet - [nguồn]
Mạng AlexNet [1] được giới thiệu vào năm 2012, và cũng là mô hình có chiến thắng cách biệt trong cuộc thi ImageNet Large Scale Visual Recognition Challenge năm 2012. AlexNet lần đầu tiên đã chứng minh được rằng các đặc trưng thu được bởi việc học có thể vượt qua các đặc trưngtruyền thống trước đó như GIST, HOG, SIFT, LBP, phá vỡ định kiến trước đây trong nghiên cứu thị giác máy tính.
Kiến trúc của mạng AlexNet được mô tả ở hình 1, bao gồm 8 lớp: 5 lớp tích chập và 3 lớp fully-connected. Cách thiết kế mạng này tương tự với kiến trúc mạng LeNet [2] được Yan Lecun giới thiệu trước đó. Tuy nhiên AlexNet khác biệt ở những điểm sau:
- Sử dụng hàm kích hoạt là ReLU thay vì hàm Tanh hay Sigmoid làm cho
quá trình huấn luyện nhanh hơn.
- Tránh overfiting: Do kiến trúc của AlexNet lớn hơn so với LeNet nên dễ rơi vào tình trạng overfiting. Để tránh tình trạng này AlexNet sử dụng kỹ thuật tăng cường dữ liệu kết hợp với Dropout.
2.2. VGGNet
Tiếp nối sự thành công của Alexnet, mô hình VGGNet [3] đầu tiên đã được ra đời vào năm 2014, từ đó mở ra hướng phát triển đột phá trong lĩnh vực thị giác máy tính nói chung và nhóm mô hình CNN nói riêng. Điểm đặc biệt giúp làm nên thành công lớn mạnh của VGG nằm ở việc giúp giảm số lượng parameter cần thiết trong các CNN layer, từ đó cải thiện được đáng kể thời gian sử dụng cho quá trình huấn luyện mô hình
Trải qua quá trình nghiên cứu và phát triển, VGGNet đã cho ra đời rất nhiều biến thể [VGG16, VGG19...] với sự khác biệt chính nằm ở tổng số lượng layer của mô hình. Trong đó, mô hình được nhắc đến phổ biến nhất chính là VGG16 với kiến trúc như sau:
Hình 2: Kiến trúc VGG16 - [nguồn]
Với ý tưởng mới mẻ về mặt kiến trúc, Alexnet đã đạt được 1 số cải tiến đáng kể so với mô hình Alexnet trước đó. Cụ thể là ở việc sử dụng kernel: Thay vì sử dụng nhiều loại kernel có kích thước khác nhau [3×33\times3, 5×55\times5, 11×1111\times11] như trong Alexnet, VGGNet lại sử dụng tất cả kernel đều có kích thước 3×33\times3. Việc thay thế 1 kernel lớn bằng nhiều kernel nhỏ [3×33\times3] sẽ mang lại hiệu quả tốt hơn vì khi đó vừa giúp giảm số lượng parameter của mô hình vừa giúp tăng số lượng conv layer, giúp mô hình tăng độ sâu để phù hợp hơn cho việc học và rút trích các đặc trưng phức tạp. Để hình dung rõ hơn về ý này, ta sẽ xét ví dụ đơn giản sau: Nếu ta sử dụng 1 kernel có kích thước 7x7 thì tổng số parameter sẽ là 49, nhưng nếu ta sử dụng 3 kernel có kích thước 3×33\times3, khi đó tổng số lượng parameter sẽ là 3×3×3=27