Računalniki Windows Internet

Nevronske mreže so žive. Kako ustvariti lastno nevronsko mrežo iz nič v Pythonu. Kaj so nevronske mreže

Na zaznamke

Povemo vam, kako v nekaj korakih ustvarite preprosto nevronsko mrežo in jo naučite prepoznati znane podjetnike na fotografijah.

Korak 0. Razumevanje delovanja nevronskih mrež

Najlažji način za razumevanje principov nevronskih mrež je uporaba primera Teachable Machine, Googlovega izobraževalnega projekta.

Kot vhodni podatek – kar mora obdelati nevronska mreža – Teachable Machine uporablja sliko iz kamere prenosnika. Kot rezultat - kaj mora nevronska mreža narediti po obdelavi dohodnih podatkov - lahko uporabite gif ali zvok.

Teachable Machine lahko na primer naučite reči "Živjo", ko je dlan dvignjena. Z dvignjenim palcem - "Kul" in s presenečenim obrazom z odprtimi usti - "Vau".

Najprej morate usposobiti nevronsko mrežo. Če želite to narediti, dvignite dlan in pritisnite gumb "Train Green" - storitev posname več deset slik, da najde vzorec na slikah. Niz takih slik se običajno imenuje "nabor podatkov".

Zdaj morate izbrati dejanje, ki naj se kliče, ko je slika prepoznana - izgovorite frazo, pokažite GIF ali predvajajte zvok. Podobno treniramo nevronsko mrežo, da prepozna presenečen obraz in palec.

Ko je nevronska mreža usposobljena, jo je mogoče uporabiti. Teachable Machine prikazuje koeficient "zaupanja" - kako "zavesten" je sistem, da mu je prikazana ena od veščin.

Kratek video o delovanju Teachable Machine

Korak 1. Pripravite računalnik za delo z nevronsko mrežo

Zdaj bomo izdelali lastno nevronsko mrežo, ki bo ob pošiljanju slike poročala, kaj je prikazano na sliki. Najprej bomo nevronsko mrežo naučili prepoznati rože na sliki: kamilica, sončnica, regrat, tulipan ali vrtnica.

Za ustvarjanje lastne nevronske mreže boste potrebovali Python - enega najbolj minimalističnih in pogostih programskih jezikov, in TensorFlow - Googlovo odprto knjižnico za ustvarjanje in usposabljanje nevronskih mrež.

V zadnjem času je kar nekaj rešitev z uporabo nevronskih mrež: aplikacije, storitve, programi uporabljajo tovrstna omrežja za pospešitev reševanja različnih problemov. Toda kaj je nevronska mreža? Uredniki AIN.UA so se odločili ugotoviti, kaj je ta priljubljena tehnologija, od kod prihaja in kako deluje.

Nevronske mreže je težko imenovati svež tehnološki trend. Prva iskanja znanstvene misli na tem področju segajo v sredino 20. stoletja, ko so se vodilni umi tiste dobe odločili, da bi bilo dobro zgraditi računalnik na podlagi naravnih dosežkov matere narave. Predvsem s kopiranjem nekaterih principov človeških možganov.

Ustvarjanje tehničnega analoga našega naravnega bioračunalnika ni bilo enostavno, saj je šlo skozi obdobja povečanega zanimanja in zatona. To je razloženo z dejstvom, da stopnja tehnološkega napredka v petdesetih letih prejšnjega stoletja, ko se je vse začelo, ni sledila poletu znanstvene misli: oblikovanje prvih nevronskih mrež jim ni omogočilo, da bi dosegle svoj polni potencial.

In kako deluje

Povprečni človeški možgani so sestavljeni iz približno 86 milijard nevronov, povezanih v enoten sistem za sprejemanje, obdelavo in nadaljnji prenos podatkov. V tem omrežju vsak nevron deluje kot nekaj podobnega mikroprocesorju, na katerega se narišejo dendriti - procesi za sprejemanje impulzov. Obstaja tudi izhod v obliki aksona, ki prenaša prejete impulze na druge nevrone.

Umetno ustvarjena nevronska mreža (ANN) posnema proces obdelave informacij biološkega analoga in je niz miniprocesorjev, razdeljenih v tri skupine:

  • Vstopne točke (senzorji) so nevroni, preko katerih v ANN vstopajo informacije za obdelavo.
  • Izhodne točke (reaktivne) so nevroni, preko katerih ANN proizvede končni rezultat.
  • Skriti nevroni (asociativni) - delujoč niz nevronov, ki se nahajajo med vstopno in izstopno točko.

Glavno delo pri obdelavi informacij poteka na ravni skritih (asociativnih) nevronov. Njihov niz je urejen v več plasteh in več kot jih je, bolj natančna obdelava podatkov lahko ustvari ANN.

Shema perceptrona - najenostavnejše enoslojne nevronske mreže

Ni mogoče programirati

Značilnost nevronskih mrež je dejstvo, da niso programirane, ampak usposobljene. Na podlagi tega so ANN razdeljeni v tri kategorije - učljive, samoučeče se in mešane ANN.

Izurjena nevronska mreža, tako kot otrok, ki spoznava svet, nenehno zahteva veliko pozornost in povratne informacije svojega ustvarjalca. Pri delu z njim raziskovalec ANN zagotovi niz podatkov, nato pa ji ponudi rešitev problema z vnaprej določenim odgovorom. Obe rešitvi – prvotno pravilni in predlagani s strani nevronske mreže – sta primerjani. Če razlika med njima presega dopustni faktor napake, raziskovalec prilagodi nevronsko mrežo, po kateri se proces učenja nadaljuje.

Samoučeče se ANN učijo sveta brez mentorjev, pri čemer uporabljajo dani algoritem za svoje učenje. Po prejemu naloge nevronska mreža sama poišče odgovor, popravi storjene napake in se po potrebi "vrne nazaj" vzdolž verige asociativnih nevronov do zadnjega pravilnega koraka, da začne znova.

Spodnji videoposnetek prikazuje rezultat 24-urne samoučne seje INS v Super Mariu, kjer je bil zastavljen cilj doseči najvišjo oceno, ki se podeli med premikanjem skozi stopnjo. Dlje kot ji je uspelo iti, višji je bil končni rezultat. Kot vhode je raziskovalec uporabil elemente zemljevida in nasprotnike, kot izhode pa dejanja, ki so na voljo igralcu.

Toda ta isti, rahlo prilagojeni ANN obvladuje za volanom druge igre - Mario Kart.

Sami se lahko preizkusite v vlogi testerja nevronske mreže z uporabo preproste, ki simulira gibanje avtomobilov z avtopilotom. Avtomobili se premikajo pod nadzorom dveh nevronskih mrež in upoštevajo osnovna pravila - premikajte se naprej in se izogibajte trčenju.

