Dubinsko učenje neuronskih mreža objašnjeno na običnom engleskom jeziku

Strojno učenje, a posebno duboko učenje, dvije su tehnologije koje mijenjaju svijet.

Nakon duge "AI zime" koja je trajala 30 godina, računalne snage i skupovi podataka napokon su uhvatili algoritme umjetne inteligencije koji su predloženi tijekom druge polovice dvadesetog stoljeća.

To znači da se modeli dubokog učenja konačno koriste za stvaranje učinkovitih predviđanja koja rješavaju probleme iz stvarnog svijeta.

Znanstvenicima i softverskim inženjerima važnije je nego ikad da na visokoj razini razumiju kako funkcioniraju modeli dubokog učenja. Ovaj će članak objasniti povijest i osnovne koncepte neuronskih mreža dubokog učenja na jednostavnom engleskom jeziku.

Povijest dubokog učenja

Dubinsko učenje konceptualizirao je Geoffrey Hinton 1980-ih. Široko se smatra ocem utemeljiteljem polja dubokog učenja. Hinton radi u Googleu od ožujka 2013. kada je preuzeta njegova tvrtka, DNNresearch Inc.

Hintonov glavni doprinos polju dubokog učenja bio je usporedba tehnika strojnog učenja s ljudskim mozgom.

Točnije, stvorio je koncept "neuronske mreže", koja je algoritam dubokog učenja strukturiran slično organizaciji neurona u mozgu. Hinton je pristupio ovom pristupu jer je ljudski mozak vjerojatno najsnažniji računalni motor poznat danas.

Struktura koju je Hinton stvorio nazvana je umjetnom neuronskom mrežom (ili skraćeno umjetnom neuronskom mrežom). Evo kratkog opisa njihovog funkcioniranja:

  • Umjetne neuronske mreže sastoje se od slojeva čvora
  • Svaki čvor dizajniran je da se ponaša slično neuronu u mozgu
  • Prvi sloj neuronske mreže naziva se inputslojem, slijede hiddenslojevi, a na kraju outputsloj
  • Svaki čvor u neuronskoj mreži vrši neku vrstu izračuna, koji se prenosi na druge čvorove dublje u neuronskoj mreži

Evo pojednostavljene vizualizacije koja pokazuje kako ovo funkcionira:

Vizualizacija umjetne neuronske mreže

Neuronske mreže predstavljale su golem korak naprijed na polju dubokog učenja.

Međutim, trebala su desetljeća da strojno učenje (i posebno duboko učenje) dobije istaknuto mjesto.

Istražit ćemo zašto u sljedećem odjeljku.

Zašto duboko učenje nije odmah uspjelo

Ako je duboko učenje izvorno zamišljeno prije nekoliko desetljeća, zašto ono danas tek počinje dobivati ​​zamah?

To je zato što svaki zreli model dubokog učenja zahtijeva obilje dva resursa:

  • Podaci
  • Računska snaga

U vrijeme konceptualnog rođenja dubokog učenja, istraživači nisu imali pristup ni podacima ni računarskoj snazi ​​za izgradnju i obuku značajnih modela dubokog učenja. To se vremenom promijenilo, što je danas dovelo do izražaja u dubokom učenju.

Razumijevanje neurona u dubokom učenju

Neuroni su kritična komponenta svakog modela dubokog učenja.

Zapravo, netko bi mogao tvrditi da ne možete u potpunosti razumjeti duboko učenje ako imate duboko znanje o tome kako neuroni djeluju.

Ovaj odjeljak upoznat će vas s pojmom neurona u dubokom učenju. Razgovarat ćemo o podrijetlu neurona dubokog učenja, o tome kako su nadahnuti biologijom ljudskog mozga i zašto su neuroni toliko važni u modelima dubokog učenja danas.

Što je neuron u biologiji?

Neuroni u dubokom učenju nadahnuti su neuronima u ljudskom mozgu. Evo dijagrama anatomije moždanog neurona:

Anatomija neurona u mozgu

Kao što vidite, neuroni imaju prilično zanimljivu strukturu. Skupine neurona rade zajedno u ljudskom mozgu kako bi izvršile funkcionalnost koja nam je potrebna u našem svakodnevnom životu.

