|
|
||
|---|---|---|
| .. | ||
| lab | ||
| Perceptron.ipynb | ||
| README.md | ||
README.md
Wprowadzenie do sieci neuronowych: Perceptron
Quiz przed wykładem
Jednym z pierwszych prób stworzenia czegoś podobnego do współczesnej sieci neuronowej był projekt Franka Rosenblatta z Cornell Aeronautical Laboratory w 1957 roku. Była to implementacja sprzętowa nazwana "Mark-1", zaprojektowana do rozpoznawania prostych figur geometrycznych, takich jak trójkąty, kwadraty i koła.
![]() |
![]() |
Obrazy z Wikipedii
Obraz wejściowy był reprezentowany przez matrycę fotokomórek o wymiarach 20x20, co oznaczało, że sieć neuronowa miała 400 wejść i jedno binarne wyjście. Prosta sieć zawierała jeden neuron, nazywany również jednostką logiczną progową. Wagi sieci neuronowej działały jak potencjometry, które wymagały ręcznego dostosowania podczas fazy treningowej.
✅ Potencjometr to urządzenie, które pozwala użytkownikowi regulować opór w obwodzie.
The New York Times pisał o perceptronie w tamtym czasie: zarodek elektronicznego komputera, który [Marynarka Wojenna] oczekuje, że będzie mógł chodzić, mówić, widzieć, pisać, reprodukować się i być świadomy swojego istnienia.
Model perceptronu
Załóżmy, że mamy N cech w naszym modelu, w takim przypadku wektor wejściowy będzie miał rozmiar N. Perceptron to model klasyfikacji binarnej, czyli potrafi rozróżniać między dwoma klasami danych wejściowych. Zakładamy, że dla każdego wektora wejściowego x wyjście perceptronu będzie wynosić +1 lub -1, w zależności od klasy. Wyjście będzie obliczane według wzoru:
y(x) = f(wTx)
gdzie f to funkcja aktywacji typu schodkowego
Trenowanie perceptronu
Aby wytrenować perceptron, musimy znaleźć wektor wag w, który klasyfikuje większość wartości poprawnie, czyli prowadzi do najmniejszego błędu. Ten błąd E jest definiowany przez kryterium perceptronu w następujący sposób:
E(w) = -∑wTxiti
gdzie:
- suma jest obliczana dla tych punktów danych treningowych i, które są błędnie klasyfikowane
- xi to dane wejściowe, a ti wynosi -1 lub +1 dla odpowiednio negatywnych i pozytywnych przykładów.
To kryterium jest traktowane jako funkcja wag w, którą musimy zminimalizować. Często stosuje się metodę gradientu prostego, w której zaczynamy od początkowych wag w(0), a następnie na każdym kroku aktualizujemy wagi według wzoru:
w(t+1) = w(t) - η∇E(w)
Tutaj η to tak zwana szybkość uczenia, a ∇E(w) oznacza gradient funkcji E. Po obliczeniu gradientu otrzymujemy:
w(t+1) = w(t) + ∑ηxiti
Algorytm w Pythonie wygląda następująco:
def train(positive_examples, negative_examples, num_iterations = 100, eta = 1):
weights = [0,0,0] # Initialize weights (almost randomly :)
for i in range(num_iterations):
pos = random.choice(positive_examples)
neg = random.choice(negative_examples)
z = np.dot(pos, weights) # compute perceptron output
if z < 0: # positive example classified as negative
weights = weights + eta*weights.shape
z = np.dot(neg, weights)
if z >= 0: # negative example classified as positive
weights = weights - eta*weights.shape
return weights
Podsumowanie
W tej lekcji nauczyłeś się o perceptronie, który jest modelem klasyfikacji binarnej, oraz jak go trenować, używając wektora wag.
🚀 Wyzwanie
Jeśli chcesz spróbować zbudować własny perceptron, wypróbuj to laboratorium na Microsoft Learn, które korzysta z Azure ML designer.
Quiz po wykładzie
Przegląd i samodzielna nauka
Aby zobaczyć, jak można użyć perceptronu do rozwiązania prostego problemu oraz problemów z życia codziennego, i aby kontynuować naukę - przejdź do notatnika Perceptron.
Oto interesujący artykuł o perceptronach.
Zadanie
W tej lekcji zaimplementowaliśmy perceptron do zadania klasyfikacji binarnej i użyliśmy go do klasyfikacji dwóch cyfr pisanych ręcznie. W tym laboratorium masz za zadanie rozwiązać problem klasyfikacji cyfr w całości, czyli określić, która cyfra najprawdopodobniej odpowiada danemu obrazowi.