Vaša naloga je, da jim ustvarite ovire in vidite, kako se avtopilot uspešno spopada z njimi, ter se mentalno pripravite na pojav podobnih dronov Uberja in konkurenčnih podjetij na ulicah vašega mesta.

V središču vsega so algoritmi, ki jih je ustvarila narava

Ko govorimo o nevronskih mrežah in njihovem usposabljanju, ne moremo omeniti naravnega pojava, kot je algoritem mravelj, ki ga lahko dobesedno vidite na dvorišču lastne hiše.

Pri premikanju v iskanju hrane iz gnezda in nazaj mravlje ves čas iščejo najbolj ergonomsko pot, v primeru motenj pa svojo pot prilagodijo spremenjenim razmeram. Med gibanjem mravlja za seboj pušča sled posebnega feromona. Nadaljnji lovci na hrano sledijo poti, ki jo je zapustil pionir, in jo tudi nasičijo z biološkim "svetilnikom".

Recimo, da imajo mravlje na poti do hrane oviro, ki jo lahko obidejo po desni ali levi strani. Na levi strani je razdalja do vira hrane krajša. Kljub temu, da bodo v prvih iteracijah mravlje prešle na obeh straneh ovire, bo zaradi kratke razdalje do nasičenja levega feromona prišlo hitreje.

Kaj to pomeni? V kasnejših iteracijah bo leva pot, kot najbolj ergonomska, edina uporabljena, ko se bodo mravlje zbiralke premikale. Podobno poteka proces učenja v umetni nevronski mreži.

Zakaj ANN še vedno ni AI

Ne glede na to, kako »pametna« je nevronska mreža, ostaja ne umetna inteligenca, temveč orodje za naloge klasifikacije podatkov. Seveda smo lahko presenečeni, kako iskalnik prepozna določeno kombinacijo besed in nato na podlagi nje izbere slike z mačkami, ki jih potrebujemo, vendar to ni rezultat miselne aktivnosti nevroračunalnika, ampak le sinergija več klasifikatorjev.

Mreža nevronov v človeških možganih kljub trdovratnemu prepričanju vsake starejše generacije v degradacijo mlajše ostaja veliko bolj kompleksna od formalne strukture ANN in zaradi ogromnega števila in variabilnosti povezav lahko reševati probleme na nestandarden način, izven vzorcev, ki jih začrtajo pravila in formule.

Preprosto povedano, Aleksander Veliki bi lahko presekal gordijski vozel že zdaj. Nevronska mreža ni.

AIN.UA je že poročal o nemškem umetniku, ki je razvil tisk na oblačilih, namenjen zaščiti ljudi pred prepoznavanjem obraza prek nevronskih mrež.

Če želite prejemati novice na Facebooku, kliknite "Všeč mi je"

Umetna nevronska mreža je zbirka nevronov, ki medsebojno delujejo. Sposobni so sprejemati, obdelovati in ustvarjati podatke. Težko si ga je predstavljati kot delo človeških možganov. Nevronska mreža v naših možganih deluje tako, da lahko zdaj berete to: naši nevroni prepoznajo črke in jih ubesedijo.

Umetna nevronska mreža je kot možgani. Prvotno je bil programiran za poenostavitev nekaterih zapletenih računalniških procesov. Danes imajo nevronske mreže veliko več možnosti. Nekateri od njih so na vašem pametnem telefonu. Drugi del je že zabeležil v svoji bazi, da ste odprli ta članek. Kako vse to poteka in zakaj, preberite dalje.

Kako se je vse začelo

Ljudje so resnično želeli razumeti, od kod prihaja človekov um in kako delujejo možgani. Sredi prejšnjega stoletja je to razumel kanadski nevropsiholog Donald Hebb. Hebb je preučeval interakcijo nevronov med seboj, raziskoval princip, po katerem so združeni v skupine (znanstveno - ansamble) in predlagal prvi algoritem v znanosti za šolanje nevronskih mrež.

Nekaj ​​let kasneje je skupina ameriških znanstvenikov modelirala umetno nevronsko mrežo, ki je lahko razlikovala kvadratne oblike od drugih oblik.

Kako deluje nevronska mreža?

Raziskovalci so ugotovili, da je nevronska mreža skupek plasti nevronov, od katerih je vsaka odgovorna za prepoznavanje določenega kriterija: oblike, barve, velikosti, teksture, zvoka, glasnosti itd. Leto za letom, kot rezultat milijonov poskusov in na tone izračunov so najpreprostejšemu omrežju dodajali nove in nove plasti nevronov. Pri delu se izmenjujejo. Na primer, prvi ugotovi, ali kvadrat je ali ni kvadrat, drugi razume, ali je kvadrat rdeč ali ne, tretji izračuna velikost kvadrata itd. Ne kvadrati, ne rdeče in neustrezno velike figure padejo v nove skupine nevronov in jih ti pregledujejo.

Kaj so nevronske mreže in kaj zmorejo?

Znanstveniki so razvili nevronske mreže, tako da so se naučili razlikovati med kompleksnimi slikami, videi, besedili in govorom. Danes obstaja veliko vrst nevronskih mrež. Razvrščeni so glede na arhitekturo - nize podatkovnih parametrov in težo teh parametrov, določeno prioriteto. Spodaj je nekaj izmed njih.

Konvolucijske nevronske mreže

Nevroni so razdeljeni v skupine, vsaka skupina izračuna lastnost, ki ji je dana. Leta 1993 je francoski znanstvenik Jan LeCun svetu pokazal LeNet 1, prvo konvolucijsko nevronsko mrežo, ki je lahko hitro in natančno prepoznala ročno napisana števila na papirju. Prepričajte se sami:

Danes se konvolucijske nevronske mreže uporabljajo predvsem za multimedijske namene: delujejo z grafiko, zvokom in videom.

Ponavljajoče se nevronske mreže

Nevroni si dosledno zapomnijo informacije in na podlagi teh podatkov gradijo nadaljnja dejanja. Leta 1997 so nemški znanstveniki najenostavnejša ponavljajoča se omrežja spremenili v omrežja z dolgim ​​kratkoročnim spominom. Na njihovi podlagi so nato razvili mreže z nadzorovanimi ponavljajočimi se nevroni.

Danes se s pomočjo takšnih omrežij pišejo in prevajajo besedila, programirajo bote, ki vodijo smiselne dialoge z osebo, ustvarjajo kode za strani in programe.

Uporaba te vrste nevronskih mrež je zmožnost analiziranja in ustvarjanja podatkov, zbiranja baz podatkov in celo napovedovanja.

Leta 2015 je SwiftKey izdal prvo tipkovnico na svetu, ki jo poganja ponavljajoča se nevronska mreža z nadzorovanimi nevroni. Nato je sistem dajal namige v procesu tipkanja glede na zadnje vnesene besede. Lani so razvijalci usposobili nevronsko mrežo, da se nauči konteksta vtipkanega besedila, in namigi so postali smiselni in uporabni:

