Umetna nevronska mreža
Nevronsko omrežje (imenovano tudi ANN ali umetno nevronsko omrežje) je vrsta računalniške programske opreme, ki se zgleduje po bioloških nevronih. Biološki možgani so sposobni reševati zahtevne probleme, vendar je vsak nevron odgovoren le za reševanje zelo majhnega dela problema. Podobno je nevronsko omrežje sestavljeno iz celic, ki sodelujejo pri doseganju želenega rezultata, čeprav je vsaka posamezna celica odgovorna le za reševanje majhnega dela problema. To je ena od metod za ustvarjanje umetno inteligentnih programov.
Nevronske mreže so primer strojnega učenja, pri katerem se lahko program spreminja, ko se uči reševati problem. Nevronsko mrežo je mogoče usposobiti in izboljšati z vsakim primerom, vendar večja kot je nevronska mreža, več primerov potrebuje za dobro delovanje, pri globokem učenju pa je pogosto potrebnih več milijonov ali milijard primerov.
Pregled
Nevronsko omrežje si lahko predstavljamo na dva načina. Prvi je kot človeški možgani. Drugi je kot matematična enačba.
Omrežje se začne z vhodnim podatkom, podobno kot čutilni organ. Informacije se nato pretakajo skozi plasti nevronov, pri čemer je vsak nevron povezan s številnimi drugimi nevroni. Če določen nevron prejme dovolj dražljajev, pošlje sporočilo kateremu koli drugemu nevronu, s katerim je povezan prek svojega aksona. Podobno ima umetna nevronska mreža vhodno plast s podatki, eno ali več skritih plasti klasifikatorjev in izhodno plast. Vsako vozlišče v vsaki skriti plasti je povezano z vozliščem v naslednji plasti. Ko vozlišče prejme informacijo, jo v določeni meri pošlje vozliščem, s katerimi je povezano. Količina je določena z matematično funkcijo, imenovano aktivacijska funkcija, na primer sigmoida ali tanh.
Če nevronsko mrežo obravnavamo kot matematično enačbo, je nevronska mreža preprosto seznam matematičnih operacij, ki jih je treba uporabiti na vhodu. Vhod in izhod vsake operacije je tenzor (natančneje vektor ali matrika). Vsak par plasti je povezan s seznamom uteži. Vsaka plast ima shranjenih več tenzorjev. Posamezen tenzor v plasti se imenuje vozlišče. Vsako vozlišče je z nekaterimi ali vsemi vozlišči v naslednji plasti povezano z utežjo. Vsako vozlišče ima tudi seznam vrednosti, ki se imenujejo pristranskosti. Vrednost vsake plasti je torej izid aktivacijske funkcije vrednosti trenutne plasti (imenovane X), pomnožen z utežmi.
O b r a v n a v a n j e ( W ( e i g h t s ) ∗ X + b ( i a s ) ) {\displaystyle Aktivacija(W(eights)*X+b(ias))}
Za omrežje je opredeljena stroškovna funkcija. Funkcija izgube poskuša oceniti, kako dobro nevronska mreža opravlja dodeljeno nalogo. Na koncu se uporabi optimizacijska tehnika za minimiziranje rezultata stroškovne funkcije s spreminjanjem uteži in pristranskosti omrežja. Ta postopek se imenuje usposabljanje. Usposabljanje poteka po majhnih korakih. Po več tisoč korakih je omrežje običajno sposobno precej dobro opraviti dodeljeno nalogo.
Primer
Razmislite o programu, ki preveri, ali je oseba živa. Preveri dve stvari - pulz in dihanje.Če ima oseba pulz ali diha, program izpiše "živ", v nasprotnem primeru izpiše "mrtev". V programu, ki se sčasoma ne uči, bi to zapisali kot:
Zelo preprosta nevronska mreža, sestavljena iz enega samega nevrona, ki rešuje isti problem, je videti takole:
Vrednosti pulza, dihanja in živega bodo 0 ali 1, kar pomeni lažno in resnično. Če so nevronu podane vrednosti (0,1), (1,0) ali (1,1), mora torej oddati 1, če pa so mu podane vrednosti (0,0), mora oddati 0. Nevron to naredi tako, da na vhodu uporabi preprosto matematično operacijo - sešteje vse podane vrednosti in nato doda svojo skrito vrednost, ki se imenuje "odklon". Na začetku je ta skrita vrednost naključna, sčasoma pa jo prilagodimo, če nevron ne daje želenega izhoda.
Če vrednosti, kot je (1,1), seštejemo, lahko dobimo številke, večje od 1, vendar želimo, da je naš rezultat med 0 in 1! To lahko rešimo tako, da uporabimo funkcijo, ki naš dejanski izhod omeji na 0 ali 1, tudi če rezultat matematike nevrona ni bil v tem območju. Pri bolj zapletenih nevronskih mrežah uporabimo funkcijo (kot je sigmoida) za nevron, tako da bo njegova vrednost med 0 ali 1 (na primer 0,66), nato pa to vrednost posredujemo naslednjemu nevronu vse dokler ne potrebujemo našega izhoda.
Učne metode
Nevronska mreža se lahko uči na tri načine: nadzorovano učenje, nenadzorovano učenje in učenje z okrepitvijo. Vsi ti načini delujejo tako, da minimizirajo ali maksimizirajo stroškovno funkcijo, vendar je vsak od njih boljši pri določenih nalogah.
Raziskovalna skupina z univerze Hertfordshire v Združenem kraljestvu je nedavno s pomočjo učenja z ojačitvijo naučila humanoidnega robota iCub izgovarjati preproste besede z blebetanjem.
Vprašanja in odgovori
V: Kaj je nevronsko omrežje?
O: Nevronsko omrežje (imenovano tudi ANN ali umetno nevronsko omrežje) je vrsta računalniške programske opreme, ki se zgleduje po bioloških nevronih. Sestavljena je iz celic, ki sodelujejo pri ustvarjanju želenega rezultata, čeprav je vsaka posamezna celica odgovorna le za reševanje majhnega dela problema.
V: Kako se nevronsko omrežje lahko primerja z biološkimi možgani?
O: Biološki možgani so sposobni reševati zahtevne probleme, vendar je vsak nevron odgovoren le za rešitev zelo majhnega dela problema. Podobno je nevronsko omrežje sestavljeno iz celic, ki sodelujejo, da bi dosegle želeni rezultat, čeprav je vsaka posamezna celica odgovorna le za rešitev majhnega dela problema.
V: Katera vrsta programa lahko ustvari umetno inteligentne programe?
O: Nevronske mreže so primer strojnega učenja, pri katerem se lahko program spreminja, ko se uči reševati problem.
V: Kako se lahko usposabljate in izboljšujete z vsakim primerom, da bi lahko uporabili globoko učenje?
O: Nevronsko mrežo je mogoče usposobiti in izboljšati z vsakim primerom, vendar večja kot je nevronska mreža, več primerov potrebuje za dobro delovanje, pri globokem učenju pa je pogosto potrebnih na milijone ali milijarde primerov.
V: Kaj potrebujete, da bo globoko učenje uspešno?
O: Da bi bilo globoko učenje uspešno, potrebujete milijone ali milijarde primerov, odvisno od tega, kako velika je nevronska mreža.
V: Kako je strojno učenje povezano z ustvarjanjem umetno inteligentnih programov?
O: Strojno učenje je povezano z ustvarjanjem umetno inteligentnih programov, ker omogoča, da se programi spreminjajo, ko se naučijo reševati probleme.