Pitanje koje je Geoffrey Hinton postavio tijekom svog osnovnog istraživanja u neuronskim mrežama bilo je možemo li izgraditi računalne algoritme koji se ponašaju slično neuronima u mozgu. Nadala se da bismo oponašajući strukturu mozga mogli uhvatiti neke njegove sposobnosti.

Da bi to učinili, istraživači su proučavali način ponašanja neurona u mozgu. Jedno važno zapažanje bilo je da je neuron sam po sebi beskoristan. Umjesto toga, trebaju vam mreže neurona da generiraju bilo koju značajnu funkcionalnost.

To je zato što neuroni funkcioniraju primajući i šaljući signale. Preciznije, neuron dendritesprima signale i prolazi kroz njih kroz axon.

dendritesJednog neurona povezana je s axondrugog neurona. Te su veze nazvane synapses, što je koncept koji je generaliziran na područje dubokog učenja.

Što je neuron u dubokom učenju?

Neuroni u modelima dubokog učenja čvorovi su kroz koje prolaze podaci i proračuni.

Neuroni djeluju ovako:

  • Oni primaju jedan ili više ulaznih signala. Ti ulazni signali mogu dolaziti ili iz sirovog skupa podataka ili iz neurona smještenih na prethodnom sloju neuronske mreže.
  • Oni vrše neke proračune.
  • Oni šalju neke izlazne signale neuronima dublje u neuronskoj mreži putem a synapse.

Evo dijagrama funkcionalnosti neurona u neuronskoj mreži dubokog učenja:

Funkcija neurona u modelu dubokog učenja

Krenimo korak po korak kroz ovaj dijagram.

Kao što vidite, neuroni u modelu dubokog učenja sposobni su imati sinapse koje se povezuju s više od jednog neurona u prethodnom sloju. Svaka sinapsa ima povezano weight, što utječe na važnost prethodnog neurona u cjelokupnoj neuronskoj mreži.

Ponderi su vrlo važna tema na polju dubokog učenja, jer je prilagođavanje težina modela primarni način na koji se treniraju modeli dubokog učenja. To ćete vidjeti u praksi kasnije kad gradimo svoje prve neuronske mreže od nule.

Jednom kada neuron primi svoje ulaze od neurona u prethodnom sloju modela, on sabire svaki signal pomnožen s odgovarajućom težinom i prenosi ih na funkciju aktivacije, poput ove:

Aktivacijska funkcija neurona

Funkcija aktivacije izračunava izlaznu vrijednost za neuron. Ta se izlazna vrijednost zatim prenosi na sljedeći sloj neuronske mreže kroz drugu sinapsu.

Ovo služi kao široki pregled neurona dubokog učenja. Ne brinite se ako je bilo potrebno puno toga naučiti - o neuronima ćemo saznati mnogo više u nastavku ovog vodiča. Za sada je dovoljno da na visokoj razini razumijete kako su strukturirani u modelu dubokog učenja.

Funkcije aktiviranja dubokog učenja

Funkcije aktivacije temeljni su koncept koji treba razumjeti u dubokom učenju.

Oni su ono što omogućava neuronima u neuronskoj mreži da međusobno komuniciraju kroz svoje sinapse.

U ovom ćete odjeljku naučiti razumjeti važnost i funkcionalnost aktivacijskih funkcija u dubokom učenju.

Koje su funkcije aktivacije u dubinskom učenju?

U posljednjem smo dijelu saznali da neuroni primaju ulazne signale iz prethodnog sloja neuronske mreže. Ponderirani zbroj ovih signala dovodi se u neuronsku aktivacijsku funkciju, a zatim se izlazne funkcije aktivacijske funkcije prenose na sljedeći sloj mreže.

Postoje četiri glavne vrste aktivacijskih funkcija o kojima ćemo razgovarati u ovom vodiču:

  • Funkcije praga
  • Sigmoidne funkcije
  • Funkcije ispravljača ili ReLU-ovi
  • Funkcije hiperboličke tangente

Riješimo ove funkcije aktiviranja jednu po jednu.

Funkcije praga

Funkcije praga izračunavaju različiti izlazni signal ovisno o tome leži li njegov ulaz iznad ili ispod određenog praga. Zapamtite, ulazna vrijednost u funkciju aktivacije ponderirani je zbroj ulaznih vrijednosti iz prethodnog sloja u neuronskoj mreži.

