Tìm hiểu về cấu trúc của mạng CNN là gì?

0
98

CNN là gìĐây là câu hỏi được rất nhiều người tìm kiếm hiện nay. Đây là một trong những thuật ngữ rất quen thuộc với những người theo ngành lập trình hoặc ngành nghề có liên quan đến công nghệ. Và nếu như bạn đang có ý định thử sức bản thân với lĩnh vực này thì đừng bỏ qua kiến thức mà ITNavi chia sẻ trong bài dưới sau đây. 

 Định nghĩa CNN là gì?

CNN là tên viết tắt của từ Convolutional Neural Network (hay còn gọi là CNNs_mang nơ ron tích chập). Đây là một trong những mô hình Deep Learning vô cùng tiên tiến. CNN sẽ cho phép bạn xây dựng các hệ thống thông minh với độ chính xác vô cùng cao. 

Hiện nay, CNN được ứng dụng rất nhiều trong những bài toán nhận dạng object trong ảnh. 

Và kiến thức cụ thể về CNN đã được lý giải như sau: 

Convolutional

Đây là một loại cửa sổ dạng trượt nằm trên một ma trận. Những convolutional layer sẽ có các parameter được học để điều chỉnh và lấy ra những thông tin chính xác nhất mà không cần phải chọn feature. 

Convolution hay tích chập chính là nhân các phần tử trong ma trận. Sliding Window còn được gọi là kernel, filter hoặc feature detect và là loại ma trận có kích thước nhỏ. 

Mạng CNN là gì?

Mạng CNN là gì?

Feature

Feature là đặc điểm, các CNN sẽ so sánh hình ảnh dựa theo từng mảnh và những mảnh này được gọi là Feature. Thay vì phải khớp các bức ảnh lại với nhau thì CNN sẽ nhìn ra sự tương động khi tìm kiếm thô các Feature khớp với nhau bằng 2 hình ảnh tốt hơn. 

Mỗi Feature được xem là một hình ảnh mini có nghĩa chúng là những mảng 2 chiều nhỏ. Các Feature này đều tương ứng với các khía cạnh nào đó của hình ảnh và chúng có thể khớp lại với nhau. 

Bạn đọc tham khảo thêm: 

Intern là gì? Intern làm những công việc gì và những lưu ý khi làm việc tại vị trí này

Webpack là gì? Tìm hiểu nhanh những kiến thức về Webpack

Các lớp cơ bản của mạng CNN là gì?

CNN bao gồm những phần lớp cơ bản là: 

Convolutional layer

Đây là lớp quan trọng nhất của CNN, lớp này có nhiệm vụ thực hiện mọi tính toán. Những yếu tố quan trọng của một convolutional layer là: stride, padding, filter map, feature map. 

  • CNN sử dụng các filter để áp dụng vào vùng của hình ảnh. Những filter map này được gọi là ma trận 3 chiều, mà bên trong nó là các con số và chúng là parameter. 
  • Stride có nghĩa là khi bạn dịch chuyển filter map theo pixel dựa vào giá trị trừ trái sang phải. Và sự chuyển dịch này chính là Stride.
  • Padding: Là các giá trị 0 được thêm vào với lớp input. 
  • Feature map: Nó thể hiện kết quả của mỗi lần filter map quét qua input. Sau mỗi lần quét sẽ xảy ra quá trình tính toán. 

Relu Layer

Relu layer là hàm kích hoạt trong neural network và hàm này còn được gọi là activation function. Hàm kích hoạt có tác dụng mô phỏng các neuron có tỷ lệ truyền xung qua axon. Trong activation function thì nó còn có hàm nghĩa là: Relu, Leaky, Tanh, Sigmoid, Maxout,…

Hiện nay, hàm relu được dùng phổ biến và vô cùng thông dụng. Nó được sử dụng nhiều cho các nhu cầu huấn luyện mạng neuron thì relu mang lại rất nhiều ưu điểm nổi bật như: việc tính toán sẽ trở nên nhanh hơn,… 

Quá trình sử dụng relu, chúng ta cần lưu ý đến vấn đề tùy chỉnh các learning rate và theo dõi dead unit. Những lớp relu layer đã được sử dụng sau khi filter map được tính ra và áp dụng hàm relu lên những giá trị của filter map. 

Pooling layer

Khi đầu vào quá lớn, những lớp pooling layer sẽ được xếp vào giữa giữa những lớp Convolutional layer để làm giảm parameter. 

Hiện nay, pooling layer có 2 loại chủ yếu là: max pooling và average.

Cấu trúc của CNN

Cấu trúc của CNN

Fully connected layer

Lớp này có nhiệm vụ đưa ra kết quả sau khi lớp convolutional layer và pooling layer đã nhận được ảnh truyền. Lúc này, ta thu được kết quả là model đã đọc được thông tin của ảnh và để liên kết chúng cũng như cho ra nhiều output hơn thì ta sử dụng fully connected layer. 

