|
|
||
|---|---|---|
| .. | ||
| lab | ||
| Perceptron.ipynb | ||
| README.md | ||
README.md
Увод у неуронске мреже: Перцептрон
Квиз пре предавања
Један од првих покушаја да се имплементира нешто слично модерној неуронској мрежи направио је Френк Розенблат из Корнел лабораторије за ваздухопловство 1957. године. То је била хардверска имплементација названа "Mark-1", дизајнирана да препозна примитивне геометријске фигуре, као што су троуглови, квадрати и кругови.
![]() |
![]() |
Слике са Википедије
Улазна слика је била представљена низом од 20x20 фотоћелија, тако да је неуронска мрежа имала 400 улаза и један бинарни излаз. Једноставна мрежа је садржала један неурон, који се називао и јединица логичког прага. Тежине неуронске мреже су функционисале као потенциометри који су захтевали ручно подешавање током фазе тренинга.
✅ Потенциометар је уређај који омогућава кориснику да подеси отпор у колу.
Њујорк Тајмс је у то време писао о перцептрону: ембрион електронског рачунара за који [морнарица] очекује да ће моћи да хода, говори, види, пише, репродукује се и буде свестан свог постојања.
Модел перцептрона
Претпоставимо да имамо N карактеристика у нашем моделу, у ком случају би улазни вектор био вектор величине N. Перцептрон је модел за бинарну класификацију, односно може да разликује две класе улазних података. Претпоставићемо да за сваки улазни вектор x излаз нашег перцептрона буде или +1 или -1, у зависности од класе. Излаз ће се рачунати помоћу формуле:
y(x) = f(wTx)
где је f функција активације у облику степенасте функције.
Тренинг перцептрона
Да бисмо обучили перцептрон, потребно је да пронађемо вектор тежина w који класификује већину вредности исправно, односно резултира најмањом грешком. Ова грешка E је дефинисана критеријумом перцептрона на следећи начин:
E(w) = -∑wTxiti
где:
- збир се узима за оне тачке података за тренинг i које резултирају погрешном класификацијом
- xi су улазни подаци, а ti је или -1 или +1 за негативне и позитивне примере, респективно.
Овај критеријум се сматра функцијом тежина w, и потребно је да га минимизирамо. Често се користи метода названа градијентни спуст, у којој почињемо са неким почетним тежинама w(0), а затим на сваком кораку ажурирамо тежине према формули:
w(t+1) = w(t) - η∇E(w)
Овде је η такозвана стопа учења, а ∇E(w) означава градијент E. Након што израчунамо градијент, добијамо:
w(t+1) = w(t) + ∑ηxiti
Алгоритам у Python-у изгледа овако:
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
Закључак
У овом предавању сте научили о перцептрону, који је модел за бинарну класификацију, и како да га обучите користећи вектор тежина.
🚀 Изазов
Ако желите да покушате да направите свој перцептрон, пробајте ову лабораторију на Microsoft Learn која користи Azure ML designer.
Квиз после предавања
Преглед и самостално учење
Да бисте видели како можемо користити перцептрон за решавање једноставних проблема као и проблема из стварног живота, и да наставите са учењем - идите на Perceptron бележницу.
Ево занимљивог чланка о перцептронима.
Задатак
У овом предавању смо имплементирали перцептрон за задатак бинарне класификације и користили га за класификацију између две руком писане цифре. У овој лабораторији, од вас се тражи да решите проблем класификације цифара у потпуности, односно да одредите која цифра највероватније одговара датој слици.

