Šta je duboko učenje i zašto svi pričaju o tome? Neuronske mreže i duboko učenje: budućnost je blizu.

Prošlo je više od 20 godina od pojave pojma „dubinsko učenje“, ali se o njemu naširoko raspravlja tek nedavno. Ukratko objašnjavamo zašto se to dogodilo, šta je duboko učenje, po čemu se razlikuje od mašinskog učenja i zašto morate da znate o tome.

  • Šta je to?

    Duboko učenje je grana mašinskog učenja koja koristi model inspirisan strukturom mozga - interakcijom neurona.

    Sam termin se pojavio još 1980-ih, ali do 2012. nije bilo dovoljno kapaciteta za implementaciju ove tehnologije i gotovo niko nije obraćao pažnju na to. Nakon niza članaka poznatih naučnika, publikacija u naučnim časopisima, tehnologija je brzo postala popularna i privukla pažnju velikih medija - New York Times je prvi u svjetskim medijima pisao o tome. Jedan od razloga za materijal je bio naučni rad specijalisti sa Univerziteta u Torontu Alex Krizhevsky, Ilya Satskever i Jeff Hinton. Oni su opisali i analizirali rezultate ImageNet takmičenja u prepoznavanju slika, gdje je njihova neuronska mreža dubokog učenja pobijedila sa velikom razlikom - sistem je identificirao 85% objekata. Od tada je samo duboka neuronska mreža pobijedila na takmičenju.

  • Čekaj, šta je mašinsko učenje?

    Ovo je podpolje umjetne inteligencije i termin - oni opisuju metode za konstruiranje algoritama koji uče iz iskustva, bez pisanja poseban program. Odnosno, u ovom slučaju osoba ne treba da objašnjava mašini kako da reši problem, ona sama pronalazi odgovor, iz podataka koji su joj dostavljeni. Na primjer, ako želimo da algoritam detektuje lica, moramo mu pokazati deset hiljada različitih lica, zabilježiti tačno gdje se lice nalazi, a zatim će program naučiti da ga sam odredi.

    Mašina može da uči i uz pomoć nastavnika, kada on označi tačne odgovore za mašinu, i bez njega. Ali rezultati su bolji kada se uči sa nastavnikom. Svaki put kada se podaci obrađuju, sistem postaje precizniji.

  • Kako funkcioniše duboko učenje?

    Imitira apstraktno razmišljanje osobe i može generalizirati. Na primjer, mašinski obučena neuronska mreža ne prepoznaje dobro rukom pisana slova - i kako se ne bi zbunila u raznim pravopisima, sva se moraju učitati u nju.

    Duboko učenje koristi se u slučaju rada s višeslojnim umjetnim neuronskim mrežama i moći će se nositi s ovim zadatkom.

    Postoje tri termina novije vrijemečesto se koriste gotovo naizmjenično: umjetna inteligencija, strojno učenje i duboko učenje. Međutim, u stvari, ovo su „ugniježđeni“ pojmovi: umjetna inteligencija je sve što može pomoći kompjuteru u obavljanju ljudskih zadataka; mašinsko učenje je grana veštačke inteligencije u kojoj programi ne rešavaju samo probleme, već uče iz svog iskustva, a duboko učenje je grana mašinskog učenja koja proučava duboke neuronske mreže.

    Jednostavno rečeno: 1.ako ste napisali program koji igra šah, ovo je vještačka inteligencija; 2.ako istovremeno uči na osnovu igara velemajstora ili igrajući protiv sebe - to je mašinsko učenje; 3.a ako iz njega ne uči nešto, već duboka neuronska mreža, ovo je duboko učenje ".

  • Kako funkcioniše duboko učenje?

    Uzmimo jednostavan primjer - prikazat ćemo slike neuronske mreže dječaka i djevojčice. U prvom sloju, neuroni reaguju na jednostavne vizualne obrasce, kao što su promjene u svjetlini. Na drugom - složeniji: uglovi, krugovi. Do trećeg sloja, neuroni su u stanju da reaguju na natpise i ljudska lica. Za svaki sljedeći sloj definirane slike će biti teže. Neuronska mreža sama određuje koji su vizuelni elementi zainteresovani za rešavanje ovog problema, i rangira ih po važnosti kako bi bolje razumeli šta je prikazano na fotografiji u budućnosti.

  • I šta je već razvijeno s njim?

    Većina projekata dubokog učenja koristi se u foto ili audio prepoznavanju, dijagnostici bolesti. Na primjer, već se koristi u Google prijevodima sa slike: Tehnologija dubokog učenja omogućava vam da odredite postoje li slova na slici, a zatim ih prevodi. Drugi projekat koji radi sa fotografijama je sistem za prepoznavanje lica pod nazivom DeepFace. Ona je u stanju da prepozna ljudska lica sa tačnošću od 97,25% - otprilike sa istom tačnošću kao i osoba.

    Google je 2016. godine objavio WaveNet, sistem koji može oponašati ljudski govor. Da bi to uradila, kompanija je u sistem učitala milione minuta snimljenih glasovnih upita, koji su korišćeni u projektu OK Google, a nakon proučavanja, neuronska mreža je bila u stanju da sastavlja rečenice sa ispravnim akcentima, akcentima i bez nelogičnih pauza.

    Istovremeno, duboko učenje može semantički segmentirati sliku ili video – to jest, ne samo ukazati na to da se na slici nalazi objekt, već i idealno istaknuti njegove konture. Ova tehnologija se koristi u samovozećim automobilima, koji određuju da li postoje prepreke na putu, oznake i čitaju informacije sa putokaza kako bi se izbjegle nesreće. Neuronska mreža se koristi i u medicini - za određivanje dijabetičke retinopatije na osnovu fotografija očiju pacijenata, na primjer. Američko ministarstvo zdravlja već je odobrilo upotrebu ove tehnologije u javnim klinikama.

  • Zašto duboko učenje nije uvedeno ranije?

    Ranije je to bilo skupo, teško i dugotrajno - bili su potrebni snažni grafički procesori, video kartice i veličine memorije. Procvat dubokog učenja upravo je povezan sa raširenom upotrebom GPU-a koji ubrzavaju i smanjuju troškove računarstva, gotovo neograničenim mogućnostima skladištenja podataka i razvojem tehnologije “velikih podataka”.

  • Da li je ovo revolucionarna tehnologija, hoće li sve promijeniti?

    Teško je reći sa sigurnošću, mišljenja se razlikuju. S jedne strane, Google, Facebook i druge velike kompanije već su uložile milijarde dolara i optimistični su. Po njihovom mišljenju, neuronske mreže dubokog učenja mogu promijeniti tehnološku strukturu svijeta. Jedan od glavnih stručnjaka za mašinsko učenje - Andrew Yng - kaže: "Ako osoba može obaviti zadatak u svom umu u sekundi, najvjerovatnije će ovaj zadatak biti automatiziran u bliskoj budućnosti." Eung naziva mašinsko učenje „novom strujom“ – to je tehnološka revolucija, a kompanije koje je ignorišu vrlo brzo će se naći beznadežno iza konkurencije.

    S druge strane, postoje skeptici: oni vjeruju da je duboko učenje popularna riječ ili rebrendiranje neuronskih mreža. Na primjer, Sergej Bartunov, viši predavač na Fakultetu računarskih nauka HSE-a, smatra da je ovaj algoritam samo jedna od opcija (a ne i najbolja) za obuku neuronske mreže, koju su masovne publikacije brzo pokupile i koju su svi sada zna za.

    Sergej Nikolenko, koautor Deep Learning: „Istorija veštačke inteligencije već poznaje dve „zime“ kada je talas hypea i naduvanih očekivanja pratilo razočaranje. Oba puta je, inače, bio povezan sa neuronskim mrežama. Prvi put je odlučeno kasnih 1950-ih da će Rosenblattov perceptron odmah dovesti do mašinskog prevođenja i samosvesnih kompjutera; ali, naravno, nije išlo zbog ograničenja hardvera, podataka i nedostatka odgovarajućih modela.

    I u kasnim 1980-im, napravili su istu grešku kada su smislili kako trenirati bilo koju arhitekturu neuronskih mreža. Činilo se da je evo ga, zlatni ključ koji otvara svaka vrata. Ovo nije bio tako naivan zaključak: zaista, ako uzmete neuronsku mrežu iz kasnih 1980-ih, mehanički je povećate (povećate broj neurona) i obučite je na modernim skupovima podataka i modernom hardveru, ona će zaista raditi vrlo dobro! Ali u to vrijeme nisu bili dostupni ni podaci ni hardver, a revolucija dubokog učenja morala je biti odložena do kasnih 2000-ih.

    Sada živimo u trećem talasu hipe o veštačkoj inteligenciji. Hoće li se završiti trećom 'zimom' ili stvaranjem jake AI, samo će vrijeme pokazati."

  • Danas se mnogo govori i piše o umjetnim neuronskim mrežama, kako u kontekstu velikih podataka i strojnog učenja, tako i izvan njega. U ovom članku ćemo se podsjetiti značenja ovog koncepta, još jednom ocrtati opseg njegove primjene, a također ćemo govoriti o važnom pristupu koji je povezan s neuronskim mrežama - dubokom učenju, opisati njegov koncept, kao i prednosti i nedostatke u specifičnim slučajevima upotrebe.

    Šta je neuronska mreža?

    Kao što znate, koncept neuronske mreže (NN) dolazi iz biologije i donekle je pojednostavljen model strukture ljudskog mozga. Ali nemojmo ulaziti u divljinu prirodnih znanosti – najlakši način je zamisliti neuron (uključujući i umjetni) kao neku vrstu crne kutije s mnogo ulaza i jednim izlazom.

    Matematički, umjetni neuron pretvara vektor ulaznih signala (udara) X u vektor izlaznih signala Y koristeći funkciju koja se zove aktivacijska funkcija. Unutar veze (umjetna neuronska mreža - ANN) postoje tri tipa neurona: ulazni (primanje informacija iz vanjskog svijeta - vrijednosti varijabli koje nas zanimaju), izlazni (vraćanje željenih varijabli - npr. prognoze , odnosno kontrolnih signala), kao i srednjih neurona, koji obavljaju neke unutrašnje („skrivene“) funkcije. Klasična ANN se, dakle, sastoji od tri ili više slojeva neurona, a na drugom i narednim slojevima („skriveni“ i izlazni) svaki od elemenata je povezan sa svim elementima prethodnog sloja.

    Važno je zapamtiti koncept povratne sprege, koji određuje tip strukture ANN: direktni prijenos signala (signali idu sekvencijalno od ulaznog sloja kroz skriveni sloj i ulaze u izlazni sloj) i rekurentne strukture, kada mreža sadrži veze koje idu unatrag. od udaljenijih ka bližim neuronima). Svi ovi koncepti čine neophodan minimum informacija za prelazak na sljedeći nivo razumijevanja ANN-a - obuku neuronske mreže, klasifikaciju njenih metoda i razumijevanje principa rada svake od njih.

    Trening neuronske mreže

    Ne treba zaboraviti čemu se takve kategorije uopće koriste - inače postoji rizik da se zaglavimo u apstraktnoj matematici. Naime, umjetne neuronske mreže se shvaćaju kao klasa metoda za rješavanje određenih praktičnih problema, među kojima su glavni problemi prepoznavanja obrazaca, donošenja odluka, aproksimacije i kompresije podataka, kao i za nas najzanimljiviji problemi klastera. analiza i prognoza.

    Ne odlazeći u drugu krajnost i ne ulazeći u detalje rada ANN metoda u svakom konkretnom slučaju, podsjetimo da je pod bilo kojim okolnostima sposobnost neuronske mreže da uči (sa nastavnikom ili „sama“). ) to je ključna tačka koristeći ga za rješavanje praktičnih problema.

    Općenito, ANN obuka je sljedeća:

    1. ulazni neuroni primaju varijable ("podražaje") iz vanjskog okruženja;
    2. u skladu sa primljenim informacijama mijenjaju se slobodni parametri NS-a (radju međuslojevi neurona);
    3. kao rezultat promjena u strukturi neuronske mreže, mreža “reaguje” na informacije na drugačiji način.

    Ovo je opšti algoritam za treniranje neuronske mreže (zapamtite Pavlovljevog psa - da, da, unutrašnji mehanizam obrazovanja uslovni refleks upravo je tako - i odmah ćemo zaboraviti: ipak, naš kontekst uključuje rad sa tehničkim konceptima i primjerima).

    Jasno je da univerzalni algoritam učenja ne postoji i najvjerovatnije ne može postojati; Konceptualno, pristupi učenju se dijele na učenje sa nastavnikom i učenje bez nastavnika. Prvi algoritam pretpostavlja da za svaki ulazni ("učeni") vektor postoji potrebna vrijednost izlaznog ("ciljnog") vektora - dakle, ove dvije vrijednosti formiraju trening par, a cijeli skup takvih parova je set za obuku. U slučaju učenja bez nadzora, set za obuku se sastoji samo od ulaznih vektora - a ova situacija je vjerojatnija sa stanovišta stvarnog života.

    Duboko učenje

    Koncept dubokog učenja (deep learning) odnosi se na drugačiju klasifikaciju i označava pristup učenju takozvanih dubokih struktura, koje uključuju višerazinske neuronske mreže. Jednostavan primjer iz područja prepoznavanja slika: morate naučiti mašinu da izdvaja sve apstraktnije karakteristike u smislu drugih apstraktnih karakteristika, odnosno da odredi odnos između izraza cijelog lica, očiju i usta, i, na kraju, , matematički skupovi obojenih piksela. Dakle, u dubokoj neuronskoj mreži, svaki nivo karakteristika je odgovoran za svoj sopstveni sloj; jasno je da je za obuku takvog "kolosa" potrebno odgovarajuće iskustvo istraživača i nivo hardvera. Uslovi koji idu u prilog dubokom učenju NN-a tek 2006. godine – a osam godina kasnije, možemo govoriti o revoluciji koju je ovaj pristup napravio u mašinskom učenju.

    Dakle, prije svega, u kontekstu našeg članka, vrijedi napomenuti sljedeće: u većini slučajeva duboko učenje ne kontrolira osoba. Odnosno, ovaj pristup uključuje obuku neuronske mreže bez nastavnika. Ovo je glavna prednost „dubokog“ pristupa: nadgledano mašinsko učenje, posebno u slučaju dubokih struktura, zahteva ogromne troškove vremena i rada. Duboko učenje, s druge strane, je pristup koji modelira ljudsko apstraktno razmišljanje (ili, u najmanje, predstavlja pokušaj da mu se približimo), umjesto da ga koristimo.

    Ideja je, kao i obično, sjajna, ali se javljaju sasvim prirodni problemi u pristupu – prije svega, ukorijenjeni u tvrdnji o univerzalnosti. U stvari, ako su pristupi dubokog učenja postigli opipljiv uspjeh u području prepoznavanja slika, onda uz istu obradu prirodni jezik postavlja se mnogo više pitanja nego što ima odgovora. Očigledno je da će u narednih n godina teško biti moguće stvoriti "vještačkog Leonarda Da Vinčija" ili čak - barem! - "vještački homo sapiens".

    Ipak, istraživači umjetne inteligencije već su suočeni s pitanjem etike: strahovi izraženi u svakom znanstvenofantastičnom filmu koji poštuje sebe, od Terminatora do Transformera, više ne izgledaju smiješno (moderne sofisticirane neuronske mreže već se mogu smatrati vjerodostojnim modelom rad mozga insekata!), ali su do sada očito suvišni.

    Idealna tehnogena budućnost nam se čini kao era kada će osoba moći delegirati većinu svojih moći mašini - ili barem moći da joj dozvoli da olakša značajan dio njegovog intelektualnog rada. Koncept dubokog učenja je jedan korak ka ovom snu. Dug je put do toga - ali već je jasno da su neuronske mreže i svi razvojni pristupi povezani s njima sposobni da s vremenom ostvare težnje pisaca naučne fantastike.

    Danas je graf jedan od najprihvatljivijih načina za opisivanje modela kreiranih u sistemu mašinskog učenja. Ovi računski grafovi su sastavljeni od vrhova neurona povezanih rubovima sinapse koji opisuju veze između vrhova.

    Za razliku od skalarnog CPU-a ili vektorskog GPU-a, IPU jeste novi tip procesori, dizajnirani za mašinsko učenje, omogućavaju vam da napravite takve grafove. Računar koji je dizajniran za upravljanje grafovima je idealna mašina za računarske modele grafova kreiranih kao dio mašinskog učenja.

    Jedan od najlakših načina da se opiše kako funkcionira strojna inteligencija je vizualizacija. Razvojni tim Graphcorea napravio je kolekciju takvih slika za prikaz na IPU-u. Osnova je bila softver Topola, koja vizualizira rad umjetne inteligencije. Istraživači ove kompanije otkrili su i zašto duboke mreže zahtijevaju toliko memorije i koja rješenja postoje za rješavanje problema.

    Poplar uključuje grafički kompajler koji je napravljen od temelja da prevede uobičajene operacije mašinskog učenja u visoko optimizovan IPU aplikacijski kod. Omogućava vam da sastavite ove grafikone na isti način na koji se sastavljaju POPNN-ovi. Biblioteka sadrži set razne vrste vrhovi za generičke primitive.

    Grafovi su paradigma na kojoj se zasniva sav softver. U Poplaru, grafovi vam omogućavaju da definirate proces izračunavanja, gdje vrhovi izvode operacije, a ivice opisuju odnos između njih. Na primjer, ako želite da dodate dva broja zajedno, možete definirati vrh sa dva ulaza (brojevi koje želite da dodate), nekim proračunima (funkcija za dodavanje dva broja) i izlazom (rezultat).

    Obično su operacije vrhova mnogo složenije nego u gornjem primjeru. Često ih definiraju mali programi koji se nazivaju kodeti (kodna imena). Grafička apstrakcija je privlačna jer ne daje nikakve pretpostavke o strukturi izračunavanja i rastavlja računanje na komponente sa kojima IPU može da radi.

    Topola koristi ovu jednostavnu apstrakciju za izgradnju vrlo velikih grafikona koji su predstavljeni kao slika. Programsko generisanje grafikona znači da ga možemo prilagoditi specifičnim proračunima potrebnim za najefikasnije korištenje IPU resursa.

    Kompajler prevodi standardne operacije koje se koriste u sistemima mašinskog učenja u visoko optimizovan IPU aplikacijski kod. Kompajler grafa stvara srednju sliku računskog grafa koji je raspoređen na jednom ili više IPU-ova. Kompajler može prikazati ovaj računski graf, tako da aplikacija napisana na nivou strukture neuronske mreže prikazuje sliku računskog grafa koji se izvodi na IPU-u.


    AlexNet graf treninga punog ciklusa u smjeru naprijed i nazad

    Grafički kompajler Topola pretvorio je opis AlexNeta u računarski graf od 18,7 miliona vrhova i 115,8 miliona ivica. Jasno vidljivo grupiranje rezultat je snažne komunikacije između procesa u svakom sloju mreže, uz lakšu komunikaciju između slojeva.

    Drugi primjer je jednostavna potpuno povezana mreža obučena na MNIST-u, jednostavan skup podataka kompjuterskog vida, neka vrsta „Zdravo, svijete“ u mašinskom učenju. Jednostavna mreža za istraživanje ovog skupa podataka pomaže u razumijevanju grafova koje pokreću aplikacije Toplar. Integracijom biblioteka grafova sa okvirima kao što je TensorFlow, kompanija uvodi jedan od jednostavne načine za korištenje IPU-a u aplikacijama za strojno učenje.

    Nakon što je graf izgrađen pomoću kompajlera, mora se izvršiti. Ovo je moguće sa Graph Engineom. Primjer ResNet-50 demonstrira njegov rad.


    Grafikon ResNet-50

    ResNet-50 arhitektura vam omogućava da kreirate duboke mreže iz ponovljenih sekcija. Procesoru ostaje samo da jednom definiše ove sekcije i ponovo ih pozove. Na primjer, klaster na nivou konv4 se izvršava šest puta, ali samo jednom se prikazuje na grafikonu. Slika također pokazuje raznolikost oblika konvolucijskih slojeva, budući da svaki od njih ima graf izgrađen prema prirodnom obliku proračuna.

    Mašina kreira i upravlja izvršavanjem modela mašinskog učenja koristeći graf koji generiše kompajler. Jednom implementiran, Graph Engine nadgleda i odgovara na IPU ili uređaje koje koriste aplikacije.

    Slika ResNet-50 prikazuje cijeli model. Na ovom nivou, teško je razlikovati veze između pojedinih vrhova, pa je vrijedno pogledati uvećane slike. Ispod su neki primjeri sekcija unutar slojeva neuronske mreže.

    Zašto je dubokim mrežama potrebno toliko memorije?

    Velike količine memorije jedan su od najvećih problema dubokih neuronskih mreža. Istraživači se pokušavaju boriti protiv ograničenih propusnost DRAM uređaji koji će se koristiti savremeni sistemi pohraniti ogroman broj težina i aktivacija u duboku neuronsku mrežu.

    Arhitekture su dizajnirane pomoću procesorskih čipova dizajniranih za serijalizaciju i optimizaciju DRAM-a za memoriju visoke gustine. Interfejs između ova dva uređaja je usko grlo koje uvodi ograničenja propusnosti i dodaje značajnu potrošnju energije.

    Iako još nemamo potpuno razumijevanje ljudski mozak a o tome kako to radi, generalno je jasno da ne postoji velika zasebna memorija. Smatra se da je funkcija dugoročne i kratkoročne memorije u ljudskom mozgu ugrađena u strukturu neurona + sinapse. Čak i jednostavni organizmi poput crva s neuronskom strukturom mozga, koja se sastoji od nešto više od 300 neurona, u određenoj su mjeri funkcija pamćenja.

    Izgradnja memorije u konvencionalnim procesorima jedan je od načina da se zaobiđu uska grla memorije otvaranjem ogromne količine propusnog opsega uz mnogo manju potrošnju energije. Međutim, memorija na čipu je skupa stvar koja nije dizajnirana za zaista velike količine memorije koje su povezane sa CPU-ovima i GPU-ovima koji se trenutno koriste za obuku i implementaciju dubokih neuronskih mreža.

    Stoga je korisno pogledati kako se memorija danas koristi u CPU-ima baziranim na GPU-u i sistemima dubokog učenja i zapitati se: zašto su im potrebni tako veliki memorijski uređaji za pohranu kada ljudski mozak radi sasvim dobro i bez njih?

    Neuralne mreže trebaju memoriju kako bi pohranile ulazne podatke, parametre težine i aktivacijske funkcije dok se ulaz širi mrežom. U treningu, aktivacija na ulazu se mora sačuvati sve dok se ne može koristiti za izračunavanje grešaka u gradijentima na izlazu.

    Na primjer, 50-slojni ResNet ima oko 26 miliona pondera i izračunava 16 miliona naprijed aktivacija. Ako koristite 32-bitni broj s pomičnim zarezom za pohranu svake težine i aktivacije, tada će to zahtijevati oko 168 MB prostora. Koristeći nižu vrijednost preciznosti za pohranjivanje ovih težina i aktivacija, mogli bismo prepoloviti ili čak četverostruko povećati ovaj zahtjev za skladištenjem.

    Ozbiljan problem sa memorijom proizlazi iz činjenice da se GPU-ovi oslanjaju na podatke predstavljene kao gusti vektori. Stoga, oni mogu koristiti pojedinačni tok instrukcija (SIMD) za postizanje velika gustoća računarstvo. CPU koristi slične vektorske blokove za računanje visokih performansi.

    GPU-ovi imaju širinu sinapse od 1024 bita, tako da koriste 32-bitne podatke s pomičnim zarezom, tako da ih često razbijaju u paralelno pokrenute mini serije od 32 uzorka kako bi kreirali 1024-bitne vektore podataka. Ovaj pristup vektorskom paralelizmu povećava broj aktivacija za 32 puta i potrebu za više od 2 GB lokalne memorije.

    GPU-ovi i druge mašine dizajnirane za matričnu algebru također su podložni stresu memorije zbog težine ili aktivacije neuronske mreže. GPU-ovi ne mogu efikasno izvesti male konvolucije koje se koriste u dubokim neuronskim mrežama. Stoga se transformacija nazvana "downgrade" koristi za pretvaranje ovih konvolucija u množenje matrice i matrice (GEMM) koje grafički akceleratori mogu efikasno nositi.

    Dodatna memorija je također potrebna za pohranjivanje ulaznih podataka, privremenih vrijednosti i programskih instrukcija. Mjerenje upotrebe memorije tokom treninga ResNet-50 na high-end GPU-u pokazalo je da mu je potrebno preko 7,5 GB lokalnog DRAM-a.

    Moglo bi se pomisliti da manja preciznost računanja može smanjiti potrebnu količinu memorije, ali to nije slučaj. Prebacivanjem vrijednosti podataka na pola preciznosti za težine i aktivacije, ispunjavate samo polovinu širine SIMD vektora, koristeći polovinu dostupnih računarskih resursa. Da biste to kompenzirali, kada pređete s pune na polovinu preciznosti na GPU-u, tada morate udvostručiti veličinu mini-serije da biste prisilili dovoljno paralelizma podataka da biste koristili sve dostupne računare. Dakle, prelazak na niže precizne težine i aktivacije na GPU-u i dalje zahtijevaju više od 7,5 GB slobodne dinamičke memorije.

    Sa toliko podataka za skladištenje, jednostavno je nemoguće sve to uklopiti u GPU. Na svakom sloju konvolucione neuronske mreže potrebno je sačuvati stanje eksternog DRAM-a, učitati sledeći sloj mreže, a zatim učitati podatke u sistem. Kao rezultat toga, sučelje kašnjenja memorije koje je već ograničeno na propusni opseg pati od dodatnog tereta stalnog ponovnog učitavanja balansa i spremanja i preuzimanja aktivacijskih funkcija. Ovo značajno usporava vrijeme treninga i uvelike povećava potrošnju energije.

    Postoji nekoliko načina za rješavanje ovog problema. Prvo, operacije kao što su funkcije aktivacije mogu se izvoditi na mjestu, omogućavajući da se input prepiše direktno na izlaz. Tako se postojeća memorija može ponovo koristiti. Drugo, mogućnost ponovnog korištenja memorije može se dobiti analizom ovisnosti podataka između operacija na mreži i dodjele iste memorije za operacije koje je u tom trenutku ne koriste.

    Drugi pristup je posebno efikasan kada se cijela neuronska mreža može raščlaniti u vrijeme kompajliranja kako bi se stvorila fiksna dodijeljena memorija, jer se troškovi upravljanja memorijom smanjuju na skoro nulu. Pokazalo se da kombinacija ovih metoda može smanjiti korištenje memorije od strane neuronske mreže za dva do tri puta.
    Treći značajan pristup nedavno je otkrio tim Baidu Deep Speech. Primijenili su različite tehnike uštede memorije kako bi dobili 16 puta smanjenje potrošnje memorije funkcija aktivacije, što im je omogućilo da treniraju mreže sa 100 slojeva. Ranije su, sa istom količinom memorije, mogli trenirati mreže sa devet slojeva.

    Kombinovanje memorije i resursa za obradu u jednom uređaju ima značajan potencijal za poboljšanje performansi i efikasnosti konvolucionih neuronskih mreža, kao i drugih oblika mašinskog učenja. Može se napraviti kompromis između memorije i računarskih resursa kako bi se postigla ravnoteža sposobnosti i performansi u sistemu.

    Neuronske mreže i modeli znanja u drugim metodama mašinskog učenja mogu se smatrati matematičkim grafovima. U ovim grafovima postoji velika količina paralelizma. Paralelni procesor dizajniran da iskoristi paralelizam grafova ne oslanja se na mini-batch i može uvelike smanjiti količinu potrebne lokalne memorije.

    Savremeni rezultati istraživanja su pokazali da sve ove metode mogu značajno poboljšati performanse neuronskih mreža. Moderni GPU i CPU-i imaju vrlo ograničenu ugrađenu memoriju, svega nekoliko megabajta ukupno. Nove arhitekture procesora posebno dizajnirane za mašinsko učenje uspostavljaju ravnotežu između memorije i računarstva na čipu, dajući značajna poboljšanja performansi i efikasnosti u odnosu na današnje CPU i GPU.

    Iz članka ćete naučiti što je duboko učenje. Također, članak sadrži mnoge resurse koje možete koristiti za savladavanje ove oblasti.

    AT savremeni svet Od zdravstvene zaštite do proizvodnje, duboko učenje je sveprisutno. Kompanije se okreću ovoj tehnologiji kako bi riješile složene probleme kao što su prepoznavanje govora i objekata, mašinsko prevođenje i tako dalje.

    Jedno od najupečatljivijih ovogodišnjih dostignuća je bilo da je AlphaGo pobijedio najboljeg Go igrača svijeta. Pored Go, mašine su nadmašile ljude u drugim igrama: dama, šah, reversi i jeopardy.

    Verovatno pobeda društvena igra izgleda neprimjenjivo u rješavanju stvarnih problema, ali to uopće nije slučaj. Go je dizajniran da bude nepobjediv od strane umjetne inteligencije. Da bi to učinio, morao bi naučiti jednu važnu stvar za ovu igru ​​- ljudsku intuiciju. Sada, uz pomoć ovog razvoja, moguće je riješiti mnoge probleme koji su ranije bili nedostupni računaru.

    Očigledno je da je duboko učenje još uvijek daleko od savršenog, ali je već blizu toga da bude komercijalno korisno. Na primjer, ovi samovozeći automobili. Značajne kompanije poput Gugla, Tesle i Ubera već pokušavaju da dovedu autonomne automobile na gradske ulice.

    Ford predviđa značajan porast udjela bespilotnih vozila do 2021. godine. Američka vlada je također uspjela razviti set sigurnosnih pravila za njih.

    Šta je duboko učenje?

    Da biste odgovorili na ovo pitanje, morate razumjeti kako je u interakciji s mašinskim učenjem, neuronskim mrežama i umjetnom inteligencijom. Da bismo to učinili, koristimo metodu vizualizacije pomoću koncentričnih krugova:

    Vanjski krug je umjetna inteligencija općenito (na primjer, kompjuteri). Malo dalje - mašinsko učenje, a sasvim u centru - duboko učenje i veštačke neuronske mreže.

    Grubo govoreći, duboko učenje je samo prikladniji naziv za umjetne neuronske mreže. "Duboko" u ovoj frazi odnosi se na stepen složenosti (dubine) neuronske mreže, koja često može biti vrlo površna.

    Kreatori prve neuronske mreže bili su inspirisani strukturom moždane kore. Osnovni nivo mreža, perceptron, u suštini je matematički pandan biološkom neuronu. I, kao u mozgu, perceptroni koji se ukrštaju jedan s drugim mogu se pojaviti u neuronskoj mreži.

    Prvi sloj neuronske mreže naziva se ulazni sloj. Svaki čvor ovog sloja prima neke informacije kao ulaz i prenosi ih sljedećim čvorovima u drugim slojevima. Najčešće ne postoje veze između čvorova jednog sloja, a posljednji čvor lanca prikazuje rezultat neuronske mreže.

    Čvorovi u sredini nazivaju se skrivenim jer nemaju veze s vanjskim svijetom kao što su izlazni i ulazni čvorovi. Pozivaju se samo ako su prethodni slojevi aktivirani.

    Duboko učenje je u suštini tehnika obuke neuronske mreže koja koristi mnogo slojeva za rješavanje složenih problema (kao što je prepoznavanje govora) koristeći obrasce. U 1980-im, većina neuronskih mreža je bila jednoslojna zbog visoke cijene i ograničenih mogućnosti podataka.

    Ako smatramo mašinsko učenje kao izdanak ili varijantu rada umjetne inteligencije, onda je duboko učenje specijalizirana vrsta takvog izdanka.

    Mašinsko učenje koristi kompjutersku inteligenciju koja ne daje odgovor odmah. Umjesto toga, kod će se pokrenuti na testnim podacima i, na osnovu tačnosti njihovih rezultata, prilagoditi svoj tok. Za uspjeh ovog procesa obično se koriste različite tehnike, specijalni softver i informatika, koji opisuju statičke metode i linearnu algebru.

    Metode dubokog učenja

    Metode dubokog učenja dijele se na dvije glavne vrste:

    • Učenje sa učiteljem
    • Učenje bez nastavnika

    Prva metoda koristi posebno odabrane podatke za postizanje željenog rezultata. To zahtijeva dosta ljudske intervencije, jer se podaci moraju birati ručno. Međutim, pogodan je za klasifikaciju i regresiju.

    Zamislite da ste vlasnik kompanije i želite da odredite efekat bonusa na trajanje ugovora sa svojim podređenim. U prisustvu prethodno prikupljenih podataka, metoda nadgledanog učenja bila bi nezamjenjiva i vrlo učinkovita.

    Druga metoda ne podrazumijeva unaprijed pripremljene odgovore i algoritme rada. Cilj mu je otkriti skrivene obrasce u podacima. Obično se koristi za grupisanje i asocijativne zadatke, kao što je grupisanje klijenata po ponašanju. “Oni također biraju s ovim” na Amazonu je varijanta asocijativnog zadatka.

    Dok je metoda pod nadzorom često prilično zgodna, njena složenija verzija je ipak bolja. Dubinsko učenje se uspostavilo kao neuronska mreža kojoj nije potreban ljudski nadzor.

    Važnost dubokog učenja

    Računari već dugo koriste tehnologiju za prepoznavanje određenih karakteristika na slici. Međutim, rezultati su bili daleko od uspješnih. Kompjuterski vid je imao nevjerovatan utjecaj na duboko učenje. To su ove dvije tehnike ovog trenutka riješiti sve zadatke prepoznavanja.

    Konkretno, Facebook je uspio da prepozna lica na fotografijama koristeći duboko učenje. Ovo nije jednostavno poboljšanje tehnologije, već prekretnica koja mijenja sve ranije ideje: „Osoba može sa vjerovatnoćom od 97,53% utvrditi da li je ista osoba predstavljena na dvije različite fotografije. Program koji je razvio Facebook tim može to učiniti sa vjerovatnoćom od 97,25% bez obzira na osvjetljenje ili da li osoba gleda direktno u kameru ili je okrenuta bočno prema njoj.

    Prepoznavanje govora je također pretrpjelo značajne promjene. Baidu tim, jedan od vodećih kineskih pretraživača, razvio je sistem za prepoznavanje govora koji je uspio nadmašiti ljude u brzini i preciznosti pisanja teksta na mobilnim uređajima. Na engleskom i mandarinskom.

    Ono što je posebno zanimljivo je da pisanje zajedničke neuronske mreže za dva potpuno različita jezika nije zahtijevalo mnogo rada: „Istorijski se dogodilo da su ljudi kineski i engleski vidjeli kao dva potpuno različita jezika. različitim jezicima, pa je pristup svakom od njih zahtijevao drugačiji”, kaže šef istraživačkog centra Baidu Andrew Ng. “Algoritmi učenja su sada toliko generalizirani da možete jednostavno naučiti."

    Google koristi duboko učenje za upravljanje energijom u podatkovnim centrima kompanije. Uspjeli su smanjiti troškove rashladnih resursa za 40%. To je oko 15% poboljšanja energetske efikasnosti i milionske uštede.

    Mikroservis dubinskog učenja

    Evo kratka recenzija usluge dubokog učenja.

    Ilustracija Tagger. Upotpunjen Ilustracijom2Vec, ova usluga vam omogućava da označite slike kao "zaštićene", "upitne", "opasne", "autorska" ili "općenito" kako biste unaprijed razumjeli sadržaj slike.

    • Googleov dodatak za Theano
    • Uređivano u Python i Numpy
    • Često se koristi za rješavanje određenog niza problema
    • Nije opšte namene. Glavni fokus na mašinski vid
    • Uređeno u C++
    • Ima Python interfejs

    Online kursevi dubokog učenja

    Google i Udacity su se udružili kako bi kreirali besplatni kurs dubokog učenja, dio Udacity kursa mašinskog učenja. Ovaj program vode iskusni programeri koji žele da razviju polje mašinskog učenja i, posebno, dubokog učenja.

    Još jedna popularna opcija je kurs mašinskog učenja Andrewa Nga, koji podržavaju Coursera i Stanford.

    1. Mašinsko učenje - Stanford autor Andrew Ng na Courseri (2010-2014)
    2. Mašinsko učenje - Caltech od Yasera Abu-Mostafe (2012-2014)
    3. Mašinsko učenje - Carnegie Mellon autora Toma Mitchella (proljeće 2011.)
    4. Neuralne mreže za mašinsko učenje – Geoffrey Hinton na Courseri (2012)
    5. Klasa neuronske mreže– Hugo Larochelle sa Université de Sherbrooke (2013

    Knjige za duboko učenje

    Dok se resursi u prethodnom odjeljku oslanjaju na prilično opsežnu bazu znanja, Grokking Deep Learning je, naprotiv, namijenjen početnicima. Kako autori kažu: „Ako ste završili 11 časova i otprilike razumete kako da pišete na Pythonu, mi ćemo vas naučiti dubokom učenju.”

    Popularna alternativa ovoj knjizi je knjiga sa izgovoreno ime Knjiga za duboko učenje. Posebno je dobar jer opisuje svu matematiku koja će vam biti potrebna da zaronite u ovu oblast.

    1. Duboko učenje, Yoshua Bengio, Ian Goodfellow i Aaron Courville (2015.)
    2. "Neuralne mreže i duboko učenje" Michaela Nielsena (2014.)
    3. "Duboko učenje" od strane Microsoft Research (2013.)
    4. "Tutorijali za duboko učenje" LISA Lab, Univerzitet u Montrealu (2015.)
    5. "neuraltalk" Andreja Karpatija
    6. "Uvod u genetske algoritme"
    7. "Moderni pristup vještačkoj inteligenciji"
    8. "Pregled dubokog učenja i neuronskih mreža"

    Video zapisi i predavanja

    Deep Learning Simplified je divan YouTube kanal. Evo njihovog prvog videa:

    Nadolazeća revolucija pametnih robota predviđa se svakih deset godina od 1950-ih. Međutim, to se nikada nije dogodilo. Napredak na terenu umjetna inteligencija odvijala se nesigurno, ponekad dosadno, donoseći razočarenje mnogim entuzijastima. Vidljivi uspjesi – kompjuter Deep Blue, koji je sredinom 1990-ih kreirao IBM i koji je pobijedio Garija Kasparova 1997. u šahu, ili pojava elektronskog prevodioca kasnih 1990-ih – više su rezultat „grubih“ proračuna nego transfera mehanizmi ljudske percepcije na kompjuterske procese.

    Međutim, istorija razočaranja i neuspjeha sada se dramatično mijenja. Prije samo deset godina, kompjuterski vid i algoritmi za prepoznavanje objekata mogli su identificirati loptu ili kutiju na običnoj pozadini. Sada mogu razlikovati ljudska lica kao i ljudi, čak i kada su složeni, prirodna pozadina. Prije šest mjeseci, Google je objavio aplikaciju za pametne telefone koja može prevesti tekst sa više od 20 strani jezicičitanjem riječi sa fotografija, putokaza ili rukom pisanog teksta!

    Sve je to postalo moguće nakon što se pokazalo da su neke stare ideje iz oblasti neuronskih mreža, ako se malo modificiraju dodavanjem "života", tj. projekcijom detalja ljudske i životinjske percepcije, mogu dati zapanjujući rezultat koji niko nije očekivao. Ovog puta, čini se da je AI revolucija zaista stvarna.

    Istraživanja neuronskih mreža u oblasti mašinskog učenja u većini slučajeva su uvek bila posvećena potrazi za novim metodama za prepoznavanje različitih vrsta podataka. Dakle, računar spojen na kameru bi trebao, koristeći algoritam za prepoznavanje slike, moći razlikovati između Loša kvaliteta ljudsko lice, šolja čaja ili psa. Istorijski gledano, međutim, korištenje neuronskih mreža u ove svrhe bilo je praćeno značajnim poteškoćama. Čak i manji uspjeh zahtijevao je ljudsku intervenciju - ljudi su pomogli programu da odredi važne karakteristike slike, kao što su granice slike ili jednostavne geometrijske figure. Postojeći algoritmi nisu mogli sami naučiti da to rade.

    Situacija se dramatično promijenila stvaranjem tzv neuronske mreže dubokog učenja, koji sada može analizirati sliku gotovo jednako efikasno kao i čovjek. Takve neuronske mreže koriste sliku lošeg kvaliteta kao ulaz za "neurone" prvog nivoa, koji zatim "sliku" prosleđuju nelinearnim vezama do neurona sledećeg nivoa. Nakon određenog treninga, "neurona" je više visoki nivoi može koristiti apstraktnije aspekte slike za prepoznavanje. Na primjer, mogu koristiti detalje kao što su ivice slike ili kako je pozicionirana u prostoru. Nevjerojatno, takve mreže mogu naučiti procijeniti najvažnije karakteristike slike bez ljudske pomoći!

    Odličan primjer korištenja neuronskih mreža dubokog učenja je prepoznavanje istih objekata fotografiranih iz različitih uglova ili u različitim pozama (ako je riječ o osobi ili životinji). Algoritmi koji koriste skeniranje piksel po piksel “misle” da imaju dvije različite slike ispred sebe, dok “pametne” neuronske mreže “razumeju” da ispred sebe imaju isti objekat. I obrnuto - slike dva psa različitih rasa, fotografisane u istoj pozi, prethodni algoritmi su mogli percipirati kao fotografije istog psa. Neuronske mreže dubokog učenja mogu otkriti detalje u slikama koji im pomažu da razlikuju životinje.

    Kombinacija tehnika dubokog učenja, vrhunske neuronauke i snage modernih kompjutera otvara izglede za umjetnu inteligenciju koju ne možemo ni procijeniti. Istina, već je očigledno da um može imati ne samo biološku prirodu.