Kombinirane nevronske mreže (konvolucijske + ponavljajoče se)

Takšne nevronske mreže so sposobne razumeti, kaj je na sliki, in to opisati. In obratno: rišite slike po opisu. Najbolj jasen primer je pokazal Kyle Macdonald, ki se je z nevronsko mrežo sprehodil po Amsterdamu. Omrežje je takoj ugotovilo, kaj je pred njim. In skoraj vedno točno:

Nevronske mreže se nenehno samoučijo.

S tem postopkom:

1. Skype je uvedel možnost simultanega prevajanja za 10 jezikov. Med katerimi sta za trenutek ruščina in japonščina - ena najtežjih na svetu. Seveda je treba kakovost prevoda resno izboljšati, a že dejstvo, da lahko že zdaj komunicirate s kolegi iz Japonske v ruščini in ste prepričani, da vas bodo razumeli, je navdihujoče.

2. Yandex je ustvaril dva iskalna algoritma, ki temeljita na nevronskih mrežah: Palekh in Korolev. Prvi je pomagal najti najbolj ustrezna mesta za nizkofrekvenčne poizvedbe. "Palekh" je preučeval naslove strani in primerjal njihov pomen s pomenom zahtev. Na podlagi Palekha se je pojavil Korolev. Ta algoritem ne oceni samo naslova, ampak tudi celotno besedilno vsebino strani. Iskanje postaja natančnejše, lastniki spletnih mest pa začnejo bolj inteligentno pristopati k vsebini strani.

3. Kolegi strokovnjakov za SEO iz Yandexa so ustvarili glasbeno nevronsko mrežo: sestavlja poezijo in piše glasbo. Nevroskupina se simbolično imenuje Neurona in ima že svoj prvi album:

4. Google Inbox uporablja nevronska omrežja za odgovor na sporočilo. Razvoj tehnologije je v polnem teku in danes omrežje že preučuje korespondenco in generira možne odgovore. Ne morete izgubljati časa s tipkanjem in se ne bojite, da boste pozabili kakšen pomemben dogovor.

5. YouTube za razvrščanje videoposnetkov uporablja nevronske mreže in to po dveh principih hkrati: ena nevronska mreža proučuje videe in odzive občinstva nanje, druga izvaja raziskave uporabnikov in njihovih preferenc. Zato so YouTubova priporočila vedno na temo.

6. Facebook aktivno dela na DeepText AI - komunikacijskem programu, ki razume žargon in čisti klepete pred nespodobnim besediščem.

7. Aplikacije, kot sta Prisma in Fabby, zgrajene na nevronskih mrežah, ustvarjajo slike in videe:

Colorize povrne barve črno-belim fotografijam (presenečite babico!).

MakeUp Plus izbere popolno šminko za dekleta iz resnične palete pravih blagovnih znamk: Bobbi Brown, Clinique, Lancome in YSL že poslujejo.

Apple in Microsoft nenehno nadgrajujeta svojo nevronsko Siri in Contano.

Umetna nevronska mreža

Zaenkrat le sledijo našim ukazom, v bližnji prihodnosti pa bodo začeli prevzemati pobudo: dajati priporočila in predvidevati naše želje.

In kaj nas še čaka v prihodnosti?

Samoučeče se nevronske mreže lahko nadomestijo ljudi: začele bodo s tekstopisci in lektorji. Že zdaj roboti ustvarjajo besedila s pomenom in brez napak. In to počnejo veliko hitreje kot ljudje. Nadaljevali bodo z zaposlenimi v klicnih centrih, tehnični podpori, moderatorji in skrbniki javnosti na družbenih omrežjih. Nevronske mreže se že znajo naučiti scenarija in ga predvajati z vašim glasom. Kaj pa na drugih področjih?

Kmetijski sektor

Nevronska mreža bo implementirana v posebni opremi. Kombajni bodo avtopilotirali, skenirali rastline in preučevali zemljo ter prenašali podatke v nevronsko mrežo. Odločila se bo - zalivati, gnojiti ali škropiti pred škodljivci. Namesto nekaj deset delavcev bosta potrebna največ dva strokovnjaka: nadzorni in tehnični.

Zdravilo

Microsoft zdaj aktivno dela na ustvarjanju zdravila za raka. Znanstveniki se ukvarjajo z bioprogramiranjem - poskušajo digitalizirati proces nastanka in razvoja tumorjev. Ko bo vse delovalo, bodo programerji lahko našli način za blokiranje takega procesa, po analogiji bo ustvarjeno zdravilo.

Trženje

Trženje je zelo personalizirano. Nevronske mreže lahko že v nekaj sekundah določijo, kateremu uporabniku, katero vsebino in po kakšni ceni prikazati. V prihodnosti bo sodelovanje tržnika v procesu zmanjšano na minimum: nevronske mreže bodo na podlagi podatkov o vedenju uporabnikov napovedovale zahteve, skenirale trg in izdale najprimernejše ponudbe do trenutka, ko bo človek razmišljal o nakupu.

E-poslovanje

E-trgovina se bo izvajala povsod. Ni vam več treba iti v spletno trgovino s povezavo: vse lahko kupite tam, kjer vidite, z enim klikom.

Na primer, ta članek berete nekaj let pozneje. Zelo vam je všeč šminka na zaslonu iz aplikacije MakeUp Plus (glejte zgoraj). Kliknete nanjo in greste naravnost v košarico. Ali pa si oglejte videoposnetek o najnovejših Hololens (očala za mešano resničnost) in naročite neposredno na YouTubu.

Skoraj na vseh področjih bodo cenjeni strokovnjaki z znanjem ali vsaj razumevanjem strukture nevronskih mrež, strojnega učenja in sistemov umetne inteligence. Obstajali bomo ob boku robotov. In več kot vemo o njih, mirneje bomo živeli.

P.S. Zinaida Falls je Yandexova nevronska mreža, ki piše poezijo. Ocenite delo, ki ga je stroj napisal, ko se je učil pri Majakovskem (črkovanje in ločila ohranjena):

« to»

to je
samo
nekaj
v prihodnosti
in moč
ta oseba
ali je vse ali ni
vse naokrog je kri
dogovor
rediti se
slava pri
zemljišče
z razpoko v kljunu

Impresivno, kajne?

Nevronske mreže za telebane

Danes na vsakem vogalu, tu in tam, kričijo o prednostih nevronskih mrež. Toda kaj je, le redki zares razumejo. Če se po pojasnila obrnete na Wikipedijo, se vam bo zvrtelo v glavi od višine tam zgrajenih citadel znanstvenih izrazov in definicij. Če ste daleč od genskega inženiringa in zmeden suh jezik univerzitetnih učbenikov povzroča samo zmedo in nobenih idej, potem poskusimo skupaj razumeti problem nevronskih mrež.

Če so človeški možgani sestavljeni iz nevronov, potem se pogojno strinjamo, da je elektronski nevron nekakšna namišljena škatla, ki ima veliko vhodov in en izhod.