Matematički gledano, evo formalne definicije funkcije praga dubokog učenja:

Funkcije praga

Kao što gornja slika sugerira, funkcija praga se ponekad naziva i a unit step function.

Funkcije praga slične su logičkim varijablama u računalnom programiranju. Njihova izračunata vrijednost je 1(slična True) ili 0(ekvivalentna False).

Sigmoidna funkcija

Sigmoidna funkcija dobro je poznata u zajednici podatkovnih znanosti zbog svoje uporabe u logističkoj regresiji, jednoj od temeljnih tehnika strojnog učenja koja se koristi za rješavanje problema klasifikacije.

Sigmoidna funkcija može prihvatiti bilo koju vrijednost, ali uvijek izračunava vrijednost između 0i 1.

Evo matematičke definicije sigmoidne funkcije:

Sigmoidne funkcije

Jedna od prednosti sigmoidne funkcije nad funkcijom praga je ta što je njezina krivulja glatka. To znači da je moguće izračunati izvedenice u bilo kojoj točki krivulje.

Funkcija ispravljača

Ispravljačka funkcija nema isto svojstvo glatkoće kao sigmoidna funkcija iz posljednjeg odjeljka. Međutim, i dalje je vrlo popularan na polju dubokog učenja.

Funkcija ispravljača definirana je kako slijedi:

  • Ako je ulazna vrijednost manja od 0, tada funkcija izlazi0
  • Ako nije, funkcija daje svoju ulaznu vrijednost

Evo matematičkog objašnjenja ovog pojma:

Funkcije ispravljača

Funkcije ispravljača često se nazivaju Rectified Linear Unitaktivacijskim funkcijama ili ReLUsskraćeno.

Funkcija hiperboličke tangente

Funkcija hiperboličke tangente jedina je aktivacijska funkcija uključena u ovaj vodič koja se temelji na trigonometrijskom identitetu.

Matematička je definicija u nastavku:

Funkcija hiperboličke tangente

Funkcija hiperboličke tangente po izgledu je slična sigmoidnoj funkciji, ali su sve izlazne vrijednosti pomaknute prema dolje.

Kako doista funkcioniraju neuronske mreže?

Do sada smo u ovom uputstvu raspravljali o dva gradivna elementa za izgradnju neuronskih mreža:

  • Neuroni
  • Aktivacijske funkcije

Međutim, vjerojatno ste još uvijek pomalo zbunjeni kako neuronske mreže stvarno rade.

Ovaj će vodič sastaviti dijelove o kojima smo već razgovarali kako biste mogli razumjeti kako neuronske mreže rade u praksi.

Primjer koji ćemo koristiti u ovom vodiču

Ovaj će vodič raditi na primjeru iz stvarnog svijeta korak po korak kako biste mogli razumjeti kako neuronske mreže daju predviđanja.

Točnije, bavit ćemo se procjenama imovine.

Vjerojatno već znate da postoji mnoštvo čimbenika koji utječu na cijene kuća, uključujući ekonomiju, kamatne stope, broj spavaćih soba / kupaonica i mjesto.

Visoka dimenzionalnost ovog skupa podataka čini ga zanimljivim kandidatom za izgradnju i trening neuronske mreže na.

Jedno upozorenje u vezi s ovim odjeljkom je neuronska mreža koju ćemo koristiti za predviđanje već je obučena . Proces obuke nove neuronske mreže istražit ćemo u sljedećem odjeljku ovog vodiča.

Parametri u našem skupu podataka

Počnimo s raspravom o parametrima u našem skupu podataka. Točnije, zamislimo da skup podataka sadrži sljedeće parametre:

  • Kvadratura
  • Spavaće sobe
  • Udaljenost do centra grada
  • Starost kuće

Ta će četiri parametra činiti ulazni sloj umjetne neuronske mreže. Imajte na umu da u stvarnosti vjerojatno postoji mnogo više parametara pomoću kojih biste mogli osposobiti neuronsku mrežu za predviđanje cijena stanova. Ograničili smo ovaj broj na četiri kako bi primjer bio relativno jednostavan.

Najosnovniji oblik neuronske mreže

U svom najosnovnijem obliku, neuronska mreža ima samo dva sloja - ulazni i izlazni sloj. Izlazni sloj komponenta je neuronske mreže koja zapravo predviđa.

