Trả lời nhanh: CNN (Convolutional Neural Network), hay mạng nơ-ron tích chập, là một loại mạng nơ-ron học sâu chuyên xử lý dữ liệu dạng lưới như ảnh. CNN dùng các bộ lọc nhỏ trượt khắp ảnh để tự học đặc trưng, từ cạnh, góc đến hình dạng và đối tượng, rồi đưa ra kết quả phân loại, phát hiện hoặc phân đoạn.
Điểm chính
- CNN thay hàng triệu kết nối “mỗi điểm ảnh nối với mọi nơ-ron” bằng bộ lọc nhỏ dùng chung trọng số. Nhờ vậy số tham số giảm rất mạnh và mạng nhận ra một mẫu hình dù nó nằm ở đâu trong ảnh.
- Một CNN điển hình gồm các khối tích chập + ReLU, xen kẽ lớp gộp (pooling), cuối cùng là lớp kết nối đầy đủ và softmax để ra xác suất từng nhãn.
- Các mốc chính: Neocognitron (1980), CNN của LeCun đọc chữ số viết tay (1989), AlexNet thắng ImageNet 2012, ResNet 152 lớp (2015).
- Từ năm 2020, Vision Transformer cạnh tranh mạnh, nhưng CNN vẫn rất phổ biến khi dữ liệu ít, cần chạy nhanh trên camera, điện thoại hoặc thiết bị biên.
- Với doanh nghiệp, cách thực tế nhất là tinh chỉnh một CNN đã huấn luyện sẵn (transfer learning) trên vài trăm đến vài nghìn ảnh có nhãn chất lượng, thay vì huấn luyện từ đầu.
Mục lục
- CNN là gì?
- Vì sao cần CNN thay vì mạng nơ-ron thông thường?
- Phép tích chập trong CNN hoạt động như thế nào?
- Kiến trúc CNN gồm những lớp nào?
- CNN “nhìn” một bức ảnh theo từng tầng ra sao?
- CNN được huấn luyện như thế nào?
- Lịch sử phát triển của CNN qua các mốc chính
- CNN dùng để làm gì? Các ứng dụng thực tế
- Ưu điểm và hạn chế của CNN
- CNN khác MLP, RNN và Vision Transformer thế nào?
- Khi nào doanh nghiệp nên dùng CNN?
- Những hiểu lầm phổ biến về CNN
- Câu hỏi thường gặp
CNN là gì?
CNN là viết tắt của Convolutional Neural Network, tiếng Việt thường gọi là mạng nơ-ron tích chập. Đây là một kiến trúc thuộc nhóm học sâu (deep learning), được thiết kế riêng cho dữ liệu có cấu trúc dạng lưới. Ví dụ điển hình nhất là ảnh: một bức ảnh màu là một lưới gồm chiều cao × chiều rộng × 3 kênh màu đỏ, xanh lá, xanh dương.
Chữ “tích chập” (convolution) chỉ phép toán cốt lõi của mạng. Một ma trận nhỏ gọi là bộ lọc (filter hoặc kernel), thường cỡ 3×3, trượt qua từng vùng của ảnh. Tại mỗi vị trí, mạng nhân từng ô của bộ lọc với điểm ảnh tương ứng rồi cộng lại thành một con số. Tập hợp các con số đó tạo thành một “bản đồ đặc trưng” (feature map), cho biết mẫu hình mà bộ lọc tìm kiếm xuất hiện mạnh hay yếu ở đâu.
Khác với xử lý ảnh truyền thống, con người không tự thiết kế bộ lọc. Giá trị bộ lọc là tham số mạng tự học từ dữ liệu có nhãn: lớp đầu học phát hiện cạnh, góc; lớp sau ghép chúng thành mắt, bánh xe, chữ cái hay vết nứt.
CNN là một “họ” đặc biệt của mạng nơ-ron nhân tạo và là kiến trúc nền tảng của deep learning. Nếu chưa quen với nơ-ron, trọng số và lan truyền ngược, bạn nên đọc trước bài neural network là gì.
Vì sao cần CNN thay vì mạng nơ-ron thông thường?
Mạng nơ-ron truyền thống, hay perceptron nhiều lớp (MLP), nối mỗi đầu vào với mọi nơ-ron ở lớp kế tiếp. Với ảnh, cách này rất tốn kém:
- Một ảnh màu 224×224 điểm ảnh có 224 × 224 × 3 = 150.528 giá trị đầu vào.
- Nếu lớp ẩn đầu tiên có 1.000 nơ-ron, mạng cần 150.528 × 1.000 = khoảng 150,5 triệu trọng số chỉ cho một lớp.
- Một lớp tích chập với 64 bộ lọc 3×3 trên ảnh 3 kênh chỉ cần 64 × (3 × 3 × 3 + 1) = 1.792 tham số, tính cả độ lệch (bias).
Tài liệu môn học CS231n của Đại học Stanford đưa ra một ví dụ thật: lớp tích chập đầu tiên của AlexNet có 96 bộ lọc 11×11×3. Nếu mỗi vị trí dùng trọng số riêng, lớp này cần khoảng 105,7 triệu tham số. Nhờ dùng chung trọng số, con số chỉ còn 34.944.
CNN còn tận dụng hai tính chất tự nhiên của ảnh:
- Tính cục bộ (locality): điểm ảnh liên quan chặt với các điểm ảnh lân cận. Một cạnh hay một góc chỉ chiếm vùng nhỏ. Vì vậy mỗi nơ-ron trong CNN chỉ “nhìn” một vùng nhỏ, gọi là vùng tiếp nhận cục bộ (local receptive field).
- Tính dịch chuyển (translation): con mèo ở góc trái hay góc phải vẫn là con mèo. Do cùng một bộ lọc được dùng ở mọi vị trí (chia sẻ trọng số, weight sharing), mẫu hình học được ở chỗ này cũng nhận ra ở chỗ khác.
MLP thì “duỗi” ảnh thành một vectơ dài, mất thông tin vị trí giữa các điểm ảnh, nên cần nhiều dữ liệu hơn và dễ học thuộc lòng (overfitting).
Phép tích chập trong CNN hoạt động như thế nào?
Cách dễ hiểu nhất là xem một ví dụ bằng số. Ví dụ minh hoạ. Ta có một ảnh xám rất nhỏ 5×5. Ba cột bên trái tối (giá trị 0), hai cột bên phải sáng (giá trị 10). Ranh giới giữa vùng tối và vùng sáng là một cạnh dọc.
Ta dùng bộ lọc 3×3 có mỗi hàng là [−1, 0, 1]. Bộ lọc này cho kết quả lớn khi bên phải sáng hơn bên trái, tức là nó “tìm” cạnh dọc. Đặt bộ lọc lên góc trên bên trái của ảnh, nhân từng cặp ô rồi cộng lại. Sau đó dịch bộ lọc sang phải 1 ô và lặp lại, hết hàng thì xuống dòng.
Cột đầu bằng 0 vì vùng đó toàn màu tối; hai cột sau bằng 30 vì cửa sổ chứa ranh giới tối sáng. Trong mạng thật, không ai gõ tay [−1, 0, 1]: mạng khởi tạo bộ lọc ngẫu nhiên rồi tự điều chỉnh qua huấn luyện, và lớp đầu thường học ra những bộ lọc rất giống bộ lọc cạnh này.
Bước trượt (stride) và đệm viền (padding)
- Bước trượt (stride): số ô bộ lọc dịch mỗi lần. Stride 1 cho bản đồ chi tiết; stride 2 làm bản đồ nhỏ đi khoảng một nửa mỗi chiều.
- Đệm viền (padding): thêm các ô giá trị 0 quanh ảnh để bộ lọc “phủ” được cả mép và giữ nguyên kích thước đầu ra.
Kích thước đầu ra theo mỗi chiều được tính bằng công thức: (W − F + 2P) / S + 1, trong đó W là kích thước đầu vào, F là kích thước bộ lọc, P là số ô đệm, S là bước trượt. Với ví dụ trên: (5 − 3 + 0) / 1 + 1 = 3. Nếu thêm P = 1 thì đầu ra là (5 − 3 + 2) / 1 + 1 = 5, bằng kích thước ảnh gốc. Cấu hình F = 3, S = 1, P = 1 rất phổ biến chính vì nó giữ nguyên kích thước không gian.
Nhiều kênh và nhiều bộ lọc
Ảnh màu có 3 kênh, nên mỗi bộ lọc thực chất là khối 3×3×3. Một lớp thường có hàng chục đến hàng trăm bộ lọc; mỗi bộ lọc sinh một bản đồ đặc trưng, xếp chồng lại thành khối đầu ra có độ sâu bằng số bộ lọc.
Kiến trúc CNN gồm những lớp nào?
Hầu hết các CNN phân loại ảnh đều theo một khuôn chung: lặp lại nhiều lần khối “tích chập → kích hoạt → (gộp)”, sau đó chuyển sang vài lớp kết nối đầy đủ để ra quyết định.
| Lớp | Nhiệm vụ | Có tham số học được? |
|---|---|---|
| Tích chập (convolution) | Trượt bộ lọc để tìm mẫu hình, tạo bản đồ đặc trưng | Có (trọng số bộ lọc, bias) |
| Kích hoạt ReLU | Giữ giá trị dương, đưa giá trị âm về 0; tạo tính phi tuyến | Không |
| Gộp (pooling) | Thu nhỏ bản đồ, giữ thông tin nổi bật, giảm tính toán | Không |
| Chuẩn hoá theo lô (batch normalization) | Ổn định phân phối giá trị giữa các lớp, giúp huấn luyện nhanh và ổn định hơn | Có (hệ số co giãn, dịch chuyển) |
| Dropout | Tắt ngẫu nhiên một phần nơ-ron khi huấn luyện để giảm học thuộc lòng | Không |
| Kết nối đầy đủ (fully connected) | Tổng hợp đặc trưng để ra quyết định cuối | Có, thường chiếm nhiều tham số nhất |
| Softmax | Biến điểm số thành xác suất, tổng các nhãn bằng 100% | Không |
Lớp tích chập
Đây là “trái tim” của CNN và cũng là nơi diễn ra phần lớn phép tính. Người thiết kế chọn số bộ lọc, kích thước bộ lọc, bước trượt và đệm viền; còn giá trị trong bộ lọc do mạng tự học. Các mạng hiện đại thường dùng bộ lọc 3×3. Nhóm tác giả mạng VGG (Đại học Oxford, 2014) cho thấy xếp chồng nhiều lớp 3×3 vừa đủ “nhìn” vùng rộng, vừa thêm tính phi tuyến, vừa ít tham số hơn một bộ lọc lớn.
Lớp kích hoạt ReLU
Sau mỗi phép tích chập, kết quả đi qua hàm kích hoạt. Phổ biến nhất là ReLU (Rectified Linear Unit): f(x) = max(0, x). Nếu không có hàm phi tuyến, xếp chồng bao nhiêu lớp tích chập cũng chỉ tương đương một phép biến đổi tuyến tính, và mạng không học được hình dạng phức tạp. Trong bài báo AlexNet năm 2012, nhóm tác giả ghi nhận mạng dùng ReLU huấn luyện nhanh hơn nhiều lần so với dùng hàm tanh.
Lớp gộp (pooling)
Lớp gộp chia bản đồ đặc trưng thành các ô nhỏ, thường 2×2, và giữ lại một giá trị đại diện. Gộp cực đại (max pooling) lấy giá trị lớn nhất; gộp trung bình (average pooling) lấy trung bình. Với max pooling 2×2, bước trượt 2, mỗi chiều giảm một nửa, tức bỏ đi 75% giá trị. Mục đích là giảm tính toán và giúp mạng bớt nhạy với những xê dịch rất nhỏ của đối tượng.
Cần hiểu đúng: pooling chỉ giúp chịu dịch chuyển nhỏ. Khả năng nhận ra vật bị xoay mạnh hay phóng to nhiều chủ yếu đến từ dữ liệu đa dạng và tăng cường dữ liệu. Nhiều kiến trúc mới còn thay pooling bằng tích chập bước trượt 2.
Lớp kết nối đầy đủ và softmax
Cuối mạng, khối đặc trưng được “làm phẳng” (flatten) hoặc lấy trung bình toàn cục thành một vectơ, đi qua lớp kết nối đầy đủ có mỗi nơ-ron ứng với một nhãn. Softmax chuyển điểm số thành xác suất. Với bài toán phát hiện hay phân đoạn, phần đầu ra được thay bằng nhánh chuyên dụng, còn phần thân tích chập (backbone) vẫn làm nhiệm vụ trích đặc trưng.
CNN “nhìn” một bức ảnh theo từng tầng ra sao?
Ý tưởng học theo tầng bắt nguồn từ sinh học. Năm 1959, David Hubel và Torsten Wiesel công bố nghiên cứu về vùng tiếp nhận của tế bào thần kinh trong vỏ não thị giác của mèo (Journal of Physiology). Mỗi tế bào chỉ phản ứng với một vùng nhỏ của trường nhìn và với mẫu hình cụ thể như vạch sáng theo một hướng. Năm 1981, hai ông nhận giải Nobel Sinh lý học hoặc Y học cho phát hiện về cách hệ thị giác xử lý thông tin.
CNN mô phỏng ý tưởng đó một cách đơn giản hoá:
- Tầng đầu chỉ thấy vùng 3×3 điểm ảnh, nên học được những thứ đơn giản: cạnh ngang, cạnh dọc, cạnh chéo, đốm màu.
- Tầng giữa nhận đầu vào là bản đồ cạnh. Mỗi nơ-ron ở đây gián tiếp “thấy” vùng ảnh rộng hơn, nên ghép cạnh thành góc, đường cong, hoa văn, rồi thành bộ phận như mắt, tai, bánh xe.
- Tầng sâu ghép bộ phận thành đối tượng hoàn chỉnh: khuôn mặt, chiếc xe, con mèo, vết nứt trên sản phẩm.
Vùng ảnh mà một nơ-ron “thấy” gọi là vùng tiếp nhận (receptive field), lớn dần sau mỗi lớp: hai lớp 3×3 liên tiếp (bước trượt 1) có vùng tiếp nhận 5×5, ba lớp là 7×7. Vì vậy CNN cần nhiều lớp: càng sâu, mạng càng hiểu ngữ cảnh rộng.
CNN được huấn luyện như thế nào?
Đa số CNN được huấn luyện theo kiểu học có giám sát (supervised learning). Quy trình gồm các bước cơ bản:
- Chuẩn bị dữ liệu có nhãn: mỗi ảnh đi kèm đáp án, như “lỗi” hoặc “đạt”, hoặc khung bao quanh vật thể. Chất lượng nhãn quyết định trần chất lượng của mô hình. Công việc này gọi là gán nhãn dữ liệu (data annotation).
- Lan truyền tiến: ảnh đi qua mạng, mạng đưa ra dự đoán.
- Tính hàm mất mát (loss): đo độ sai giữa dự đoán và đáp án. Với phân loại, hàm phổ biến là cross-entropy.
- Lan truyền ngược (backpropagation): tính xem mỗi trọng số, kể cả từng ô trong mỗi bộ lọc, góp bao nhiêu vào sai số.
- Cập nhật trọng số: thuật toán tối ưu như SGD hoặc Adam chỉnh trọng số một chút theo hướng giảm sai số.
- Lặp lại qua hàng chục, hàng trăm lượt (epoch) trên toàn bộ dữ liệu; theo dõi kết quả trên tập kiểm định để dừng đúng lúc.
Tăng cường dữ liệu (data augmentation)
Để mạng không học thuộc lòng, người ta tạo thêm biến thể của ảnh gốc: cắt ngẫu nhiên, lật ngang, xoay nhẹ, đổi độ sáng, đổi màu. Bài báo AlexNet năm 2012 đã dùng cắt ngẫu nhiên vùng 224×224 kèm lật ngang và thay đổi cường độ màu, đồng thời dùng dropout với xác suất 0,5 ở hai lớp kết nối đầy đủ đầu tiên.
Học chuyển giao (transfer learning)
Huấn luyện CNN lớn từ đầu cần rất nhiều ảnh và giờ GPU. Cách phổ biến là lấy một CNN đã huấn luyện sẵn trên tập lớn như ImageNet, giữ phần thân, chỉ huấn luyện lại vài lớp cuối trên dữ liệu của bạn. Vì các lớp đầu đã biết nhận cạnh, góc, hoa văn, mạng chỉ cần học phần đặc thù, nên cần ít ảnh hơn nhiều.
Lịch sử phát triển của CNN qua các mốc chính
| Năm | Mốc | Ý nghĩa |
|---|---|---|
| 1959 | Hubel và Wiesel nghiên cứu vỏ não thị giác của mèo | Khái niệm vùng tiếp nhận; cảm hứng sinh học cho CNN |
| 1980 | Neocognitron của Kunihiko Fukushima | Mạng nhiều tầng nhận dạng mẫu hình không phụ thuộc vị trí; tiền thân trực tiếp của CNN |
| 1989 | Yann LeCun và cộng sự đọc mã bưu chính viết tay | Lần đầu kết hợp tích chập, chia sẻ trọng số với lan truyền ngược trên dữ liệu thật |
| 1998 | LeNet-5, bài báo “Gradient-based learning applied to document recognition” | Kiến trúc kinh điển cho nhận dạng chữ viết tay và chữ in |
| 2012 | AlexNet (Krizhevsky, Sutskever, Hinton) | Thắng ILSVRC-2012 với lỗi top-5 15,3% (tổ hợp 7 mạng), so với 26,2% của đội thứ hai; khoảng 60 triệu tham số; huấn luyện 5–6 ngày trên 2 GPU |
| 2014 | VGG và GoogLeNet | VGG xếp chồng bộ lọc 3×3 thành mạng 16–19 lớp; GoogLeNet thắng ILSVRC 2014 với khoảng 4 triệu tham số |
| 2015 | ResNet, U-Net, YOLO | ResNet dùng kết nối tắt, sâu tới 152 lớp, lỗi top-5 3,57% (tổ hợp), thắng ILSVRC 2015; U-Net phân đoạn ảnh y sinh; YOLO phát hiện vật thể khoảng 45 khung hình/giây |
| 2019 | Giải Turing 2018 cho Bengio, Hinton, LeCun (công bố 27/03/2019) | Ghi nhận đóng góp đưa mạng nơ-ron sâu thành thành phần then chốt của điện toán |
| 2020 | Vision Transformer (ViT) | Xử lý ảnh như chuỗi mảnh 16×16, cạnh tranh với CNN khi huấn luyện trước trên dữ liệu rất lớn |
| 2022 | ConvNeXt (“A ConvNet for the 2020s”) | CNN thuần hiện đại hoá đạt 87,8% top-1 trên ImageNet, ngang Transformer |
Mốc 2012 thường được xem là điểm khởi đầu làn sóng deep learning hiện đại, nhờ hội tụ ba yếu tố: kiến trúc CNN đã chín muồi, tập dữ liệu ImageNet khổng lồ (trang chính thức ghi hơn 14,1 triệu ảnh) và sức mạnh tính toán song song của GPU.
CNN dùng để làm gì? Các ứng dụng thực tế
CNN là “bộ máy nhìn” phía sau phần lớn hệ thống thị giác máy tính (computer vision). Có ba nhóm tác vụ cơ bản:
- Phân loại ảnh (image classification): cả bức ảnh thuộc nhãn nào. Ví dụ: ảnh lá cây bị bệnh gì, sản phẩm đạt hay lỗi.
- Phát hiện vật thể (object detection): vật thể nào, nằm ở đâu, được đóng khung. Ví dụ: đếm xe, phát hiện người không đội mũ bảo hộ.
- Phân đoạn ảnh (segmentation): gán nhãn cho từng điểm ảnh. Ví dụ: tô vùng khối u trên ảnh chụp, tách làn đường cho xe tự hành.
Ứng dụng trong các ngành
- Sản xuất: camera trên dây chuyền phát hiện vết xước, nứt, lệch nhãn, thiếu linh kiện. Bài thị giác máy trong kiểm tra chất lượng đi sâu vào cách triển khai bài toán này.
- Tài liệu và văn phòng: nhiều hệ thống OCR hiện đại dùng CNN để trích đặc trưng từ ảnh chữ trước khi nhận dạng ký tự, kể cả chữ viết tay.
- Y tế: hỗ trợ đọc ảnh X-quang, CT, ảnh giải phẫu bệnh. Kết quả của mô hình chỉ mang tính hỗ trợ, quyết định chẩn đoán vẫn thuộc về bác sĩ.
- Bảo mật và định danh: nhận diện khuôn mặt khi mở khoá điện thoại, xác thực khi giao dịch. Chi tiết về độ chính xác và pháp lý có trong bài nhận diện khuôn mặt là gì.
- Bán lẻ, nông nghiệp, giao thông: tìm sản phẩm bằng hình ảnh, kiểm tra hàng trên kệ, nhận diện sâu bệnh qua ảnh lá, nhận dạng biển số xe.
CNN không chỉ dùng cho ảnh
Bất cứ dữ liệu nào có cấu trúc lưới và mẫu hình cục bộ đều có thể dùng tích chập:
- Âm thanh: chuyển âm thanh thành ảnh phổ (spectrogram) rồi dùng CNN 2 chiều, ví dụ để nhận lệnh thoại ngắn hay phát hiện tiếng máy bất thường.
- Chuỗi thời gian: CNN 1 chiều trượt bộ lọc theo trục thời gian để nhận mẫu hình trong dữ liệu cảm biến, điện tâm đồ.
- Văn bản: CNN từng được dùng để phân loại văn bản, nhưng mảng này nay chủ yếu do Transformer đảm nhận.
Ưu điểm và hạn chế của CNN
Ưu điểm
- Tự học đặc trưng: không cần chuyên gia thiết kế bộ lọc thủ công cho từng bài toán.
- Ít tham số hơn MLP trên cùng một ảnh nhờ kết nối cục bộ và chia sẻ trọng số.
- Nhận ra mẫu hình ở mọi vị trí trong ảnh.
- Hiệu quả với dữ liệu vừa và nhỏ: các “giả định sẵn” về tính cục bộ giúp CNN học tốt hơn Transformer khi dữ liệu không quá lớn.
- Chạy nhanh trên thiết bị nhỏ: có nhiều kiến trúc gọn nhẹ cho điện thoại, camera thông minh, thiết bị biên.
Hạn chế
- Cần dữ liệu có nhãn: nhãn sai hoặc thiếu đa dạng sẽ cho mô hình sai một cách có hệ thống.
- Khó nhìn ngữ cảnh toàn ảnh: mỗi lớp chỉ nhìn cục bộ; muốn hiểu quan hệ giữa hai vật ở hai góc ảnh, mạng phải rất sâu.
- Nhạy với thay đổi môi trường: ánh sáng, góc camera, loại máy ảnh khác với lúc huấn luyện có thể làm độ chính xác giảm rõ rệt.
- Khó giải thích: biết mạng kết luận “lỗi” nhưng khó biết chính xác vì sao. Các kỹ thuật như bản đồ nhiệt Grad-CAM giúp phần nào.
- Có thể bị đánh lừa: thay đổi rất nhỏ, mắt người không thấy, đôi khi làm mạng phân loại sai. Hệ thống quan trọng cần kiểm thử độ bền.
CNN khác MLP, RNN và Vision Transformer thế nào?
| Tiêu chí | MLP | CNN | RNN / LSTM | Vision Transformer |
|---|---|---|---|---|
| Dữ liệu hợp nhất | Dữ liệu bảng, vectơ ngắn | Ảnh, video, phổ âm thanh | Chuỗi tuần tự | Ảnh (và đa phương thức) |
| Cách nhìn dữ liệu | Mọi đầu vào nối với mọi nơ-ron | Cửa sổ cục bộ, trượt khắp ảnh | Từng bước theo thứ tự | Mọi mảnh ảnh “nhìn” lẫn nhau qua attention |
| Giả định sẵn về dữ liệu | Gần như không | Mạnh: cục bộ, dịch chuyển | Thứ tự thời gian | Yếu, phải học từ dữ liệu |
| Nhu cầu dữ liệu | Thấp với dữ liệu bảng | Vừa; tốt với transfer learning | Vừa | Cao nếu huấn luyện từ đầu |
| Ngữ cảnh toàn cục | Có nhưng mất cấu trúc không gian | Tăng dần theo độ sâu | Theo chuỗi, dễ quên xa | Có ngay từ lớp đầu |
| Chạy trên thiết bị biên | Dễ | Rất phổ biến | Được | Đang cải thiện, thường nặng hơn |
Vision Transformer là cách áp dụng kiến trúc Transformer cho ảnh. Nhóm tác giả ViT cho thấy khi được huấn luyện trước trên dữ liệu rất lớn, mô hình này đạt kết quả cạnh tranh với CNN tốt nhất. Tuy vậy, bài báo ConvNeXt năm 2022 lại chứng minh một CNN thuần được thiết kế lại theo cách hiện đại vẫn đạt độ chính xác ngang hoặc vượt Transformer cùng cỡ ở một số tác vụ. Thực tế ngày nay, nhiều hệ thống kết hợp cả hai: phần đầu tích chập để trích đặc trưng cục bộ, phần sau dùng attention để hiểu ngữ cảnh.
Khi nào doanh nghiệp nên dùng CNN?
CNN là lựa chọn hợp lý khi bài toán có các dấu hiệu sau:
- Đầu vào chính là ảnh hoặc video từ camera, máy quét, điện thoại.
- Quy tắc khó viết thành luật cứng: “vết xước trông thế nào”, “lá bị bệnh trông ra sao”.
- Có thể thu thập và gán nhãn ít nhất vài trăm ảnh đại diện cho từng trường hợp, bao gồm cả trường hợp hiếm.
- Cần chạy nhanh, gần nguồn dữ liệu, ví dụ ngay tại dây chuyền hoặc trên thiết bị biên, không phụ thuộc kết nối mạng.
- Kết quả có thể đo bằng chỉ số rõ ràng: tỷ lệ phát hiện đúng, tỷ lệ báo nhầm, thời gian xử lý mỗi ảnh.
Ngược lại, chưa nên dùng CNN khi dữ liệu chủ yếu là bảng số liệu (các mô hình học máy cổ điển thường đủ tốt), khi bài toán có quy tắc rõ ràng (luật if-then rẻ và dễ kiểm soát hơn), hoặc khi không có khả năng thu thập ảnh có nhãn.
Lộ trình thử nghiệm gợi ý
- Chốt bài toán và chỉ số: phân loại, phát hiện hay phân đoạn; chi phí của một lần báo nhầm so với một lần bỏ sót.
- Thu thập ảnh trong điều kiện thật (đúng camera, ánh sáng, góc chụp) và gán nhãn theo hướng dẫn rõ ràng, có kiểm tra chéo.
- Tinh chỉnh một CNN huấn luyện sẵn thay vì tự thiết kế mạng từ đầu.
- Đánh giá trên ảnh mạng chưa từng thấy, xem kỹ ca sai để bổ sung dữ liệu; chạy song song với con người một thời gian.
- Theo dõi sau triển khai: đổi đèn, đổi camera, thêm sản phẩm mới thì cập nhật dữ liệu và huấn luyện lại.
Lưu ý pháp lý tại Việt Nam: nếu ảnh có người, đặc biệt là khuôn mặt, bạn đang xử lý dữ liệu cá nhân. Luật Bảo vệ dữ liệu cá nhân số 91/2025/QH15 (ban hành ngày 26/06/2025, hiệu lực từ 01/01/2026) có điều khoản riêng về dữ liệu sinh trắc học, yêu cầu biện pháp bảo mật và hạn chế quyền truy cập. Nghị định 356/2025/NĐ-CP ngày 31/12/2025 xếp hình ảnh cá nhân vào dữ liệu cơ bản và dữ liệu sinh trắc học vào dữ liệu nhạy cảm. Hệ thống AI còn chịu sự điều chỉnh của Luật Trí tuệ nhân tạo số 134/2025/QH15 (thông qua ngày 10/12/2025), hiệu lực từ 01/03/2026. Nội dung này chỉ mang tính tham khảo; hãy tham vấn bộ phận pháp chế trước khi triển khai.
Những hiểu lầm phổ biến về CNN
- “CNN đã lỗi thời vì có Transformer”: không đúng. CNN vẫn là lựa chọn mặc định ở rất nhiều hệ thống công nghiệp, thiết bị di động và camera nhờ nhẹ, nhanh, cần ít dữ liệu hơn. ConvNeXt năm 2022 cho thấy CNN hiện đại vẫn cạnh tranh sòng phẳng.
- “Càng nhiều lớp càng tốt”: chỉ đúng khi có đủ dữ liệu và kỹ thuật phù hợp. Trước ResNet, mạng quá sâu thậm chí cho kết quả kém hơn mạng nông vì khó huấn luyện.
- “CNN nhìn giống mắt người”: CNN chỉ lấy cảm hứng từ vỏ não thị giác và có thể đưa ra kết luận sai mà con người thấy vô lý.
- “Độ chính xác 99% trên tập thử là đủ”: con số đó chỉ có ý nghĩa nếu tập thử giống điều kiện thật. Nhiều mô hình giảm mạnh độ chính xác khi đổi camera hay đổi ánh sáng.
Câu hỏi thường gặp
CNN viết tắt của gì trong AI?
CNN là Convolutional Neural Network, nghĩa là mạng nơ-ron tích chập, còn gọi là ConvNet. Đừng nhầm với kênh tin tức CNN (Cable News Network). Về toán học chặt chẽ, phần lớn thư viện tính phép tương quan chéo (không lật bộ lọc), nhưng tên “tích chập” đã thành quy ước.
CNN và computer vision khác nhau thế nào?
Computer vision là lĩnh vực nghiên cứu giúp máy tính hiểu hình ảnh. CNN là một công cụ, một kiến trúc mạng được dùng rất nhiều trong lĩnh vực đó. Computer vision còn có các phương pháp khác như xử lý ảnh truyền thống và Vision Transformer.
Cần bao nhiêu ảnh để huấn luyện CNN?
Không có con số cố định. Huấn luyện từ đầu một mạng lớn thường cần rất nhiều ảnh; ví dụ AlexNet dùng hơn 1,2 triệu ảnh huấn luyện thuộc 1.000 nhãn. Nếu dùng học chuyển giao, nhiều bài toán hẹp có thể bắt đầu thử nghiệm với vài trăm ảnh mỗi nhãn, miễn là ảnh đa dạng và nhãn chính xác. Cách chắc chắn nhất là thử nhỏ, đo kết quả, rồi bổ sung dữ liệu ở những ca mô hình sai.
CNN có chạy được trên điện thoại hoặc camera không?
Có. Đây là một thế mạnh của CNN. Các kiến trúc gọn nhẹ kết hợp kỹ thuật lượng tử hoá (giảm độ chính xác số học của trọng số) và cắt tỉa (bỏ bớt kết nối ít quan trọng) giúp mô hình chạy trực tiếp trên điện thoại, camera thông minh hay máy tính nhúng.
Học CNN cần biết những gì?
Bạn nên nắm đại số tuyến tính cơ bản (ma trận, vectơ), đạo hàm và ý tưởng của gradient descent, Python, cùng một thư viện học sâu phổ biến như PyTorch hoặc TensorFlow. Lộ trình hợp lý là hiểu mạng nơ-ron cơ bản trước, rồi tự tay tính một phép tích chập như ví dụ ở trên, sau đó tinh chỉnh một mô hình huấn luyện sẵn trên bộ ảnh nhỏ của riêng bạn.