|
|
||
|---|---|---|
| .. | ||
| lab | ||
| Perceptron.ipynb | ||
| README.md | ||
README.md
Įvadas į neuroninius tinklus: Perceptronas
Prieš paskaitos testas
Vienas iš pirmųjų bandymų sukurti kažką panašaus į šiuolaikinį neuroninį tinklą buvo atliktas Franko Rosenblatto iš Kornelio aeronautikos laboratorijos 1957 metais. Tai buvo techninė įranga, pavadinta „Mark-1“, sukurta atpažinti primityvias geometrines figūras, tokias kaip trikampiai, kvadratai ir apskritimai.
![]() |
![]() |
Vaizdai iš Vikipedijos
Įvesties vaizdas buvo pateikiamas kaip 20x20 fotoląstelių masyvas, todėl neuroninis tinklas turėjo 400 įėjimų ir vieną dvejetainį išėjimą. Paprastas tinklas turėjo vieną neuroną, dar vadinamą slenksčio logikos vienetu. Neuroninio tinklo svoriai veikė kaip potenciometrai, kuriuos reikėjo rankiniu būdu reguliuoti mokymo metu.
✅ Potenciometras yra įrenginys, leidžiantis vartotojui reguliuoti grandinės varžą.
Tuo metu „The New York Times“ rašė apie perceptroną: elektroninio kompiuterio embrionas, kurį [karinis jūrų laivynas] tikisi, kad jis galės vaikščioti, kalbėti, matyti, rašyti, daugintis ir būti sąmoningas savo egzistencijos.
Perceptrono modelis
Tarkime, kad mūsų modelyje yra N savybių, tokiu atveju įvesties vektorius būtų N dydžio vektorius. Perceptronas yra dvejetainės klasifikacijos modelis, t. y. jis gali atskirti du įvesties duomenų klases. Mes laikysime, kad kiekvienam įvesties vektoriui x perceptrono išėjimas bus arba +1, arba -1, priklausomai nuo klasės. Išėjimas bus apskaičiuojamas pagal formulę:
y(x) = f(wTx)
kur f yra slenksčio aktyvacijos funkcija
Perceptrono mokymas
Norint išmokyti perceptroną, reikia rasti svorių vektorių w, kuris teisingai klasifikuotų daugumą reikšmių, t. y. duotų mažiausią klaidą. Ši klaida E apibrėžiama pagal perceptrono kriterijų taip:
E(w) = -∑wTxiti
kur:
- suma imama iš tų mokymo duomenų taškų i, kurie duoda neteisingą klasifikaciją
- xi yra įvesties duomenys, o ti yra -1 arba +1 atitinkamai neigiamų ir teigiamų pavyzdžių.
Šis kriterijus laikomas svorių w funkcija, ir mes turime jį minimizuoti. Dažnai naudojamas metodas, vadinamas gradientiniu nusileidimu, kuriame pradedame nuo pradinio svorio w(0), o kiekviename žingsnyje atnaujiname svorius pagal formulę:
w(t+1) = w(t) - η∇E(w)
Čia η yra vadinamas mokymosi greitis, o ∇E(w) reiškia gradientą E. Po gradiento apskaičiavimo gauname:
w(t+1) = w(t) + ∑ηxiti
Algoritmas Python kalba atrodo taip:
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
Išvada
Šioje pamokoje sužinojote apie perceptroną, kuris yra dvejetainės klasifikacijos modelis, ir kaip jį išmokyti naudojant svorių vektorių.
🚀 Iššūkis
Jei norite pabandyti sukurti savo perceptroną, išbandykite šį laboratorinį darbą Microsoft Learn platformoje, kuris naudoja Azure ML dizainerį.
Po paskaitos testas
Apžvalga ir savarankiškas mokymasis
Norėdami pamatyti, kaip perceptronas gali būti naudojamas sprendžiant žaislinius ir realaus gyvenimo uždavinius, bei tęsti mokymąsi, apsilankykite Perceptron užrašų knygelėje.
Taip pat štai įdomus straipsnis apie perceptronus.
Užduotis
Šioje pamokoje mes įgyvendinome perceptroną dvejetainės klasifikacijos užduočiai ir panaudojome jį dviejų ranka rašytų skaitmenų klasifikavimui. Šiame laboratoriniame darbe jūsų prašoma visiškai išspręsti skaitmenų klasifikavimo problemą, t. y. nustatyti, kuris skaitmuo greičiausiai atitinka pateiktą vaizdą.