Na primjer, ako želite prognozirati pomoću jednostavnog ponderiranog zbroja (koji se naziva i linearna regresija), vaša će neuronska mreža poprimiti sljedeći oblik:

Osnovna neuronska mreža

Iako je ovaj dijagram pomalo apstraktan, poanta je u tome da se većina neuronskih mreža može vizualizirati na ovaj način:

  • Ulazni sloj
  • Moguće neki skriveni slojevi
  • Izlazni sloj

Skriveni sloj neurona uzrokuje da su neuronske mreže toliko moćne za izračunavanje predviđanja.

Za svaki neuron u skrivenom sloju izvodi proračune koristeći neke (ili sve) neurone u posljednjem sloju neuronske mreže. Te se vrijednosti zatim koriste u sljedećem sloju neuronske mreže.

Svrha neurona u skrivenom sloju neuronske mreže

Vjerojatno se pitate - što točno znači svaki neuron u skrivenom sloju srednje ? Rečeno drugačije, kako bi stručnjaci za strojno učenje trebali tumačiti ove vrijednosti?

Općenito govoreći, neuroni u usrednjim slojevima neuronske mreže aktiviraju se (što znači da se njihova funkcija aktivacije vraća 1) za ulaznu vrijednost koja zadovoljava određena pod-svojstva.

Za naš model predviđanja cijena stanova jedan primjer mogu biti kuće s 5 spavaćih soba s malim udaljenostima od centra grada.

U većini drugih slučajeva opisivanje karakteristika zbog kojih bi se neuron u skrivenom sloju aktivirao nije tako lako.

Kako neuroni određuju svoje ulazne vrijednosti

Ranije u ovom uputstvu napisao sam "Za svaki neuron u skrivenom sloju izvodi proračune koristeći neke (ili sve) neurone u posljednjem sloju neuronske mreže."

To ilustrira važnu točku - da svaki neuron u neuronskoj mreži ne mora koristiti svaki neuron u prethodnom sloju.

Proces kroz koji neuroni određuju koje ulazne vrijednosti koristiti iz prethodnog sloja neuronske mreže naziva se trening modela. O treningu neuronskih mreža naučit ćemo više u sljedećem odjeljku ovog tečaja.

Vizualizacija procesa predviđanja neuronske mreže

Kada vizualiziramo neutralnu mrežu, obično povlačimo linije od prethodnog sloja do trenutnog sloja kad god prethodni neuron ima težinu iznad 0u formuli ponderiranog zbroja za trenutni neuron.

Sljedeća slika pomoći će vam to vizualizirati:

Završena neuronska mreža

Kao što vidite, nema svaki par neurona i neurona sinapsu. x4kao primjer hrani samo tri od pet neurona u skrivenom sloju. To ilustrira važnu točku prilikom izgradnje neuronskih mreža - da se svaki neuron u prethodnom sloju ne smije koristiti u sljedećem sloju neuronske mreže.

Kako se treniraju neuronske mreže

Do sada ste naučili sljedeće o neuronskim mrežama:

  • Da su sastavljeni od neurona
  • Da svaki neuron koristi aktivacijsku funkciju primijenjenu na ponderirani zbroj izlaza iz prethodnog sloja neuronske mreže
  • Širok pregled načina na koji neuronske mreže daju predviđanja

Još nismo obradili vrlo važan dio procesa inženjerstva neuronskih mreža: kako se treniraju neuronske mreže.

Sada ćete naučiti kako se treniraju neuronske mreže. Razgovarat ćemo o skupovima podataka, algoritmima i širokim načelima koji se koriste u obuci suvremenih neuronskih mreža koje rješavaju probleme iz stvarnog svijeta.

Tvrdo kodiranje nasuprot soft-kodiranju

Postoje dva glavna načina na koje možete razviti računalne aplikacije. Prije nego što istražite kako se treniraju neuronske mreže, važno je da razumijete razliku između hard-codingi soft-codingračunalnih programa.

Tvrdo kodiranje znači da izričito odredite ulazne varijable i željene izlazne varijable. Rečeno drugačije, tvrdo kodiranje ne ostavlja računalu prostor za tumačenje problema koji pokušavate riješiti.

Soft-kodiranje je potpuno suprotno. Ostavlja prostor programu da shvati što se događa u skupu podataka. Meko kodiranje omogućuje računalu da razvije vlastite pristupe rješavanju problema.