Notranji algoritem nevrona določa postopek za obdelavo in analizo prejetih informacij ter njihovo pretvorbo v enotno uporabno zbirko znanja. Odvisno od tega, kako dobro delujejo vhodi in izhodi, celoten sistem bodisi razmišlja hitro ali, nasprotno, lahko upočasni.

Pomembno

Ko pišete primarno kodo, morate svoja dejanja razložiti dobesedno na prste. Če delamo na primer s slikami, potem bo na prvi stopnji vrednost za nas njegova velikost in razred. Če nam prva značilnost pove število vnosov, potem bo druga pomagala nevronski mreži sami pri obravnavi informacij.

Nevronske mreže: kaj je in kako deluje

V idealnem primeru bo nevronska mreža po nalaganju primarnih podatkov in primerjavi topologije razredov lahko sama razvrstila nove informacije. Recimo, da se odločimo naložiti sliko velikosti 3x5 slikovnih pik. Preprosta aritmetika nam bo povedala, da bo vnosov 3*5=15. In sama razvrstitev bo določila skupno število izhodov, tj. nevroni. Drug primer: nevronska mreža mora prepoznati črko "C". Navedeni prag se popolnoma ujema s črko, to bo zahtevalo en nevron s številom vhodov, ki je enako velikosti slike.

Kot pri vsakem treningu je treba učenca za napačen odgovor kaznovati, za pravilnega pa ne bomo dali ničesar. Če program zazna pravilen odgovor kot False, potem povečamo utež vnosa za vsako sinapso. Če pa, nasprotno, z napačnim rezultatom program meni, da je rezultat pozitiven ali True, potem od vsakega vnosa v nevron odštejemo težo. Bolj logično je, da se učenja začnemo s spoznavanjem simbola, ki ga potrebujemo. Prvi rezultat bo napačen, z rahlim popravkom kode pa bo program med nadaljnjim delom deloval pravilno. Navedeni primer algoritma za izdelavo kode za nevronsko mrežo se imenuje parsetron.

nevronske mreže

Nevronske mreže za telebane

Danes na vsakem vogalu, tu in tam, kričijo o prednostih nevronskih mrež. Toda kaj je, le redki zares razumejo.

Pisanje lastne nevronske mreže: vodnik po korakih

Če se po pojasnila obrnete na Wikipedijo, se vam bo zvrtelo v glavi od višine tam zgrajenih citadel znanstvenih izrazov in definicij. Če ste daleč od genskega inženiringa in zmeden suh jezik univerzitetnih učbenikov povzroča samo zmedo in nobenih idej, potem poskusimo skupaj razumeti problem nevronskih mrež.

Da bi razumeli težavo, morate ugotoviti glavni vzrok, ki je povsem na površini. Ko se spomnimo Sarah Connor, s srhom razumemo, da sta nekoč pionirja računalniškega razvoja Warren McCulloch in Walter Pitts sledila sebičnemu cilju ustvariti prvo umetno inteligenco.

Nevronske mreže so elektronski prototip samoučečega se sistema. Tako kot otrok tudi nevronska mreža absorbira informacije, jih prežvečuje, pridobiva izkušnje in se uči. V učnem procesu se takšno omrežje razvija, raste in lahko samostojno sklepa in sprejema odločitve.

Če so človeški možgani sestavljeni iz nevronov, potem se pogojno strinjamo, da je elektronski nevron nekakšna namišljena škatla, ki ima veliko vhodov in en izhod. Notranji algoritem nevrona določa postopek za obdelavo in analizo prejetih informacij ter njihovo pretvorbo v enotno uporabno zbirko znanja. Odvisno od tega, kako dobro delujejo vhodi in izhodi, celoten sistem bodisi razmišlja hitro ali, nasprotno, lahko upočasni.

Pomembno: V nevronskih mrežah se praviloma uporabljajo analogne informacije.

Ponavljamo, da je lahko vhodnih informacijskih tokov veliko (v znanstvenem smislu se ta povezava začetne informacije in našega »nevrona« imenuje sinapse), vsi pa so različne narave in neenakega pomena. Na primer, človek zaznava svet okoli sebe skozi organe vida, dotika in vonja. Logično je, da je vid pomembnejši od vonja. Na podlagi različnih življenjskih situacij uporabljamo določene čute: v popolni temi prideta do izraza dotik in sluh. Sinapse v nevronskih mrežah bodo po isti analogiji v različnih situacijah imele različen pomen, ki se običajno označuje s težo povezave. Pri pisanju kode je nastavljen minimalni prag za posredovanje informacij. Če je utež povezave višja od podane vrednosti, je rezultat preverjanja nevrona pozitiven (in v binarnem sistemu enak ena), če je manjša, je negativen. Logično je, da višje ko je letvica postavljena, natančnejše bo delo nevronske mreže, a dlje bo trajalo.

Da bi nevronska mreža delovala pravilno, morate porabiti čas za njeno usposabljanje - to je glavna razlika od preprostih programabilnih algoritmov. Nevronska mreža tako kot majhen otrok potrebuje začetno informacijsko bazo, a če je začetna koda pravilno napisana, potem nevronska mreža sama ne bo sposobna samo narediti prave izbire iz razpoložljivih informacij, ampak tudi zgraditi neodvisne predpostavke.

Ko pišete primarno kodo, morate svoja dejanja razložiti dobesedno na prste. Če delamo na primer s slikami, potem bo na prvi stopnji vrednost za nas njegova velikost in razred. Če nam prva značilnost pove število vnosov, potem bo druga pomagala nevronski mreži sami pri obravnavi informacij. V idealnem primeru bo nevronska mreža po nalaganju primarnih podatkov in primerjavi topologije razredov lahko sama razvrstila nove informacije. Recimo, da se odločimo naložiti sliko velikosti 3x5 slikovnih pik. Preprosta aritmetika nam bo povedala, da bo vnosov 3*5=15. In sama razvrstitev bo določila skupno število izhodov, tj. nevroni. Drug primer: nevronska mreža mora prepoznati črko "C". Navedeni prag se popolnoma ujema s črko, to bo zahtevalo en nevron s številom vhodov, ki je enako velikosti slike.

Recimo, da bo velikost enaka 3x5 slikovnih pik. S tem, ko programu podajamo različne slike črk ali številk, ga bomo naučili določiti podobo lika, ki ga potrebujemo.

Kot pri vsakem treningu je treba učenca za napačen odgovor kaznovati, za pravilnega pa ne bomo dali ničesar. Če program zazna pravilen odgovor kot False, potem povečamo utež vnosa za vsako sinapso. Če pa, nasprotno, z napačnim rezultatom program meni, da je rezultat pozitiven ali True, potem od vsakega vnosa v nevron odštejemo težo. Bolj logično je, da se učenja začnemo s spoznavanjem simbola, ki ga potrebujemo. Prvi rezultat bo napačen, z rahlim popravkom kode pa bo program med nadaljnjim delom deloval pravilno.

