CNN là viết tắt của Convolutional Neural Network. Đây là một thuật toán máy học trong lĩnh vực công nghệ thông tin. Lập trình viên thường quen thuộc với khái niệm này vì nó được sử dụng trong quá trình học tập và làm việc. Nếu bạn muốn thử sức với lĩnh vực này, hãy cùng pbec.biz tìm hiểu về cấu trúc của mạng CNN nhé!
Khái niệm Mạng CNN là gì?
CNN hay Convolutional Neural Network là một mô hình nâng cao được sử dụng rộng rãi trong lĩnh vực học sâu Deep learning. Với mạng CNN, người dùng có thể xây dựng các hệ thống phân loại và dự đoán với độ chính xác rất cao. Hiện nay, mạng CNN được ứng dụng phổ biến trong xử lý ảnh, đặc biệt là trong việc nhận diện đối tượng trong ảnh.
Convolutional trong Mạng nơ-ron tích chập (CNN)
Đây là một cửa sổ trượt được sử dụng trên ma trận nhằm thu thập những thông tin chính xác và cần thiết nhất mà không cần chọn đặc trưng. Convolution hay nhân tích chập là cách mà những lớp Convolutional này nhân những phần tử trong ma trận. Sliding Window hay kernel là dạng ma trận có kích thước nhỏ, được sử dụng trong nhân tích chập với ma trận hình ảnh.
Tính năng trong CNN
Feature là đặc trưng, mạng CNN sẽ so sánh dựa vào từng mảnh và các mảnh như vậy được gọi là feature. Thay vì phải tiến hành khớp các bức ảnh lại với nhau thì mạng CNN sẽ xác định được sự tương đồng thông qua tìm kiếm thô những đặc trưng khớp với nhau bằng hai hình ảnh tốt hơn. Một feature là một mô hình ảnh dạng mini (những mảng 2 chiều nhỏ). Những feature này đều tương ứng với một khía cạnh nào đó của hình ảnh và chúng có thể khớp lại được với nhau.
Các tầng cơ bản của mạng CNN là gì?
Mạng CNN bao gồm các lớp cơ bản sau đây:
Lớp tích chập
Lớp này đóng vai trò quan trọng nhất trong toàn mạng CNN, có nhiệm vụ thực hiện các tính toán. Các yếu tố quan trọng trong lớp Convolutional bao gồm: padding, stride, feature map và filter map.
- Mạng CNN sử dụng bộ lọc để áp dụng vào các vùng của ma trận hình ảnh. Các bộ lọc là các ma trận 3 chiều, chứa các tham số được gọi là các tham số.
- Stride là quá trình di chuyển bộ lọc theo từng pixel dựa vào các giá trị từ trái qua phải.
- Padding: Thường, các giá trị viền xung quanh của ma trận hình ảnh sẽ được gán các giá trị 0 để có thể tiến hành nhân tích chập mà không làm giảm kích thước ma trận ảnh ban đầu.
- Biểu đồ đặc trưng: Đại diện cho kết quả sau mỗi lần biểu đồ đặc trưng quét qua ma trận ảnh đầu vào. Sau mỗi lần quét, lớp Convolutional sẽ thực hiện tính toán.
Tầng Relu
Lớp ReLU trong mạng CNN được gọi là hàm kích hoạt, có tác dụng mô phỏng nơ ron với tỷ lệ truyền xung qua axon. Hàm ReLU được sử dụng phổ biến và thông dụng nhất so với các hàm activation khác như Leaky, Sigmoid, Maxout,..
Hàm này được sử dụng cho những yêu cầu huấn luyện mạng nơ ron với những ưu điểm nổi bật điển hình là hỗ trợ tính toán nhanh hơn. Trong quá trình sử dụng hàm ReLU, cần chú ý đến việc tùy chỉnh learning rate và dead unit. Lớp ReLU được sử dụng sau khi filter map được tính và áp dụng ReLU lên các giá trị của filter map.
Lớp Pooling
Khi ma trận ảnh đầu vào có kích thước quá lớn, ta sẽ đặt các lớp Pooling layer vào giữa các lớp Convolutional để giảm số lượng tham số. Hiện nay, hai loại lớp Pooling được sử dụng phổ biến là Max pooling và Average.
Tầng kết nối đầy đủ
Lớp này có nhiệm vụ đưa ra kết quả sau khi hai lớp Convolutional và Pooling đả nhận được ảnh truyền. Khi đó, chúng ta sẽ thu được một model đọc được thông tin của ảnh. Để có thể liên kế chúng cũng như cho nhiều đầu ra hơn, chúng ta sẽ sử dụng Fully connected layer.
Ngoài ra, nếu lớp này có dữ liệu hình ảnh, lớp sẽ chuyển chúng thành các mục chưa được phân chia chất lượng để tìm ra ảnh có chất lượng cao nhất.
Có thể bạn quan tâm:
- Bootstrap là cái gì? Cách dùng các phiên bản của Bootstrap.
- DNS là cái gì? Chức năng và vai trò quan trọng của máy chủ DNS.
Cấu trúc mạng CNN là gì?
Mạng CNN là một tập hợp các Convolutional layer được xếp chồng lên nhau, đồng thời mạng sử dụng các hàm như ReLU và Tanh để kích hoạt các trọng số trong các node. Các lớp này sau khi qua các hàm activation sẽ có trọng số trong các node và có thể tạo ra những thông tin truyền tải hơn đến với các lớp kế tiếp trong mạng.
Mạng CNN có tính kết hợp cá tính bất biến. Tức là, nếu cùng một đối tượng mà sử dụng chiếu theo các góc độ khác nhau thì sẽ có ảnh hưởng đến độ chính xác. Với dịch chuyển, co giãn hay quay ma trận ảnh thì lớp Pooling sẽ được dùng để hỗ trợ làm bất biến các tính chất này. Chính vì vậy mạng CNN sẽ đưa ra những kết quả có độ chính xác tương ứng với từng mô hình.
Trong đó, lớp Pooling sẽ có khả năng tạo tính bất biến với phép dịch chuyển, co giãn và quay. Còn tính kết hợp cục bộ sẽ cho thấy những cấp độ biểu diễn, dữ liệu từ thấp đến cao với mức trừu tượng thông qua Convolution từ filter. Mạng CNN có những lớp liên kết nhau dựa vào cơ chế Convolution.
Các lớp tiếp theo sẽ phụ thuộc vào những lớp trước đó, cho nên bạn sẽ có những liên kết cục bộ phù hợp nhất. Trong quá trình huấn luyện mạng, CNN sẽ tự học các giá trị thông qua filter layer dựa theo cách thức bạn thực hiện.
Cấu trúc căn bản của một mô hình mạng CNN thường gồm 3 thành phần chính như sau:
- Local receptive field, hay còn được gọi là trường cục bộ, được sử dụng trong lớp này để phân loại và lọc dữ liệu. Nó giúp chúng ta tập trung vào các phần quan trọng của thông tin hình ảnh và lựa chọn những vùng có giá trị sử dụng cao nhất một cách hiệu quả.
- Lớp chia sẻ trọng số và bias: Chức năng của lớp này là giảm số lượng tham số trong mạng CNN xuống mức tối thiểu. Mỗi lớp convolution sẽ có các bản đồ đặc trưng riêng, và mỗi đặc trưng sẽ có khả năng phát hiện một số đặc trưng trong hình ảnh.
- Lớp tổng hợp/Pooling layer được sử dụng để thu gọn các thông tin output. Sau khi tính toán và đi qua các lớp trong mạng, lớp tổng hợp sẽ loại bỏ các thông tin không cần thiết để cho ra kết quả theo mong đợi của người dùng.
Phương pháp chọn tham số cho mạng CNN
Để lựa chọn tham số phù hợp nhất cho mạng CNN, bạn cần chú ý đến các yếu tố như kích thước bộ lọc, số lần tích chập, kích thước của pooling và quá trình huấn luyện – kiểm tra.
- Lớp Convolution: Khi số lượng lớp này tăng lên, chương trình sẽ hoạt động tốt hơn. Sử dụng nhiều lớp với số lượng lớn giúp hạn chế các tác động không mong muốn. Thông thường, sau khoảng 3 đến 4 lớp, kết quả sẽ đạt được như kỳ vọng.
- Kích thước lọc: Thông thường, lựa chọn kích thước là ma trận 3×3 hoặc ma trận 5×5.
- Kích thước pooling: Khi xử lý các hình ảnh thông thường, hãy chọn ma trận pooling kích thước 2×2. Đối với hình ảnh có kích thước lớn, hãy chọn ma trận kích thước 3×3.
- Cần thực hiện huấn luyện – kiểm tra nhiều lần để có thể tạo ra những tham số tốt nhất.
Câu hỏi thường gặp về thuật toán CNN
Câu hỏi 1: Ứng dụng Convolution vào Layer trong Neural xử lý được những gì?
Khi áp dụng phép Convolution vào Layer trong Neural Network, chúng ta có thể xử lý ảnh để đạt được những đặc trưng quan trọng. Convolution giúp giảm lượng tham số (Parameter) cần học, nhưng vẫn đảm bảo giữ lại những đặc trưng quan trọng của ảnh. Quá trình này giúp mô hình trở nên hiệu quả hơn và giảm nguy cơ overfitting.
Câu hỏi 2: Có thể sử dụng tùy ý kernel cho từng channel không?
Có, bạn có thể sử dụng kernel tùy ý cho từng kênh (channel) trong quá trình Convolution. Kernel của mỗi kênh được khởi tạo ban đầu với giá trị xác định và sau mỗi vòng huấn luyện, giá trị này được cập nhật thông qua quá trình lan truyền ngược. Điều này cho phép mô hình tự học các đặc trưng phức tạp từ từng kênh của ảnh.
Câu hỏi 3: Tại sao sau Convolution là Pooling Layer?
Lớp Pooling được áp dụng sau Convolution để giảm kích thước của ma trận. Ví dụ, nếu sử dụng Max Pooling với kích thước 2×2, lớp này sẽ giữ lại giá trị lớn nhất từ mỗi nhóm 4 giá trị, giúp giảm độ phức tạp của mô hình và tăng tốc quá trình huấn luyện.
Câu hỏi 4: Tại sao Convolutional Layer không ghi cụ thể từng Kernel?
Trong CNN, các hệ số (kernel) được tự động học thông qua quá trình huấn luyện, và không ghi cụ thể từng kernel. Điều này giúp mô hình học được các đặc trưng phức tạp của dữ liệu mà không cần sự can thiệp chi tiết từ phía người lập trình. Người ta chỉ có thể nhận biết và sử dụng chúng dựa trên chỉ số của kernel mà không cần biết rõ giá trị cụ thể từng hệ số.
Tổng Kết
Mong rằng những chia sẻ trên sẽ giúp bạn hiểu rõ hơn về CNN và cấu trúc của mạng này. Để từ đó có thể áp dụng trong quá trình học và làm việc với Machine Learning, Deep Learning nói riêng và Trí tuệ nhân tạo nói chung.