CNN: Oczy Sztucznej Inteligencji
1. Anatomia widzenia: Jak to działa?
🔍 Konwolucja (Skanowanie)
Sieć przesuwa mały filtr po całym obrazie, szukając specyficznych cech (linii, kółek). To tak, jakbyś przeglądał mapę przez dziurkę od klucza.
📉 Pooling (Upraszczanie)
Po znalezieniu cech, sieć zmniejsza rozmiar danych, zachowując tylko najważniejsze punkty. Dzięki temu rozpoznaje obiekt niezależnie od jego pozycji.
2. Wady i ograniczenia CNN
Mimo swojej potęgi, sieci konwolucyjne nie są idealne. Oto ich największe słabości:
Aby CNN działała dobrze, musisz jej pokazać tysiące (lub miliony) przykładów. Jeśli masz mało danych, sieć po prostu się nie nauczy lub zacznie "zgadywać" na podstawie błędnych wzorców.
Trenowanie głębokich sieci CNN wymaga potężnych kart graficznych (GPU). Bez nich proces ten trwałby miesiącami, a nie godzinami.
Trudno jest dokładnie zrozumieć, dlaczego sieć podjęła daną decyzję. Jeśli model pomyli psa z wilkiem, naukowcom trudno jest wyśledzić, który konkretnie piksel o tym zdecydował.
Klasyczne CNN mają problem, jeśli pokażesz im znany obiekt, ale do góry nogami lub pod dziwnym kątem, którego wcześniej nie widziały w treningu.
3. Implementacja w Pythonie (PyTorch)
import torch.nn as nn
import torch.nn.functional as F
class SimpleCNN(nn.Module):
def __init__(self):
super(SimpleCNN, self).__init__()
self.conv1 = nn.Conv2d(3, 32, 3) # Skaner 3x3
self.pool = nn.MaxPool2d(2, 2) # Upraszczacz
self.fc1 = nn.Linear(32 * 14 * 14, 10)
def forward(self, x):
x = self.pool(F.relu(self.conv1(x)))
x = x.view(-1, 32 * 14 * 14) # Spłaszczanie
return self.fc1(x)