Navedeni primer algoritma za izdelavo kode za nevronsko mrežo se imenuje parsetron.

Obstajajo tudi bolj zapletene možnosti delovanja nevronskih mrež z vračanjem nepravilnih podatkov, njihovo analizo in logičnimi zaključki same mreže. Na primer, spletni napovedovalec prihodnosti je precej programirana nevronska mreža. Takšni programi se lahko učijo z učiteljem in brez njega in se imenujejo adaptivna resonanca. Njihovo bistvo je v tem, da imajo nevroni že svoje ideje o pričakovanju, kakšne informacije želijo prejeti in v kakšni obliki. Med pričakovanjem in resničnostjo je tanek prag tako imenovane budnosti nevronov, ki omrežju pomaga pravilno razvrstiti dohodne informacije in ne zamuditi niti enega piksla. Značilnost nevronske mreže AR je, da se že od samega začetka uči samostojno, samostojno določa prag nevronske vigilance. Kar pa igra vlogo pri razvrščanju informacij: bolj ko je mreža pozorna, bolj je natančna.

Prejeli smo same osnove znanja o tem, kaj so nevronske mreže. Zdaj pa poskusimo povzeti prejete informacije. Torej, nevronske mreže je elektronski prototip človeškega mišljenja. Sestavljeni so iz elektronskih nevronov in sinaps – informacije tečejo na vhodu in izhodu iz nevrona. Nevronske mreže se programirajo po principu učenja z učiteljem (programerjem, ki nalaga primarne informacije) ali samostojno (na podlagi predpostavk in pričakovanj od prejetih informacij, ki jih določi isti programer). S pomočjo nevronske mreže lahko ustvarite kateri koli sistem: od preprostega zaznavanja vzorcev na slikah slikovnih pik do psihodiagnostike in ekonomske analitike.

nevronske mreže,
metode analize podatkov:
od raziskav do razvoja in implementacije

domov
Storitve
Nevronske mreže
osnovne ideje
zmogljivosti
Prednosti

Kako uporabiti
programiranje
natančnost rešitve
NS in AI
Programi
Članki
Blog
O avtorju / kontakti

Pravilna postavka vprašanja bi morala biti naslednja: kako usposobiti lastno nevronsko mrežo? Omrežja vam ni treba napisati sami, vzeti morate eno od že pripravljenih izvedb, ki jih je veliko, prejšnji avtorji so dali povezave. A sama po sebi je ta izvedba kot računalnik, v katerega niso bili preneseni nobeni programi. Da bi omrežje rešilo vaš problem, ga je treba naučiti.

In tukaj je najpomembnejša stvar, ki jo potrebujete za to: PODATKI. Obstaja veliko primerov nalog, ki bodo vnesene v nevronsko mrežo, in pravilnih odgovorov na te naloge. Nevronska mreža se bo iz tega naučila neodvisno dati te pravilne odgovore.

In tukaj je veliko podrobnosti in odtenkov, ki jih morate poznati in razumeti, da bo vse to imelo možnost dati sprejemljiv rezultat. Tukaj je nerealno zajeti vse, zato bom le naštel nekaj točk. Prvič, količina podatkov. To je zelo pomembna točka. Velika podjetja, katerih dejavnosti so povezane s strojnim učenjem, običajno vsebujejo posebne oddelke in osebje, namenjeno samo zbiranju in obdelavi podatkov za usposabljanje nevronskih mrež. Pogosto je treba podatke kupiti, vsa ta aktivnost pa povzroči opazno stroškovno postavko. Drugič, predstavitev podatkov. Če je vsak objekt v vašem problemu predstavljen z relativno majhnim številom numeričnih parametrov, potem obstaja možnost, da jih je mogoče posredovati neposredno nevronski mreži v takšni surovi obliki in dobiti sprejemljiv rezultat. Če pa so predmeti zapleteni (slike, zvok, predmeti spremenljivih dimenzij), potem boste najverjetneje morali porabiti čas in trud za pridobivanje pomembnih lastnosti iz njih za problem, ki ga rešujete. Samo to lahko traja zelo dolgo in ima veliko večji vpliv na končni rezultat kot celo vrsta in arhitektura izbrane nevronske mreže.

Ni nenavadno, da so resnični podatki preveč surovi in ​​neprimerni za uporabo brez predhodne obdelave: vsebujejo vrzeli, šum, protislovja in napake.

Tudi podatke je treba zbirati ne kar tako, ampak kompetentno in premišljeno. V nasprotnem primeru se lahko izurjena mreža obnaša nenavadno in celo reši povsem drugačno nalogo, kot jo je avtor namenil.

Prav tako si morate predstavljati, kako kompetentno organizirati učni proces, da se omrežje ne izkaže za preobremenjeno. Kompleksnost omrežja je treba izbrati glede na dimenzijo podatkov in njihovo količino. Del podatkov je treba rezervirati za test in ne uporabiti med usposabljanjem, da lahko ocenimo dejansko kakovost dela. Včasih morate različnim predmetom iz nabora za usposabljanje dodeliti različne teže. Včasih je koristno spreminjati te uteži med učnim procesom. Včasih se je koristno začeti učiti na nekem podatku in ko se učite, dodajte preostale podatke. Na splošno lahko to primerjamo s kuhanjem: vsaka gospodinja ima svoje metode kuhanja, tudi za iste jedi.


Številni izrazi v nevronskih mrežah so povezani z biologijo, zato začnimo od začetka:

Možgani so zapletena stvar, vendar jih je mogoče razdeliti tudi na več glavnih delov in operacij:

Povzročitelj je lahko notranji(na primer slika ali ideja):

Zdaj pa poglejmo osnovno in poenostavljeno deli možgani:


Možgani so kot kabelsko omrežje.

Nevron- glavna računska enota v možganih, sprejema in obdeluje kemične signale drugih nevronov in glede na številne dejavnike ne naredi ničesar ali ustvari električni impulz ali akcijski potencial, ki nato pošlje signale sosednjim nevronom skozi sinapse povezano nevroni:

Sanje, spomini, samoregulirajoča gibanja, refleksi in pravzaprav vse, kar mislite ali počnete – vse se zgodi zahvaljujoč temu procesu: milijoni ali celo milijarde nevronov delujejo na različnih ravneh in ustvarjajo povezave, ki ustvarjajo različne vzporedne podsisteme in predstavljajo biološki zivcno omrezje. mreža.

Seveda so vse to poenostavitve in posplošitve, a zaradi njih lahko opišemo preprosto
zivcno omrezje:

In ga opišite formalizirano z grafom:

Tukaj je potrebno nekaj pojasnil. Krogi so nevroni, črte pa povezave med njimi,
in da ne bi komplicirali na tej stopnji, medsebojne povezave predstavljajo neposreden pretok informacij od leve proti desni. Prvi nevron je trenutno aktiven in je označen s sivo. Dodelili smo mu tudi številko (1, če deluje, 0, če ne deluje). Prikazane so številke med nevroni teža povezave.

Zgornji grafi prikazujejo čas omrežja, za natančnejši prikaz ga morate razdeliti na časovne intervale:

Če želite ustvariti lastno nevronsko mrežo, morate razumeti, kako uteži vplivajo na nevrone in kako se nevroni učijo. Za primer vzemimo zajca (testnega zajca) in ga postavimo v pogoje klasičnega poskusa.

Ko je vanje usmerjen varen tok zraka, zajci kot ljudje utripajo:

Ta vedenjski model je mogoče narisati z grafi:

Tako kot v prejšnjem diagramu tudi ti grafi prikazujejo samo trenutek, ko zajec začuti dih, mi pa tako kodirati puff kot logična vrednost. Poleg tega na podlagi vrednosti teže izračunamo, ali se drugi nevron sproži. Če je enako 1, potem se senzorični nevron sproži, mižimo; če je utež manjša od 1, ne utripamo: drugi nevron omejitev- 1.

Predstavimo še en element - varen zvočni signal:

Zanimanje za zajce lahko modeliramo takole:

Glavna razlika je v tem, da je zdaj teža nič, tako da nismo dobili migajočega zajca, no, vsaj še ne. Zdaj bomo naučili zajca utripati na ukaz, mešanje
dražilne snovi (pisk in dihanje):

Pomembno je, da se ti dogodki zgodijo ob različnih časih era, bo v grafih videti takole:

Sam zvok ne naredi ničesar, toda zračni tok še vedno povzroči, da zajec mežika, in to prikažemo z utežmi, pomnoženimi z dražljaji (rdeče).

izobraževanje kompleksno vedenje je mogoče poenostaviti kot postopno spreminjanje teže med povezanimi nevroni skozi čas.

Če želite izuriti zajca, ponovite korake:

Za prve tri poskuse bodo diagrami videti takole:

Upoštevajte, da se teža za zvočni dražljaj poveča po vsaki ponovitvi (označeno z rdečo), ta vrednost je zdaj poljubna - izbrali smo 0,30, vendar je številka lahko katera koli, tudi negativna. Po tretji ponovitvi ne boste opazili spremembe v vedenju zajca, po četrti ponovitvi pa se bo zgodilo nekaj neverjetnega – vedenje se bo spremenilo.

Odstranili smo izpostavljenost zraku, a zajec še vedno mežika, ko zasliši pisk! Naša zadnja shema lahko pojasni to vedenje:

Zajca smo naučili, da se na zvok odzove z mežikanjem.


V resničnem tovrstnem poskusu bo morda potrebnih več kot 60 ponovitev, da se doseže rezultat.

Zdaj bomo zapustili biološki svet možganov in zajcev in poskušali vse to prilagoditi
se naučili ustvariti umetno nevronsko mrežo. Najprej poskusimo opraviti preprosto nalogo.

Recimo, da imamo aparat s štirimi gumbi, ki ob pritisku na desni poda hrano.
gumbi (no, ali energija, če ste robot). Naloga je ugotoviti, kateri gumb daje nagrado:

Lahko (shematsko) prikažemo, kaj naredi gumb, ko ga pritisnemo takole:

Takšen problem je bolje rešiti kot celoto, zato si oglejmo vse možne rezultate, vključno s pravilnim:


Kliknite na 3. gumb, da dobite večerjo.

Da bi lahko reproducirali nevronsko mrežo v kodi, moramo najprej narediti model ali graf, v katerega je mogoče preslikati mrežo. Tukaj je en primeren graf za nalogo, poleg tega pa dobro prikazuje svojo biološko dvojnico:

Ta nevronska mreža preprosto prejme vhod – v tem primeru bo to zaznavanje, kateri gumb je bil pritisnjen. Nato omrežje nadomesti vhodne informacije z utežmi in na podlagi dodane plasti naredi sklep. Sliši se nekoliko zmedeno, a poglejmo, kako je gumb predstavljen v našem modelu:


Upoštevajte, da so vse uteži enake 0, zato je nevronska mreža, tako kot dojenček, popolnoma prazna, vendar popolnoma povezana.

Tako povežemo zunanji dogodek z vhodno plastjo nevronske mreže in izračunamo vrednost na njenem izhodu. Lahko se ujema z realnostjo ali pa ne, vendar bomo to za zdaj zanemarili in začeli opisovati nalogo na računalniku razumljiv način. Začnimo z vnosom uteži (uporabili bomo JavaScript):

Var vhodi = ; var uteži = ; // Za udobje lahko te vektorje pokličemo
Naslednji korak je ustvariti funkcijo, ki zbira vhodne vrednosti in uteži ter izračuna izhodno vrednost:

Funkcija evaluateNeuralNetwork(inputVector, weightVector)( var rezultat = 0; inputVector.forEach(function(inputValue, weightIndex) ( layerValue = inputValue*weightVector; rezultat += layerValue; )); return (result.toFixed(2)); ) / / Morda se zdi zapleteno, vendar vse, kar naredi, je ujemanje parov teža/vnos in dodajanje rezultata
Kot je pričakovano, če zaženemo to kodo, bomo dobili enak rezultat kot v našem modelu ali grafu ...

EvaluateNeuralNetwork(vhodi, uteži); // 0,00
Primer v živo: Neural Net 001.

Naslednji korak pri izboljšanju naše nevronske mreže bo način preverjanja lastnega izhoda ali posledičnih vrednosti, ki so primerljive z dejanskim stanjem,
najprej kodirajmo to posebno realnost v spremenljivko:

Za odkrivanje nedoslednosti (in koliko) bomo dodali funkcijo napake:

Napaka = resničnost - izhod nevronske mreže
Z njim lahko ocenimo delovanje naše nevronske mreže:

Toda še pomembneje - kaj pa situacije, ko realnost daje pozitiven rezultat?

Zdaj vemo, da naš model nevronske mreže ne deluje (in vemo, kako), super! In to je super, saj lahko zdaj s funkcijo napake nadzorujemo svoje usposabljanje. Vendar je vse smiselno, če ponovno definiramo funkcijo napake, kot sledi:

napaka= Želeni izhod- Izhod nevronske mreže
Subtilno, a pomembno razhajanje, ki tiho nakazuje, da bomo
uporabite pretekle rezultate za primerjavo s prihodnjimi dejanji
(in za učenje, kot bomo videli kasneje). To obstaja tudi v resničnem življenju, popolno
ponavljajočih se vzorcev, tako da lahko postane evolucijska strategija (no, v
večina primerov).

var input = ; var uteži = ; vardesiredResult = 1;
In nova funkcija:

Funkcija evaluateNeuralNetError(želeno,dejansko) ( return (želeno - dejansko); ) // Po ovrednotenju omrežja in napake bi dobili: // "Izhod nevronske mreže: 0,00 Napaka: 1"
Primer v živo: Neural Net 002.

Naj povzamemo. Začeli smo z nalogo, naredili njen preprost model v obliki biološke nevronske mreže in dobili način za merjenje njene uspešnosti v primerjavi z realnostjo oziroma želenim rezultatom. Zdaj moramo najti način, kako odpraviti nedoslednost – proces, ki ga lahko tako za računalnike kot za ljudi štejemo za učenje.

Kako usposobiti nevronsko mrežo?

Osnova urjenja tako bioloških kot umetnih nevronskih mrež je ponavljanje
in algoritmi učenja, zato bomo z njimi delali ločeno. Začnimo z
algoritmi učenja.

V naravi učne algoritme razumemo kot fizične ali kemijske spremembe
značilnosti nevronov po poskusih:

Dramatična ponazoritev tega, kako se dva nevrona sčasoma spremenita v kodi in našem modelu "učnega algoritma", pomeni, da bomo sčasoma samo spremenili stvari, da si olajšamo življenje. Zato dodajmo spremenljivko, ki bo pokazala, koliko lažje je življenje:

Spremembe stopnja učenja = 0,20; // Večja kot je vrednost, hitrejši bo proces učenja :)
In kaj bo spremenilo?

To bo spremenilo uteži (tako kot zajec!), zlasti težo izhoda, ki ga želimo dobiti:

Kako kodirati takšen algoritem, je vaša izbira, zaradi enostavnosti teži dodam faktor učenja, tukaj je v obliki funkcije:

Funkcija learn(inputVector, weightVector) ( weightVector.forEach(function(weight, index, weights) ( if (inputVector > 0) (weights = weight + learningRate; ) )); )
Ko jo uporabimo, bo ta funkcija vadbe preprosto dodala našo stopnjo učenja k vektorju teže aktivni nevron, pred in po vadbenem krogu (ali ponovitvi), bodo rezultati naslednji:

// Izvirni utežni vektor: // Izhod nevronske mreže: 0,00 Napaka: 1 učenje (vnos, uteži); // Nov vektor teže: // Izhod nevronske mreže: 0,20 Napaka: 0,8 // Če ni očiten, je izhod nevronske mreže blizu 1 (piščančji izhod) - kar smo želeli, zato lahko sklepamo, da premikajo v pravo smer
Primer v živo: Neural Net 003.

V redu, zdaj, ko se premikamo v pravo smer, bo zadnji del te uganke implementacija ponovitve.

Ni tako težko, v naravi vedno znova delamo isto stvar, v kodi pa le določimo število ponovitev:

Var poskusi = 6;
In uvedba funkcije števila ponovitev v našo vadbeno nevronsko mrežo bo izgledala takole:

Funkcija train(trials) ( za (i = 0; i< trials; i++) { neuralNetResult = evaluateNeuralNetwork(input, weights); learn(input, weights); } }
In tukaj je naše končno poročilo:

Izhod nevronske mreže: 0,00 Napaka: 1,00 Vektor teže: Izhod nevronske mreže: 0,20 Napaka: 0,80 Vektor teže: Izhod nevronske mreže: 0,40 Napaka: 0,60 Vektor teže: Izhod nevronske mreže: 0,60 Napaka: 0,40 Vektor teže: Izhod nevronske mreže: 0,80 Napaka : 0,20 Vektor teže: Izhod nevronske mreže: 1,00 Napaka: 0,00 Vektor teže: // Večerja s piščancem!
Primer v živo: Neural Net 004.

Zdaj imamo vektor teže, ki bo dal samo en rezultat (piščanec za večerjo), če se vhodni vektor ujema z realnostjo (pritisk tretjega gumba).

Kaj je torej kul, kar smo pravkar naredili?

V tem konkretnem primeru lahko naša nevronska mreža (po treningu) prepozna vnos in pove, kaj bo vodilo do želenega rezultata (še vedno bomo morali programirati specifične situacije):

Poleg tega je razširljiv model, igrača in orodje za naše učenje z vami. Naučili smo se lahko nekaj novega o strojnem učenju, nevronskih mrežah in umetni inteligenci.

Pozor uporabnikom:

  • Mehanizem za shranjevanje naučenih uteži ni predviden, zato bo ta nevronska mreža pozabila vse, kar ve. Pri posodabljanju ali ponovnem zagonu kode potrebujete vsaj šest uspešnih ponovitev, da se omrežje popolnoma usposobi, če mislite, da bo oseba ali stroj pritiskal gumbe v naključnem vrstnem redu ... To bo trajalo nekaj časa.
  • Biološka omrežja za učenje pomembnih stvari imajo stopnjo učenja 1, zato bo potrebna le ena uspešna ponovitev.
  • Obstaja učni algoritem, ki je zelo podoben biološkim nevronom, ima privlačno ime: widroff-hoff pravilo, oz usposabljanje widroff-hoff.
  • Nevronski pragovi (1 v našem primeru) in učinki prevelikega prilagajanja (pri velikem številu ponovitev bo rezultat večji od 1) niso upoštevani, vendar so po naravi zelo pomembni in so odgovorni za velike in kompleksne bloke vedenjskih odzivov. . Prav tako negativne uteži.

Opombe in bibliografija za nadaljnje branje

Poskušal sem se izogniti matematiki in strogim izrazom, a če se sprašujete, smo zgradili perceptron, ki je definiran kot algoritem nadzorovanega učenja (nadzorovano učenje) dvojnih klasifikatorjev - težke stvari.

Biološka zgradba možganov ni lahka tema, deloma zaradi netočnosti, deloma zaradi svoje kompleksnosti. Bolje je začeti z nevroznanostjo (Purves) in kognitivno nevroznanostjo (Gazzaniga). Spremenil in prilagodil sem primer zajca iz Gateway to Memory (Gluck), ki je tudi odličen vodnik v svet grafov.

Še en odličen vir, An Introduction to Neural Networks (Gurney), je odličen za vse vaše potrebe AI.

In zdaj v Pythonu! Hvala Ilyi Andshmidtu za zagotovitev različice Python:

Vhodi = uteži = želeni_rezultat = 1 stopnja_učenja = 0,2 poskusa = 6 def evaluate_neural_network(input_array, weight_array): rezultat = 0 za i v obsegu(len(input_array)): layer_value = input_array[i] * weight_array[i] rezultat += layer_value print("evaluate_neural_network: " + str(rezultat)) print("weights: " + str(weights)) vrni rezultat def evaluate_error(želeno, dejansko): napaka = želeno - dejansko print("evaluate_error: " + str(napaka) ) return error def learn(input_array, weight_array): print("learning...") for i in range(len(input_array)): if input_array[i] > 0: weight_array[i] += learning_rate def train(trials) ): za i v obsegu (poskusi): neural_net_result = evaluate_neural_network (inputs, weights) learn (inputs, weights) train (trials)
In zdaj na GO! Zasluge Kieranu Maherju za to različico.