Ovdje je koristan određeni primjer. Evo dva slučaja kako možete identificirati mačke u skupu podataka pomoću tehnika mekog i tvrdog kodiranja.

  • Tvrdo kodiranje: koristite određene parametre za predviđanje je li životinja mačka. Točnije, možete reći da ako težina i duljina životinje budu unutar određenog
  • Mekano kodiranje: pružate skup podataka koji sadrži životinje označene njihovim vrstama vrsta i karakteristikama tih životinja. Zatim gradite računalni program za predviđanje je li životinja mačka na temelju karakteristika u skupu podataka.

Kao što možete zamisliti, trening neuronskih mreža spada u kategoriju soft-kodiranja. Imajte ovo na umu dok budete prolazili kroz ovaj tečaj.

Obuka neuronske mreže pomoću troškovne funkcije

Neuronske mreže treniraju se pomoću a cost function, što je jednadžba koja se koristi za mjerenje pogreške sadržane u predviđanju mreže.

Formula za funkciju troškova dubokog učenja (kojih je mnogo - ovo je samo jedan primjer) nalazi se u nastavku:

Jednadžba funkcije troškova

Napomena: ova funkcija troškova naziva se mean squared error, zbog čega se na lijevoj strani znaka jednakosti nalazi MSE.

Iako u ovoj jednadžbi ima dovoljno matematičke formule, najbolje je sažeti kako slijedi:

Take the difference between the predicted output value of an observation and the actual output value of that observation. Square that difference and divide it by 2.

Da ponovimo, imajte na umu da je ovo samo jedan primjer funkcije troškova koja bi se mogla koristiti u strojnom učenju (iako je doduše najpopularniji izbor). Izbor funkcije troška sam po sebi je složena i zanimljiva tema, a izvan opsega ovog vodiča.

Kao što je spomenuto, cilj umjetne neuronske mreže je minimizirati vrijednost funkcije troškova. Funkcija troškova smanjena je kada je predviđena vrijednost vašeg algoritma što je bliža stvarnoj vrijednosti. Rečeno drugačije, cilj neuronske mreže je minimizirati pogrešku koju čini u svojim predviđanjima!

Modificiranje neuronske mreže

Nakon što se stvori početna neuronska mreža i imputiraju se njezine troškovne funkcije, na neuronskoj mreži se uvode promjene da bi se vidjelo smanjuju li vrijednost troškovne funkcije.

Točnije, stvarna komponenta neuronske mreže koja je modificirana je težina svakog neurona u njegovoj sinapsi koja komunicira sa sljedećim slojem mreže.

Poziva se mehanizam putem kojeg se utezi modificiraju kako bi se neuronska mreža premjestila na utege s manje pogrešaka gradient descent. Za sada je dovoljno da shvatite da proces treninga neuronskih mreža izgleda ovako:

  • Dodijeljene su početne težine za ulazne vrijednosti svakog neurona
  • Predviđanja se izračunavaju pomoću ovih početnih vrijednosti
  • Predviđanja se unose u troškovnu funkciju za mjerenje pogreške neuronske mreže
  • Algoritam gradijentnog spuštanja mijenja težine ulaznih vrijednosti svakog neurona
  • Ovaj se postupak nastavlja sve dok se ponderi ne prestanu mijenjati (ili dok iznos njihove promjene na svakoj iteraciji ne padne ispod određenog praga)

Ovo se može činiti vrlo apstraktno - i to je u redu! Ovi se pojmovi obično u potpunosti razumiju tek kad započnete s treniranjem svojih prvih modela strojnog učenja.

Završne misli

U ovom vodiču naučili ste kako neuronske mreže izvršavaju proračune kako bi donijele korisna predviđanja.

Ako ste zainteresirani za učenje više o izgradnji, obuci i primjeni vrhunskog modela strojnog učenja, moja e-knjiga Pragmatično strojno učenje naučit će vas kako izraditi 9 različitih modela strojnog učenja pomoću projekata iz stvarnog svijeta.

Kôd iz e-knjige možete rasporediti na svoj GitHub ili osobni portfelj kako biste ga prikazali potencijalnim poslodavcima. Knjiga izlazi 3. kolovoza - predbilježite je za 50% popusta!