Thuật toán CNN là gì? Hướng dẫn chọn tham số cho CNN
Là một trong những thuật ngữ quen thuộc ở lĩnh vực công nghệ thông tin, thuật toán convolutional neural network đóng vai trò rất quan trọng với các lập trình viên hoặc những người am hiểu về IT. Hãy cùng Vietnix tìm hiểu xem thuật toán CNN là gì cũng như đi sâu hơn vào khái niệm này nhé.
Mục Lục
Định nghĩa CNN là gì?
CNN được viết tắt của Convolutional Neural Network hay còn được gọi là CNNS mang nơ-ron tích chập, là một trong những mô hình Deep Learning cực kỳ tiên tiến, bởi chúng cho phép bạn xây dựng những hệ thống có độ chính xác cao và thông minh. Nhờ khả năng đó, CNN có rất nhiều ứng dụng, đặc biệt là những bài toán cần nhận dạng vật thể (object) trong ảnh.
CNN vô cùng quan trọng để tạo nên những hệ thống nhận diện thông minh với độ chính xác cao trong thời đại công nghệ ngày nay. Lý do cụ thể vì sao CNN đặc biệt phát huy hiệu quả trong việc nhận dạng (detection), chúng ta sẽ tìm hiểu kỹ hơn ngay dưới đây.
CNN là gì?
Convolutional là gì?
Convolutional là một loại cửa sổ dạng trượt nằm trên một ma trận. Các convolutional layer sẽ chứa các parameter có khả năng tự học, qua đó sẽ điều chỉnh và tìm ra cách lấy những thông tin chính xác nhất trong khi không cần chọn feature.
Lúc này, convolution hay tích chập đóng vai trò là nhân các phần tử thuộc ma trận. Sliding Window, hay được gọi là kernel, filter hoặc feature detect, là loại ma trận có kích thước nhỏ.
>> Xem thêm: Network là gì? Lợi ích và những loại network phổ biến?
Các lớp cơ bản của mạng CNN là gì?
Convolution neural network gồm những lớp cơ bản sau:
Convolutional layer
Đây chính là lớp đóng vai trò mấu chốt của CNN, khi layer này đảm nhiệm việc thực hiện mọi tính toán. Stride, padding, filter map, feature map là những yếu tố quan trọng nhất của convolutional layer.
- Cơ chế của CNN là tạo ra các filter áp dụng vào từng vùng hình ảnh. Các filter map này được gọi là ma trận 3 chiều, bên trong chứa các parameter dưới dạng những con số.
- Stride là sự dịch chuyển filter map theo pixel dựa trên giá trị từ trái sang phải.
- Padding: Là các giá trị 0 được thêm cùng lớp input.
- Feature map: Sau mỗi lần quét, một quá trình tính toán sẽ được thực hiện. Feature map sẽ thể hiện kết quả sau mỗi lần filter map quét qua input.
Relu layer
Còn có tên gọi khác là activation function, đây là một hàm được kích hoạt trong neural network. Nó có tác dụng mô phỏng các neuron có tỷ lệ truyền xung qua axon. Trong activation function chúng còn có hàm nghĩa là: Relu, Tanh, Sigmoid, Maxout, Leaky,… Relu layer được ứng dụng phổ biến trong việc huấn luyện nơ-ron do sở hữu nhiều ưu điểm tiên tiến.
Pooling layer
Khi nhận phải đầu vào quá lớn, các lớp pooling layer sẽ được xếp giữa những lớp Convolutional layer nhằm mục đích giảm parameter. Pooling layer được chia thành 2 loại phổ biến là max pooling và average.
Fully connected layer
Khi 2 lớp convolutional layer và pooling layer nhận được ảnh truyền, lớp này sẽ có nhiệm vụ xuất kết quả. Khi ta nhận được kết quả là model đọc được thông tin ảnh, ta cần phải tạo sự liên kết để cho ra nhiều output hơn. Đây chính là lúc các lập trình viên sử dụng fully connected layer. Hơn nữa, nếu fully connected layer có dữ liệu về hình ảnh thì chúng sẽ chuyển thành mục chưa được phân chia chất lượng.
Các lớp cơ bản của mạng CNN
Cấu trúc của mạng CNN là gì?
Mạng CNN là một trong những tập hợp của lớp Convolution được chồng lên nhau. Mạng CNN còn sử dụng các hàm nonlinear activation (như ReLU và tanh) nhằm kích hoạt trọng số trong node. Khi đã thông qua hàm, lớp này sẽ thu được trọng số trong các node và tạo ra nhiều thông tin trừu tượng hơn cho các lớp kế cận.
Đặc điểm mô hình CNN có 2 khía cạnh cần phải đặc biệt lưu ý là tính bất biến và tính kết hợp, do đó độ chính xác hoàn toàn có thể bị ảnh hưởng nếu có cùng một đối tượng được chiếu theo nhiều phương diện khác biệt. Với các loại chuyển dịch, co giãn và quay, người ta sẽ sử dụng pooli layer và làm bất biến những tính chất này. Từ đó, CNN sẽ cho ra kết quả có độ chính xác ứng với từng loại mô hình.
Pooling layer giúp tạo nên tính bất biến đối với phép dịch chuyển, phép co giãn và phép quay. Trong khi đó, tính kết hợp cục bộ sẽ thể hiện các cấp độ biểu diễn, thông tin từ mức độ thấp đến cao, cùng độ trừu tượng thông qua convolution từ các filter. Dựa trên cơ chế convolution, một mô hình sẽ liên kết được các layer với nhau.
Với cơ chế này, layer tiếp theo sẽ là kết quả được tạo ra từ convolution thuộc layer kế trước. Điều này đảm bảo bạn có được kết nối cục bộ hiệu quả nhất. Mỗi nơ-ron sinh ra ở lớp tiếp theo từ kết quả filter sẽ áp đặt lên vùng ảnh cục bộ của nơ-ron tương ứng trước đó. Cũng có một số layer khác như pooling/subsampling layer được dùng để chắt lọc lại các thông tin hữu ích hơn (loại bỏ các thông tin nhiễu).
Cấu trúc của mạng CNN
Suốt quá trình huấn luyện, CNN sẽ tự động học hỏi các giá trị thông qua lớp filter với “mẫu” là cách thức người dùng thực hiện. Điều này khá giống với cách bộ não con người nhận diện những vật thể trong tự nhiên.
>> Xem thêm: Machine Learning là gì? Những thuật toán trong Machine Learning
Một cấu trúc cơ bản nhất của CNN sẽ bao gồm 3 phần chủ yếu, đó là:
- Local receptive field (trường cục bộ): Nhiệm vụ của trường cục bộ là phân tách và lọc dữ liệu cũng như thông tin ảnh, sau đó chọn ra các vùng ảnh có giá trị sử dụng cao nhất.
- Shared weights and bias (trọng số chia sẻ): Trong mạng CNN, thành phần này có tác dụng giảm thiểu tối đa lượng tham số có tác dụng lớn. Trong mỗi convolution sẽ chứa nhiều feature map khác nhau, mỗi feature lại có khả năng giúp nhận diện một số feature trong ảnh.
- Pooling layer (lớp tổng hợp): Pooling layer là lớp cuối cùng, với khả năng đơn giản hóa thông tin đầu ra. Khi đã hoàn tất tính toán và quét qua các lớp, pooling layer sẽ được tạo ra nhằm mục đích lược bớt các thông tin không cần thiết và tối ưu đầu ra. Điều này giúp người dùng nhận được kết quả ưng ý và đúng với yêu cầu hay mong muốn.
CNN được ứng dụng rất rộng rãi
Hướng dẫn chọn tham số cho CNN
Nhằm lựa chọn được tham số phù hợp nhất cho CNN, 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.
- Convolution layer: Nếu lớp này có số lượng lớn hơn,chương trình chạy của bạn sẽ càng được cải thiện và tiến bộ. Sử dụng layer với số lượng nhiều có thể giúp các tác động được giảm một cách đáng kể. Trong đa phần các trường hợp, chỉ cần khoảng 3 đến 5 lớp là bạn sẽ thu về kết quả như mong đợi.
- Filter size: Thông thường, các filter size sẽ có kích thước là 3×3 hoặc 5×5.
- Pooling size: Với các hình ảnh thông thường, bạn nên sử dụng loại kích thước 2×2. Nếu đầu vào xuất hiện dạng hình ảnh lớn hơn thì bạn nên chuyển sang dùng loại 4×4.
- Train test: Càng thực hiện nhiều lần train test, bạn càng có nhiều khả năng thu được các parameter tốt nhất, giúp mô hình “thông minh” và hiệu quả hơn.
Hướng dẫn chọn tham số cho CNN
Câu hỏi thường gặp
CNN là một thuật toán hay một kiến trúc?
Convolutional Neural Network (ConvNet/CNN) là một thuật toán Deep Learning có thể lấy hình ảnh đầu vào, gán tầm quan trọng cho các khía cạnh / đối tượng khác nhau trong hình ảnh và có thể phân biệt hình ảnh này với hình ảnh kia.
CNN có bao nhiêu lớp?
Kiến trúc mạng nơ-ron liên kết
Một CNN thường có ba lớp : Lớp chập, lớp gộp và lớp được kết nối đầy đủ.
CNN chỉ được sử dụng cho hình ảnh?
Đúng. CNN có thể được áp dụng trên bất kỳ mảng dữ liệu 2D và 3D nào .
Lời kết
Thuật toán Convolutional neural network được tạo ra để đem đến cho các lập trình viên một mô hình Deep Learning cực kỳ tiến bộ. Tuy có thể bản chất và cách ứng dụng nó không hề dễ dàng, nhưng kết quả nó mang lại là rất đáng phải lưu tâm.
Nếu bạn quan tâm đến một mô hình học hỏi chuẩn, bạn nên nắm vững, tiếp xúc lâu dài với loại thuật toán này và hiểu rõ CNN là gì để ứng dụng theo cách hiệu quả và thuận tiện nhất. Hy vọng những chia sẻ của Vietnix trong bài viết trên sẽ mang đến nhiều sự hữu ích cho bạn.