Paket main import ("fmt" "math") func main() ( fmt.Println("Ustvarjanje vnosov in uteži ...") inputs:= float64(0.00, 0.00, 1.00, 0.00) weights:= float64(0.00, 0,00, 0,00, 0,00) želeno:= 1,00 learningRate:= 0,20 preizkusi:= 6 train(preskusi, vnosi, uteži, želeno, learningRate) ) func train(poskusi int, vnosi float64, uteži float64, želeni float64, learningRate float64) ( za i:= 1;i< trials; i++ { weights = learn(inputs, weights, learningRate) output:= evaluate(inputs, weights) errorResult:= evaluateError(desired, output) fmt.Print("Output: ") fmt.Print(math.Round(output*100) / 100) fmt.Print("\nError: ") fmt.Print(math.Round(errorResult*100) / 100) fmt.Print("\n\n") } } func learn(inputVector float64, weightVector float64, learningRate float64) float64 { for index, inputValue:= range inputVector { if inputValue >0.00 ( weightVector = weightVector + learningRate ) ) return weightVector ) func evaluate(inputVector float64, weightVector float64) float64 ( result:= 0.00 za indeks, inputValue:= obseg inputVector ( layerValue:= inputValue * weightVector rezultat = rezultat + layerValue ) vrni rezultat ) func evaluateError(želeno float64, dejansko float64) float64 (vrni želeno - dejansko)

Lahko pomagate in nakažete nekaj sredstev za razvoj spletnega mesta

 

Tokrat sem se odločil za študij nevronskih mrež. Poleti in jeseni 2015 sem lahko pridobil osnovne veščine na tem področju. Z osnovnimi veščinami mislim, da lahko sam ustvarim preprosto nevronsko mrežo iz nič. Primere lahko najdete v mojih repozitorijih GitHub. V tem članku bom podal nekaj pojasnil in delil vire, ki se vam bodo morda zdeli koristni za vaš študij.

1. korak: Nevroni in širjenje naprej

Kaj je torej "nevronska mreža"? Počakajmo s tem in najprej obravnavajmo en nevron.

Nevron je kot funkcija: sprejme več vhodov in vrne enega.

Krog spodaj predstavlja umetni nevron. Prejme 5 in vrne 1. Vhod je vsota treh sinaps, povezanih z nevronom (tri puščice na levi).

Na levi strani slike vidimo 2 vhodni vrednosti (zeleno) in odmik (označen rjavo).

Vhodni podatki so lahko numerične predstavitve dveh različnih lastnosti. Na primer, pri ustvarjanju filtra za neželeno pošto lahko pomenijo več kot eno besedo, napisano z VELIKimi ČRKAMI, in besedo "Viagra".

Vhodne vrednosti se pomnožijo s tako imenovanimi "utežmi", 7 in 3 (označeno z modro).

Zdaj dodamo dobljene vrednosti z odmikom in dobimo številko, v našem primeru 5 (označeno z rdečo). To je vnos našega umetnega nevrona.

Nato nevron izvede nekakšen izračun in ustvari izhodno vrednost. Dobili smo 1, ker zaokrožena vrednost sigmoide v točki 5 je 1 (več o tej funkciji kasneje).

Če bi bil to filter neželene pošte, bi dejstvo, da je rezultat 1, pomenilo, da je nevron besedilo označil kot neželeno pošto.

Ilustracija nevronske mreže iz Wikipedije.

Če te nevrone združiš, dobiš nevronsko mrežo, ki se širi naprej - proces gre od vhoda do izhoda, preko nevronov, ki so povezani s sinapsami, kot na sliki levo.

Korak 2. Sigmoid

Ko si ogledate vadnice Welch Labs, je dobro, da si ogledate četrti teden tečaja strojnega učenja Coursera o nevronskih mrežah, da boste lažje razumeli, kako delujejo. Tečaj sega globoko v matematiko in temelji na Octave, medtem ko je meni bolj všeč Python. Zaradi tega sem vaje izpustil in vse potrebno znanje dobil iz videa.

Sigmoid preprosto preslika vašo vrednost (na vodoravni osi) v segment od 0 do 1.

Zame je bila prva prednostna naloga preučevanje sigmoide, saj se pojavlja v mnogih vidikih nevronskih mrež. Nekaj ​​sem vedel o njej že iz tretjega tedna zgornjega tečaja, zato sem pregledal video od tam.

Toda sami videoposnetki vas ne bodo pripeljali daleč. Za popolno razumevanje sem se odločil, da ga kodiram sam. Tako sem začel pisati implementacijo algoritma logistične regresije (ki uporablja sigmoid).

Trajalo je cel dan in rezultat verjetno ne bo zadovoljiv. Ampak ni važno, ker sem ugotovil, kako vse deluje. Koda je vidna.

Ni vam treba tega storiti sami, ker zahteva posebno znanje - glavna stvar je, da razumete, kako deluje sigmoid.

Korak 3 Metoda povratnega razmnoževanja

Razumevanje delovanja nevronske mreže od vhoda do izhoda ni tako težko. Veliko težje je razumeti, kako se nevronska mreža usposablja na naborih podatkov. Načelo, ki sem ga uporabil, se imenuje povratno širjenje.

Na kratko: ocenite, kako napačno je omrežje in spremenite težo vnesenih vrednosti (modre številke na prvi sliki).

Postopek poteka od konca do konca, ko začnemo na koncu omrežja (poglejte, kako daleč ugibanje omrežja odstopa od resnice) in delamo vzvratno ter med potjo spreminjamo uteži, dokler ne dosežemo vnosa. Za ročni izračun je potrebno znanje matematične analize. Akademija Khan nudi dobre tečaje računanja, vendar sem se tega učil na univerzi. Prav tako se lahko ne trudite in uporabite knjižnice, ki vam bodo izračunale ves matan.

Posnetek zaslona iz vodnika Matta Mazurja za širjenje nazaj.

Tukaj so trije viri, ki so mi pomagali razumeti to metodo:

V procesu branja prvih dveh člankov se morate zagotovo kodirati, to vam bo pomagalo še naprej. In na splošno nevronskih mrež ni mogoče pravilno razumeti, če zanemarimo prakso. Tudi tretji članek je super, vendar je bolj enciklopedičen, saj je velik kot cela knjiga. Vsebuje podrobne razlage vseh pomembnih principov delovanja nevronskih mrež. Ti članki vam bodo pomagali tudi pri učenju konceptov, kot sta stroškovna funkcija in gradientni spust.

Korak 4. Ustvarite lastno nevronsko mrežo

Ko berete različne članke in vaje, boste tako ali drugače pisali majhne nevronske mreže. Priporočam prav to, saj je to zelo učinkovita metoda poučevanja.

Še en koristen članek