Capsule Networks (CapsNet)
Mạng capsule (CapsNets) mã hóa mỗi bộ phận thành một vector, trong đó độ dài biểu thị xác suất và hướng biểu thị tư thế; các capsule được liên kết bằng định tuyến động.
Mạng capsule (CapsNet) là mạng neural được xây dựng từ các capsule, những nhóm neuron nhỏ có đầu ra là vector thay vì một số đơn lẻ. Độ dài vector của capsule biểu thị xác suất một thực thể—chẳng hạn chữ số, mắt hoặc bánh xe—hiện diện; hướng vector mã hóa các tham số khởi tạo của thực thể đó: vị trí, kích thước, hướng, độ dày nét và các thuộc tính khác về tư thế cũng như biến dạng. Geoffrey Hinton, Alex Krizhevsky và Sida Wang giới thiệu capsule trong bài báo năm 2011 về autoencoder biến đổi; Sara Sabour, Nicholas Frosst và Hinton phát triển capsule thành bộ phân loại hoạt động được trong Dynamic Routing Between Capsules, trình bày tại NIPS 2017. Phương pháp này kết nối các capsule ở những lớp liên tiếp bằng một thuật toán lặp gọi là định tuyến theo mức độ đồng thuận.
Vì sao capsule thay thế max pooling#
Mạng neural tích chập (CNN) phát hiện đặc trưng bằng các activation dạng vô hướng và thường thu nhỏ feature map bằng max pooling; phương pháp này giữ lại phản hồi mạnh nhất trong mỗi cửa sổ nhưng loại bỏ vị trí xuất hiện phản hồi đó. Điều này giúp việc phát hiện ít nhạy với các dịch chuyển nhỏ, nhưng mạng chỉ kiểm tra các bộ phận có hiện diện hay không có thể chấp nhận khuôn mặt có miệng nằm phía trên mắt—vấn đề thường được gọi là Picasso. Hinton đề xuất tính tương đương thay vì tính bất biến: khi vật thể di chuyển hoặc xoay, vector capsule cũng xoay theo, trong khi độ dài của vector—xác suất vật thể tồn tại—giữ nguyên. Các capsule học góc nhìn theo cách này cần ít tăng cường dữ liệu hơn so với CNN để nhận dạng vật thể ở góc nhìn mới.
Ultralytics YOLO26 duy trì vị trí vật thể mà không cần capsule: năm lớp tích chập stride-2 giảm đầu vào xuống độ phân giải 1/32; khối max pooling duy nhất của model là SPPF, thực hiện pooling ở stride 1 với cửa sổ 5 x 5 ba lần liên tiếp, mở rộng receptive field mà không thu nhỏ lưới dùng làm đầu vào cho head phát hiện.
Dynamic routing hoạt động như thế nào#
Mỗi capsule ở lớp dưới nhân đầu ra của mình với một ma trận trọng số đã học để dự đoán đầu ra của từng capsule ở lớp trên. Sau đó, cơ chế định tuyến quyết định lượng đầu ra của mỗi capsule con được chuyển đến từng capsule cha. Hàm softmax trên các logit định tuyến, vốn ban đầu bằng 0, tạo ra các hệ số ghép nối dùng để phân chia đầu ra của mỗi capsule con giữa các capsule cha. Mỗi capsule cha tính tổng các dự đoán có trọng số theo những hệ số đó rồi áp dụng hàm squash, hàm này giữ nguyên hướng của vector và ánh xạ độ dài của vector vào khoảng từ 0 đến 1. Tích vô hướng giữa mỗi dự đoán và đầu ra mới của capsule cha được cộng vào logit, nhờ đó các capsule con gửi nhiều đầu ra hơn đến các capsule cha có trạng thái mà chúng đã dự đoán:
import torch
torch.manual_seed(0)
# 6 capsule con, mỗi capsule dự đoán pose 8D cho 2 capsule cha
predictions = 0.2 * torch.randn(6, 2, 8)
pose = 0.5 * torch.randn(8)
predictions[:4, 0] = pose + 0.05 * torch.randn(4, 8) # các capsule con 0-3 đồng thuận với capsule cha 0
logits = torch.zeros(6, 2)
for _ in range(3): # định tuyến theo mức độ đồng thuận, 3 vòng lặp như trong bài báo
coupling = logits.softmax(dim=1) # mỗi capsule con phân chia phiếu bầu giữa các capsule cha
s = (coupling.unsqueeze(-1) * predictions).sum(dim=0)
squared = s.square().sum(dim=-1, keepdim=True)
parents = squared / (1 + squared) * s / squared.sqrt() # squash: độ dài trong [0, 1)
logits = logits + (predictions * parents).sum(dim=-1) # mức độ đồng thuận làm tăng logit
print(coupling[:, 0].round(decimals=2))
print(parents.norm(dim=-1).round(decimals=2))Kết quả in ra tensor([0.9700, 0.9700, 0.9700, 0.9700, 0.5700, 0.4700]) và tensor([0.9800, 0.1500]). Sau ba vòng lặp, bốn capsule con đồng thuận chuyển 97% đầu ra đến capsule cha 0; hai capsule còn lại vẫn chia gần như đều, còn độ dài vector của capsule cha 0 đạt 0.98 trong khi capsule cha 1, chỉ nhận được các phiếu rải rác, giữ ở mức 0.15. Routing giống cơ chế attention của một transformer nhưng chạy theo chiều ngược lại: softmax được tính trên các capsule cha mà một capsule con có thể gửi đầu ra đến, nên các capsule cha cạnh tranh đầu ra của mỗi capsule con.
CapsNet năm 2017 và kết quả#
Mạng ban đầu khá nông: một lớp tích chập với 256 kernel kích thước 9 x 9 đưa dữ liệu vào PrimaryCaps, một lớp capsule tích chập biến chữ số 28 x 28 thành 32 x 6 x 6 = 1.152 capsule tám chiều; routing kết nối chúng với DigitCaps, gồm một capsule 16 chiều cho mỗi lớp. Quá trình huấn luyện kết hợp hàm loss margin trên độ dài capsule—đẩy độ dài lên trên 0.9 với chữ số hiện diện và xuống dưới 0.1 với các chữ số còn lại—với một decoder tái tạo ảnh từ capsule của chữ số đúng, cùng thành phần regularization kiểu autoencoder được giảm hệ số xuống 0.0005. Thay đổi một trong 16 chiều rồi giải mã kết quả sẽ làm thay đổi một thuộc tính riêng như tỷ lệ, độ dày nét, độ nghiêng hoặc chiều rộng, nhờ vậy đầu ra capsule dễ kiểm tra hơn activation của CNN; đây cũng là mục tiêu của AI có thể giải thích.
Với 8,2 triệu tham số so với 35,4 triệu của CNN cơ sở, CapsNet đạt sai số kiểm thử 0,25% trên MNIST, so với 0,39% của model cơ sở; trên MultiMNIST, gồm các cặp chữ số có bounding box chồng lấn trung bình 80%, các mức tương ứng là 5,2% và 8,1%. Chỉ được huấn luyện trên chữ số MNIST dịch chuyển tối đa 2 pixel, model đạt 79% trên affNIST—cùng các chữ số đó nhưng được biến đổi affine ngẫu nhiên—trong khi CNN có số tham số tương tự đạt 66%. Trên CIFAR-10, một ensemble gồm bảy CapsNet đạt sai số 10,6%, tương đương kết quả CNN khi lần đầu được áp dụng cho dataset này; các tác giả cho rằng chênh lệch bắt nguồn từ việc capsule cố xử lý nền lộn xộn.
Giới hạn và các model capsule đời sau#
Routing lặp nhiều vòng trên mọi cặp capsule con và capsule cha, vì vậy compute và bộ nhớ tăng nhanh theo kích thước ảnh và số lớp; mạng capsule chưa bao giờ bắt kịp CNN hoặc vision transformer trên các benchmark phân loại ảnh quy mô lớn như ImageNet. Các nhà nghiên cứu đã áp dụng mạng capsule trong phân tích ảnh y khoa, chẳng hạn phân loại loại u não từ ảnh MRI, ở những trường hợp tập huấn luyện nhỏ.
Capsule ma trận với EM routing của Hinton, Sabour và Frosst tại ICLR 2018 thay vector pose bằng ma trận pose 4 x 4 và định tuyến bằng thuật toán kỳ vọng-tối đa; trên benchmark smallNORB gồm các vật thể đồ chơi được chụp từ nhiều góc nhìn, phương pháp này giảm 45% sai số kiểm thử so với kết quả tiên tiến trước đó và chống lại tấn công đối kháng kiểu white-box tốt hơn CNN cơ sở. Autoencoder capsule xếp chồng ra đời vào năm 2019 và học capsule mà không cần nhãn; đề xuất GLOM năm 2021 của Hinton biểu diễn cùng hệ phân cấp bộ phận-tổng thể dưới dạng các cụm vector embedding đồng thuận, hoàn toàn không cần dynamic routing.










