Xuất phát từ mô hình Deep Learning, Convolutional Neural Network được xem là hệ thống thuật toán có độ chính xác rất cao. Hiện nay, Convolutional Neural Network được sử dụng rộng rãi trong việc nhận dạng hình ảnh, khuôn mặt cực kỳ thông minh, linh hoạt. Vậy Convolutional Neural Network là gì? Hãy cùng Tino Group tìm hiểu ngay bài viết dưới đây nhé!
Đôi nét về Convolutional Neural Network
Convolutional Neural Network là gì?
Convolutional Neural Network (CNN hoặc ConvNet) được tạm dịch là: Mạng nơ ron tích tụ. Đây được xem là một trong những mô hình của Deep Learning – tập hợp các thuật toán để có mô hình dữ liệu trừu tượng hóa ở mức cao bằng cách sử dụng nhiều lớp xử lý cấu trúc phức tạp. Hiểu đơn giản, CNN là một lớp của mạng nơ-ron sâu , được áp dụng phổ biến nhất để phân tích hình ảnh trực quan.
Hiện tại, chúng ta chưa có định nghĩa một cách chính xác nhất về thuật toán CNN. Mạng CNN được thiết kế với mục đích xử lý dữ liệu thông qua nhiều lớp mảng. Ngoài ra, CNN có thể giúp bạn tạo ra được hệ thống thông minh, phản ứng với độ chính xác khá cao.
Ví dụ: Bạn có thể sử dụng loại mạng thần kinh này trong các ứng dụng như: nhận dạng hình ảnh, nhận dạng khuôn mặt và hiện tại đã được đưa vào các nền tảng Facebook, Google,…
So với những mạng nơ ron thông thường, mạng CNN nhận đầu vào là một mảng hai chiều và hoạt động trực tiếp trên hình ảnh thay vì tập trung trích xuất tính năng mà bạn thường thấy ở các mạng nơ ron khác.
Feature là gì?
Feature được dịch theo nghĩa tiếng Việt là đặc điểm. Khi sử dụng thuật toán CNN so sánh hình ảnh theo từng mảnh, mỗi mảnh đó được gọi là Feature.
Mỗi Feature được xem như một hình ảnh mini hay gọi là những mảng hai chiều nhỏ. Các Feature được khớp với những khía cạnh chung trong bức ảnh đó. Nghĩa là Feature sẽ tương ứng với khía cạnh nào đó của hình ảnh và chúng sẽ khớp lại với nhau.
Convolutional là gì?
Convolutional được hiểu là tích chập. Xét về cơ bản, khi xem một hình ảnh mới, thuật toán CNN sẽ không nhận biết được nó ở vị trí nào, các Feature sẽ khớp với nhau ở đâu?
Chính vì vậy, Convolutional sẽ thử chúng với tất cả các vị trí khác nhau và tạo thành một bộ lọc gọi là Filter. Quá trình này được thực hiện thông qua phần toán nơ ron tích chập.
Convolutional Neural Network có mấy lớp cơ bản?
#1. Convolutional Layer
Trong ba lớp của Convolutional Neural Network, Convolutional Layer được xem là lớp có vai trò quan trọng nhất. Bởi vì Convolutional Layer sẽ đại diện CNN thực hiện mọi phép toán.
Khi nhắc đến lớp Convolutional Layer, chúng ta cần làm rõ một số khái niệm đó là: Filter Map, Stride, Padding, Feature Map.
Filter Map
Nếu như ANN kết nối với từng Pixel của hình ảnh đầu vào thì CNN được sử dụng những Filter để áp vào các vùng của hình ảnh. Những Filter Map này có thể xem là một ma trận 3 chiều, bao gồm những con số và các con số chính là Parameter.
Stride
Trong Convolutional Neural Network, Stride được hiểu là khi chúng ta dịch chuyển Filter Map theo Pixel và dựa vào giá trị từ trái sang phải. Stride đơn giản là biểu thị sự dịch chuyển này.
Padding
Padding chính là những giá trị 0 được thêm vào lớp Input.
Feature Map
Đây là kết quả hiển thị sau mỗi lần Filter Map quét qua Input. Cứ mỗi lần quét như vậy, bạn sẽ thấy sự xuất hiện của quá trình tính toán được xảy ra.
#2. Pooling Layer
Khi đầu vào quá lớn, các lớp Pooling Layer sẽ được dịch chuyển vào giữa những lớp Convolutional Layer nhằm giảm các Parameter.
Pooling Layer được biết đến với hai loại phổ biến là: Max Pooling và Average Pooling.
Tại Pooling Layer, khi bạn sử dụng lớp Max Pooling thì số lượng Parameter có thể sẽ giảm đi. Vì vậy, Convolutional Neural Network sẽ xuất hiện nhiều lớp Filter Map, mỗi Filter Map đó sẽ cho ra một Max Pooling khác nhau.
#3. Relu Layer
Đây chính là một hàm kích hoạt trong Neural Network. Chúng ta có thể biết đến hàm kích hoạt này với một tên gọi khác là Activation Function. Nhiệm vụ chính của hàm kích hoạt là mô phỏng lại các Neuron có tỷ lệ truyền xung qua Axon. Trong đó, hàm kích hoạt sẽ bao gồm các hàm cơ bản như: Sigmoid, Tanh, Relu, Leaky Relu, Maxout.
Hiện nay, hàm Relu đang được sử dụng khá phổ biến và thông dụng. Đặc biệt, Relu sở hữu những ưu điểm nổi bật như: hỗ trợ tính toán nhanh nên rất được ưa chuộng sử dụng trong việc huấn luyện các mạng Neuron.
Khi sử dụng Relu, bạn cần lưu ý đến việc tùy chỉnh các Learning Rate và theo dõi Dead Unit. Lớp Relu Layer này được sử dụng sau khi Filter Map được tính toán ra và áp dụng hàm Relu lên tất cả các giá trị trên Filter Map.
#4. Fully Connected Layer
Fully Connected Layer thường sử dụng để đưa ra các kết quả.
Ví dụ: Sau khi các lớp Convolutional Layer và Pooling Layer nhận được các ảnh đã truyền qua chúng, bạn sẽ thu được kết quả là Model đã đọc được khá nhiều thông tin về ảnh. Do đó, để có thể liên kết các đặc điểm này lại và cho ra Output, bạn cần dùng đến Fully Connected Layer.
Bên cạnh đó, khi có được các dữ liệu về hình ảnh, Fully Connected Layer sẽ chuyển đổi chúng thành những mục có phân chia chất lượng. Tương tự như kiểu chia chúng thành các phiếu bầu và đánh giá để chọn ra hình ảnh đạt chất lượng tốt nhất. Dù vậy, quá trình này không được coi là quá trình dân chủ nên rất ít sử dụng.
Cấu trúc của Convolutional Neural Network
Mạng Convolutional Neural Network là tập hợp nhiều lớp Convolutional chồng lên nhau, sử dụng các hàm Nonlinear Activation và tanh để kích hoạt các trọng số trong các node. Ở mỗi lớp CNN, sau khi được các hàm kích hoạt sẽ tạo ra các thông tin trừu tượng hơn cho những lớp tiếp theo. Mỗi Layer kết tiếp sẽ là kết quả Convolution từ Layer trước đó nên chúng ta có được các kết nối cục bộ.
Thông qua quá trình huấn luyện mạng, các lớp Layer CNN tự động học các giá trị được thể hiện qua các lớp Filter.
Ví dụ: Trong tác vụ phân lớp ảnh, CNNs sẽ cố gắng tìm kiếm những thông số tối ưu cho các Filter tương ứng theo một thứ tự: Raw Pixel => Edges => Shapes => Facial => High – level Features. Layer cuối cùng được dùng để phân lớp ảnh.
Tại mô hình CNN, bạn cần lưu ý đến hai khía cạnh là: Location Invariance (tính bất biến) và Compositionality (tính kết hợp). Nếu cùng một đối tượng được chiếu theo các góc độ khác nhau (Translation, Rotation, Scaling) thì tính chính xác của thuật toán sẽ bị ảnh hưởng đáng kể.
Những phép dịch chuyển, quay hoặc co dãn sẽ được sử dụng Pooling Layer làm bất biến các tính chất kia. Do vậy, CNN đưa ra kết quả có độ chính xác khá cao trong các mô hình.
CNN có cấu trúc cơ bản gồm ba phần chính là: Local Receptive Field, Shared Weights And Bias và Pooling.
Local Receptive Field
Local Receptive Field, tạm dịch: trường tiếp nhận cục bộ. Đây được xem là lớp giúp bạn có thể tách lọc các dữ liệu, thông tin của ảnh và chọn được những vùng ảnh có giá trị sử dụng nhất.
Shared Weights And Bias
Shared Weights, tạm dịch: trọng số chia sẻ. Chức năng chính của lớp này là hỗ trợ bạn làm giảm tối đa số lượng những tham số trong mạng CNN. Vì trong mỗi Convolution sẽ bao gồm các Feature Map khác nhau, mỗi Feature Map lại giúp Detect một vài Feature trong ảnh.
Pooling Layer
Pooling Layer, tạm dịch: lớp tổng hợp. Đây được xem gần như là lớp cuối cùng trước khi đưa ra kết quả trong CNN. Chính vì thế, để có được kết quả dễ hiểu và dễ sử dụng nhất thì Pooling Layer có nhiệm vụ làm đơn giản hóa các thông tin đầu ra. Nghĩa là, sau khi hoàn thành quá trình tính toán và quét các lớp thì sẽ đi đến Pooling Layer nhằm lượt bớt các không tin không cần thiết và cho ra kết quả mà chúng ta đang cần.
Cách chọn tham số cho Convolutional Neural Network chuẩn chỉnh
Convolutional Neural Network là thuật toán mang lại cho bạn chất lượng mô hình vô cùng tốt để xây dựng hệ thống một cách thông minh nhất. Để chọn được các tham số cho Convolutional Neural Network chuẩn nhất, bạn cần lưu ý đến các số lượng ở 4 yếu tố sau: số Convolution Layer, Filter Size, Pooling Size và cách Train Test.
Số Convolution Layer
Lớp số Convolution Layer càng nhiều thì chương trình của bạn chạy càng được cải thiện. Khi sử dụng các Layer với một số lượng lớn, các tác động có thể được giảm một cách đáng kể. Có thể sau 3 đến 4 Layer thì bạn đã có được kết quả mong muốn.
Filter Size
Phần lớn các Filter Size thường có kích thước là 3×3 hoặc 5×5
Pooling Size
Đối với các loại ảnh thông thường sẽ có kích thước là 2×2, tuy nhiên nếu đầu vào hình ảnh của bạn lớn thì có thể sử dụng Pooling Size 4×4 để đảm bảo chất lượng cho ảnh.
Train Test
Bạn nên thực hiện Train Test nhiều lần để so sánh các kết quả với nhau. Điều này giúp bạn có được các Parameter tốt nhất.
Về cơ bản, Convolutional Neural Network mang đến cho bạn những mô hình chất lượng cao. Tuy nhiên, để hiểu và sử dụng thuật toán này lại không mấy dễ dàng với tất cả mọi người, đặc biệt là những người mới tiếp xúc với CNN lần đầu.
Hy vọng bài viết này có thể giúp bạn hiểu rõ hơn về “Convolutional Neural Network là gì?” và cách lựa chọn tham số CNN phù hợp. CNN có thể xem là một trong những thuật toán thông minh, hiệu quả cao được ứng dụng rất nhiều vào các hệ thống xử lý thông tin như cải tiến xe hơi tự điều khiển, giao hàng tự động,… Chúc các bạn có những trải nghiệm hữu ích với thuật toán CNN nhé!
FAQs về Convolutional Neural Network
Áp dụng Convolution vào Layer trong Neural Network có thể xử lý được gì?
Khi áp dụng Convolution vào Layer trong Neural Network, bạn có thể giải quyết vấn đề lượng lớn Parameter nhưng vẫn đảm bảo lấy ra được các đặc trưng của ảnh.
Kernel cho từng Chanel có thể sử dụng tùy ý không?
Kernel cho từng Chanel được Initial bằng các giá trị nào đó. Sau mỗi lần Train, các giá trị này được cập nhật lại bằng phương pháp Backpropagation. Như vậy, các giá trị trong Kernel không quá khác biệt so với các trọng số Weight thông thường, bạn có thể tính Gradient của nó theo hàm Loss để trừ ra dần.
Tại sao theo sau Convolution Layer lại là Pooling Layer?
Pooling Layer theo sau Convolution Layer với mục đích để giảm Size của Matrix. Ví dụ như: khi bạn dùng Max Pooling 2×2 thì trong 4 giá trị sẽ chọn giá trị lớn nhất, nghĩa là 4 còn lại 1.
Tại sao Convolutional Layer thể hiện số Kernel mà không ghi cụ thể từng Kernel?
Hệ số trong CNN sẽ tự học qua quá trình Training. Do đó, bạn không thể biết cụ thể từng Kernel, chỉ có thể nhận diện sử dụng từng đấy chỉ số Kernel thôi.