Ngoài ra, nếu như fully connected layer có được giữ liệu hình ảnh thì chúng sẽ chuyển nó thành mục chưa được phân chia chất lượng. Cái này khá giống với phiếu bầu rồi chúng sẽ đánh giá để bầu chọn ra hình ảnh có chất lượng cao nhất. 

Cấu trúc của mạng CNN là gì?

Mang CNN là một trong những tập hợp của lớp Convolution bị chồng lên nhau cũng như sử dụng hàm nonlinear activation như ReLU và tanh để kích hoạt trọng số trong node. Lớp này sau khi thông qua hàm thì sẽ được trọng số trong các node. Những lớp này sau khi đã thông qua hàm kích hoạt thì có thể tạo ra những thông tin trừu tượng hơn cho những lớp tiếp theo. 

Trong mô hình CNN có tính bất biến và tích kết hợp. Nếu như bạn có cùng một đối tượng mà lại chiếu theo nhiều góc độ khác nhau thì độ chính xác có thể sẽ bị ảnh hưởng. 

Với chuyển dịch, quay và co giãn thì pooling layer sẽ được sử dụng để giúp làm bất biến những tính chất này. Vì vậy, CNN sẽ đưa ra kết quả có độ chính xác tương ứng ở từng mô hình. 

Trong đó, pooling layer sẽ cho bạn tính bất biến đối với phép dịch chuyển, phép co dãn và phép quay. Còn tính kết hợp cục bộ sẽ cho bạn thấy những cấp độ biểu diễn, thông tin từ thấp đến mức độ cao với độ trừu tượng thông qua convolution từ các filter. 

Mô hình CNN có các layer liên kết được với nhau dựa vào cơ chế convolution. Những layer tiếp theo sẽ là kết quả từ những convolution từ layer trước đó, vì thế mà bạn sẽ có các kết nối cục bộ phù hợp nhất. Vậy, mỗi neuron ở lớp sinh ra tiếp theo từ kết quả filter sẽ áp đặt lên vùng ảnh cục bộ của một neuron có trước đó. 

Trong khi huấn luyện mạng, CNN sẽ tự động học hỏi các giá trị thông qua lớp filter dựa vào cách thức mà người dùng thực hiện. 

Trong đó, cấu trúc cơ bản của CNN thường bao gồm 3 phần chính là: 

  • Local receptive field (trường cục bộ): Lớp này có nhiệm vụ tách lọc dữ liệu, thông tin ảnh và lựa chọn các vùng ảnh có giá trị sử dụng cao nhất. 
  • Shared weights and bias (trọng số chia sẻ): Lớp này giúp làm giảm tối đa lượng tham số có tác dụng chính của yếu tố này trong mạng CNN. Trong mỗi convolution sẽ có các feature map khác nhau và mỗi feature lại có khả năng giúp detect một vài feature trong ảnh. 
  • Pooling layer (lớp tổng hợp): Pooling layer là lớp cuối cùng và có tác dụng làm đơn giản các thông tin đầu ra. Có nghĩa là, sau khi đã hoàn tất tính toán và quét qua các lớp thì đến pooling layer để lược bớt các thông tin không cần thiết. Từ đó, cho ra kết quả theo như ý mà người dùng mong muốn. 

CNN được ứng dụng vô cùng rộng rãi

CNN được ứng dụng vô cùng rộng rãi

Hướng dẫn cách lựa chọn tham số CNN

Để lựa chọn được tham số phù hợp nhất cho CNN thì bạn cần lưu ý đến các số lượng: filter size, pooling size, số convolution và việc train test. 

 

  • Convolution layer: Nếu lớp này có số lượng nhiều thì chương trình chạy của bạn lại càng được cải thiện. Sử dụng các layer với số lượng lớn có thể dẫn đến tác động được giảm một cách đáng kể. Thường thì chỉ sau 3 đến 4 layer thôi là bạn sẽ đạt được kết quả như mong muốn. 
  • Filter size: Thông thường, các filter size đều 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 thì bạn cần sử dụng kích thước 2×2. Tuy nhiên, nếu đầu vào có hình ảnh lớn hơn thì bạn nên sử dụng 4×4. 

 

  • Train test: Cần thực hiện train test nhiều lần, như vậy thì mới cho ra được các parameter tốt nhất. 

 

Thuật toán Convolutional neural network đem đến cho người dùng một mô hình chất lượng. Dù bản chất nó không phải là thuật toán quá đơn giản nhưng lại mang đến kết quả hài lòng. Mặc dù vậy, đây là thuật toán khá khó hiểu và cần trải qua tiếp xúc lâu dài thì người dùng mới có thể ứng dụng nó một cách chính xác nhất. 

Bởi vì, rất khó để biết và hiểu rõ CNN nếu như bạn là người mới tiếp xúc. Chính vì vậy, muốn áp dụng hiệu quả CNN, bạn nên học hỏi và tìm tòi cũng như bổ sung nhiều kiến thức hơn cho bản thân. Hy vọng, với những chia sẻ trên của ITNavi, bạn đã hiểu rõ CNN là gì cũng như cấu trúc của mạng CNN.

LEAVE A REPLY

Please enter your comment!
Please enter your name here