Sự phát triển một số mạng CNN
1. Giới thiệu mạng Convolutional Neural Network (CNN)
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.
2. Một số mạng CNN phổ biến
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 (, , ) như trong Alexnet, VGGNet lại sử dụng tất cả kernel đều có kích thước . Việc thay thế 1 kernel lớn bằng nhiều kernel nhỏ () 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 , khi đó tổng số lượng parameter sẽ là (parameter). Việc giảm số lượng parameter không chỉ giúp thời gian huấn luyện ngắn hơn mà còn góp phần giúp mô hình giảm khá năng bị tình trạng overfiting trong quá trình học.
2.3. Inception
Một mô hình CNN khác cũng được ra đời cùng thời điểm với VGG, đó chính là Inception [4] -- mô hình đã đạt được kết quả hàng đầu ở ILSVRC challenge vào năm 2014 và giành chiến thắng ở cuộc thi ImageNet vào năm 2015 với phiên bản đầu tiên (Inception-v1).
Kiến trúc này ra đời nằm giải quyết vấn đề chọn kích thước các kernel sao cho phù hợp, vì việc sử dụng một loại kernel cụ thể (, ,...) đôi khi sẽ thiếu linh hoạt trong việc trích xuất đặc trưng từ ảnh vì các vật thể, các thông tin trong các ảnh rất khác nhau về kích thước. Chẳng hạn, nếu ta chọn kernel có kích thước lớn thì chỉ nhận diện được các feature chiếm vùng không gian lớn mà bỏ qua các feature chiếm không gian nhỏ.
Nếu ta chọn cách tăng số layer cho mô hình thì sẽ ảnh hưởng lớn đến chi phí tính toán cũng như gia tăng khả năng bị overfit trong quá trình huấn luyện. Chính vì vậy, Inception ra đời để giải quyết vấn đề trên một cách hiệu quả, ý tưởng của mô hình này nằm ở việc sử dụng nhiều kernel có kích thước khác nhau (, , ) trong cùng 1 layer, từ đó giúp học và rút trích đặc trưng với kích thước khác nhau từ ảnh một cách linh hoạt hơn. Kiến trúc cơ bản nhất của Inception có dạng như sau:
Hình 3: Mô hình Inception - [nguồn]
Trong đó, mỗi kernel sẽ đóng vai trò khác nhau: kernel được sử dụng để giảm độ sâu kênh và số lượng parameter của mô hình, kernel được sử dụng để rút trích đặc trưng nhỏ và kernel sử dụng để rút trích các đặc trưng lớn (mang tính tổng quát trong ảnh. Max pooling được sử dụng để làm giảm chiều dữ liệu. Các feature sẽ được nối với nhau tạo thành output và truyền đến lớp tiếp theo.
2.4. ResNet
Trước đây, để giải quyết các bài toán khó yêu cầu phải học và rút trích các đặc trưng phức tạp, người ta thường chọn cách thiết kế mô hình với số lượng layer lớn nhằm phục vụ cho việc học trở nên hiệu quả hơn, tuy nhiên việc làm này đến một mức nào đó sẽ khiến việc học trở nên kém hiệu quả hơn vì khi đó sẽ xảy ra hiện tượng vanishing gradient, nguyên nhân là do sự thay đổi trọng số trong các lần lặp sẽ rất nhỏ khi lan truyền qua quá nhiều lớp. Chính vỉ vậy, ResNet [5] được ra đời để giải quyết vấn đề này.
Cụ thể, ResNet sử dụng các kết nối tắt đồng nhất để xuyên qua một hay nhiều lớp, từ đó tạo nên các Residual Block được lặp đi lặp lại xuyên suốt mạng. Một Residual Block sẽ có dạng như sau:
Hình 4: Residual Block - [nguồn]
Trong đó, là dữ liệu input của block, sẽ được tính bình thường bằng cách truyền vào weight layer 1, sau đó đưa vào hàm ReLU và truyền tiếp sang weight layer 2 để ra kết quả. Tuy nhiên, điểm khác biệt ở đây là sẽ được cộng thêm thành phần trước khi đưa vào hàm ReLU cuối cùng để cho ra output của block. Điều này sẽ giúp giải quyết vấn đề gradient vanishing vì đảm bảo đạo hàm của chắc chắn khác 0.
Dưới đây là hình minh họa cho kiến trúc ResNet-152:
Hình 5: Kiến trúc ResNet-152 - [nguồn]
Ý tưởng về Residual Block giúp mô hình ResNet không chỉ tiết kiệm được số layer cần thiết mà còn khắc phục được vấn đề vanishing problem trong quá trình huấn luyện, từ đó vừa giúp giảm thời gian huấn luyện vừa cải thiện được độ chính xác của mô hình. Nhờ những ưu điểm vượt trội đó, ResNet đã gặt hái được nhiều thành công vang dội và trở thành kiến trúc được sử dụng phổ biến nhất ở thời điểm hiện tại.
2.5 DenseNet
Trong quá trình phát triển các mạng tích chập, các mạng mới sinh ra có xu hướng sâu dần và dẫn đến hiện tượng vanishing gradient. Để giải quyết vấn đề trên Resnet đã đưa ra giải pháp là sử dụng các skip-connection. Ưu điểm của ResNet là cho phép gradient lan truyền trực tiếp đến các lớp ở đầu mạng nên giảm hiện tượng vanishing gradient. Tuy nhiên ở ResNet, các bản đồ đặc trưng các lớp được kết nối với thông tin từ skip-connection thông qua hàm tổng điều này làm cản trở đến luồn thông tin ở trong mạng.
Nhằm tăng cường luồng thông tin giữa các lớp với nhau, DenseNet [6] được đề xuất với một thiết kế về cách sử dụng các đường kết nối giữa các lớp trong mạng khác ResNet. Với ResNet, mỗi lớp chỉ được kết nối thông tin với lớp ngay phía trước, trong khi đó mỗi lớp trong DenseNet đều có đường kết nối đến tất cả các lớp ở trước đó. Bên cạnh đó, thay vì kết nối các bản đồ đặc trưng bằng phép toán cộng như ResNet, DenseNet lại nối các bản đồ đặc trưng lại với nhau.
Hình 6: Ví dụ một DenseBlock gồm 5 layer.
Với cách thiết kế liên kết ở DenseNet, cho phép DenseNet sử dụng ít lượng tham số hơn các mạng tích chập truyền thống, bởi vì không cần phải học cách trích xuất những bản đồ đặc trưng không cần thiết nên các lớp trong DenseNet rất nông (ví dụ 12 filter mỗi lớp). Bên cạnh việc giảm số lượng tham số, DenseNet còn cải thiện luồn thông tin được truyền trong mạng cũng như việc backpropagation nên việc huấn luyện cũng dễ dàng hơn. Ngoài ra số lượng dày đặc các liên kết giữa các lớp cũng giúp giảm hiện tượng overfiting với những bài toán có số lượng dữ liệu huấn luyện ít. Mặc dù số lượng tham số ít hơn và có chi phí tính toán ít hơn, DenseNet có độ chính xác cao hơn ResNet.
2.6 MobileNet
Mạng tích chập ngày càng được sử dụng phổ biến trong các bài toán về thị giác máy tính. Với sự phát triển của sự hỗ trợ về phân cứng như GPU, TPU, nên các mạng CNN có xu hướng sâu hơn, nhiều tham số hơn, và phức tạp hơn, từ đó độ chính xác cũng tăng theo. Tuy nhiên trong thực tế nhiều bài toán cần phải cài đặt và chạy trên các thiết bị nhỏ gọn như các máy tính nhúng hay điện thoại, lúc đó những kiến trúc mạng lớn như đã được giới thiệu lại không phù hợp. Do đó nhu cầu về một mạng có cấu trúc nhỏ gọn mà vẫn có độ chính xác cao ngày càng lớn, đó là động lực phát triển của MobileNet [7].
Để có thể giảm được độ phức tạp tính toán, Nhóm tác giả của MobileNet đã đề xuất cơ chế Depthwise Separable Convolutions. Hình bên dưới biểu diễn cơ chế của lớp Convolution bình thường và Depthwise Separable Convolutions.
Hình 7: So sánh Convolution bình thường và Depthwise Separable Convolutions - [nguồn]
Với Convolution bình thường số lượng tham số là:
Nguyên nhân chính dẫn đến số lượng tham số lớn trong lớp Convolution bình thường là số lượng kernel. Để giải quyết vấn đề đó, Depthwise Separable Convolutions chia thành hai bước là Depthwise Convolution và Pointwise Convolution. Với Depthwise Convolution khối input được chia thành những lát cắt ma trận theo độ sâu rồi thực hiện tích chập trên từng lát cắt như hình minh họa, Mỗi một lát cắt sẽ áp dụng một bộ lọc khác nhau và hoàn toàn không chia sẻ tham số. Pointwise Convolution có nhiệm vụ thay đổi độ sâu của đầu ra bằng việc sử dụng các kernel có kích thước . Số lượng tham số khi dùng Depthwise Separable Convolutions là:
Tỉ lệ tham số giữa 2 phép Convolutions này là
Giả sử ta dùng 64 filter và mỗi filter có kích thước là thì Depthwise Separable Convolutions có chi phí giảm 9 lần.
Tổng kết
Qua bài viết này bạn đã được giới thiệu về một số kiến trúc mạng CNN tiêu biểu. Chúng tôi chỉ giới thiệu cải tiến chính yếu, động cơ của những cải tiến này là gì. Hi vọng rằng các bạn sẽ có góc nhìn tổng quan và nắm bắt được chuỗi phát triển của các mô hình học sâu trên.
Tác giả:
- Ngô Hữu Mạnh Khanh
- Nguyễn Văn Chính
- Nguyễn Phương Bảo Ngọc
Tài liệu tham khảo
[1] Krizhevsky, Alex, Ilya Sutskever, and Geoffrey E. Hinton. "Imagenet classification with deep convolutional neural networks." Advances in neural information processing systems 25 (2012).
[2] LeCun, Yann, et al. "Gradient-based learning applied to document recognition." Proceedings of the IEEE 86.11 (1998): 2278-2324.
[3] Russakovsky, Olga, et al. "Imagenet large scale visual recognition challenge." International journal of computer vision 115.3 (2015): 211-252.
[4] Szegedy, Christian, et al. "Going deeper with convolutions." Proceedings of the IEEE conference on computer vision and pattern recognition. 2015.
[5] He, Kaiming, et al. "Deep residual learning for image recognition." Proceedings of the IEEE conference on computer vision and pattern recognition. 2016.
[6] Huang, Gao, et al. "Densely connected convolutional networks." Proceedings of the IEEE conference on computer vision and pattern recognition. 2017.
[7] Howard, Andrew G., et al. "Mobilenets: Efficient convolutional neural networks for mobile vision applications." arXiv preprint arXiv:1704.04861 (2017).