Programiranje

Kaj je globoko učenje? Algoritmi, ki posnemajo človeške možgane

Opredeljeno globoko učenje

Globoko učenje je oblika strojnega učenja, ki vzorce v podatkih modelira kot kompleksna, večplastna omrežja. Ker je poglobljeno učenje najbolj splošen način modeliranja problema, lahko rešuje težke probleme - na primer računalniški vid in obdelavo naravnega jezika -, ki presegajo tako običajno programiranje kot druge tehnike strojnega učenja.

Poglobljeno učenje lahko ne samo da koristne rezultate, kadar druge metode odpovedo, ampak lahko tudi izdela natančnejše modele kot druge metode in lahko skrajša čas, potreben za izdelavo uporabnega modela. Vendar pa usposabljanje modelov globokega učenja zahteva veliko računalniške moči. Druga pomanjkljivost globokega učenja je težava pri razlagi modelov globokega učenja.

Značilnost globokega učenja je, da ima model, ki ga usposobimo, več kot enega skrita plast med vhodom in izhodom. V večini razprav globoko učenje pomeni uporabo globokih nevronskih mrež. Obstaja pa nekaj algoritmov, ki izvajajo globoko učenje z uporabo drugih vrst skritih plasti poleg nevronskih mrež.

Poglobljeno učenje v primerjavi s strojnim učenjem

Omenil sem, da globoko učenje je oblika strojno učenje. Na poglobljeno strojno učenje se bom skliceval kot klasično strojno učenje, da ustreza običajni uporabi.

Na splošno klasični algoritmi strojnega učenja delujejo veliko hitreje kot algoritmi globokega učenja; za usposabljanje klasičnega modela bo pogosto dovolj en ali več CPU-jev. Modeli globokega učenja pogosto potrebujejo strojne pospeševalnike, kot so grafični procesorji, TPU-ji ali FPGA-ji, za usposabljanje in tudi za razširitev v obsegu. Brez njih bi modeli trenirali mesece.

Nekateri klasični algoritmi strojnega učenja bodo pri številnih težavah ustvarili "dovolj dober" model. Pri drugih težavah klasični algoritmi strojnega učenja v preteklosti niso delovali strašno dobro.

Aplikacije za globoko učenje

Obstaja veliko primerov problemov, ki trenutno zahtevajo poglobljeno učenje za izdelavo najboljših modelov. Obdelava naravnega jezika (NLP) je dobra.

Jeseni 2016 se je kakovost izhodnih rezultatov Google Translate za angleško-francoski, angleško-kitajski in angleško-japonski jezikovni par nenadoma močno izboljšala, od ustvarjanja besedne solate do izdelave stavkov, ki so blizu kakovosti profesionalnega prevoda človeka. V zakulisju se je zgodilo, da sta ekipi Google Brain in Google Translate prenovili Google Translate iz uporabe njegovih starih algoritmov statističnega strojnega prevajanja na osnovi fraze (ena vrsta klasičnega strojnega učenja) v uporabo globoke nevronske mreže, usposobljene za vdelavo besed z uporabo Googlovega okvira TensorFlow .

To ni bil lahek projekt. Številni doktorski raziskovalci so potrebovali mesece dela na modelih in tisoče GPU-tednov za usposabljanje modelov. Google je spodbudil tudi k ustvarjanju nove vrste čipa, Tensor Processing Unit (TPU), ki bo za Google Translate v veliki meri vodil nevronska omrežja.

Poleg problema prevajanja jezika, ki ga obravnava Google Translate, glavne naloge NLP vključujejo samodejno povzemanje, ločevanje referenc, analizo diskurza, morfološko segmentacijo, prepoznavanje imenovanih entitet, ustvarjanje naravnega jezika, razumevanje naravnega jezika, označevanje dela govora, sentiment analiza in prepoznavanje govora.

Še en dober primer uporabe poglobljenega učenja je klasifikacija slik. Ker živi organizmi obdelujejo slike s svojo vidno skorjo, so mnogi raziskovalci arhitekturo vidne skorje sesalcev vzeli za model nevronskih mrež, namenjenih prepoznavanju slik. Biološke raziskave segajo v petdeseta leta prejšnjega stoletja.

Preboj na področju nevronske mreže za vid je bil leta 1998 LeNet-5 Yanna LeCuna, sedemstopenjski konvolucijska nevronska mreža (CNN) za prepoznavanje ročno napisanih številk, digitaliziranih na slikah z ločljivostjo 32 x 32 slikovnih pik. Za analizo slik z višjo ločljivostjo bi bilo treba omrežje LeNet-5 razširiti na več nevronov in več plasti.

Današnji najboljši modeli klasifikacije globokih slik lahko prepoznajo raznolike kataloge predmetov v barvni ločljivosti HD. Poleg čistih globokih nevronskih mrež (DNN) včasih ljudje uporabljajo tudi hibridne modele vida, ki globinsko učenje kombinirajo s klasičnimi algoritmi strojnega učenja, ki izvajajo posebne podnaloge.

Drugi problemi z vidom poleg osnovne klasifikacije slik, ki so bili rešeni z globokim učenjem, vključujejo klasifikacijo slik z lokalizacijo, zaznavanje predmetov, segmentacijo predmetov, prenos sloga slike, barvanje slike, rekonstrukcija slike, super-ločljivost slike in sinteza slike.

Klasifikacijo slik lahko razširite na video klasifikacijo tako, da iz videoposnetka izvlečete posamezne sličice in razvrstite vsak okvir. Zaznanim predmetom v video posnetkih je mogoče slediti od sličice do sličice.

Po navedbah Goodfellowa, Bengija in Courvillea, ki so leta 2016 pisali, se globoko učenje uspešno uporablja za napovedovanje, kako bodo molekule medsebojno vplivale, da bodo farmacevtskim podjetjem pomagale pri oblikovanju novih zdravil, iskanju subatomskih delcev in samodejnem razčlenjevanju mikroskopskih slik, ki se uporabljajo za izdelavo 3-D zemljevid človeških možganov.

Poglobljeno učenje nevronskih mrež

Ideje za "umetne" nevronske mreže segajo v 40. leta 20. stoletja. Bistveni koncept je, da se mreža umetnih nevronov, zgrajenih iz medsebojno povezanih pragovnih stikal, lahko nauči prepoznavati vzorce na enak način kot živalski možgani in živčni sistem (vključno z mrežnico).

Razmnoževanje

Učenje v globokih nevronskih mrežah se pojavi z okrepitvijo povezave med dvema nevronoma, kadar sta oba med treningom hkrati aktivna. V sodobni programski opremi za nevronske mreže gre najpogosteje za povečanje vrednosti teže za povezave med nevroni z uporabo pravila, imenovanega povratno razmnoževanje napake, backprop ali BP.

Nevroni

Kako so modelirani nevroni? Vsak ima funkcijo širjenja, ki pretvori izhode povezanih nevronov, pogosto s tehtano vsoto. Izhod funkcije razmnoževanja preide v funkcijo aktiviranja, ki se sproži, ko njen vhod preseže mejno vrednost.

Aktivacijske funkcije

V štiridesetih in petdesetih letih 20. stoletja so umetni nevroni uporabljali funkcijo koračne aktivacije in so bili imenovani perceptroni. Sodobne nevronske mreže lahko recimo uporabljajo perceptrone, vendar imajo dejansko gladke aktivacijske funkcije, kot so logistična ali sigmoidna funkcija, hiperbolični tangens in usmerjena linearna enota (ReLU). ReLU je ponavadi najboljša izbira za hitro konvergenco, čeprav ima težavo, da nevroni med treningom "umrejo", če je stopnja učenja previsoka.

Izhod funkcije aktiviranja lahko preide na funkcijo izhoda za dodatno oblikovanje. Pogosto pa je izhodna funkcija funkcija identitete, kar pomeni, da se izhod aktivacijske funkcije prenese na nevrone, povezane navzdol.

Topologije nevronskih mrež

Zdaj, ko vemo o nevronih, se moramo spoznati s skupnimi topologijami nevronskih mrež. V povratnem omrežju so nevroni organizirani v ločene sloje: en vhodni sloj, poljubno število skritih obdelovalnih slojev in en izhodni sloj, izhodi iz vsake plasti pa gredo samo v naslednjo plast.

V povratnem omrežju z bližnjicami lahko nekatere povezave preskočijo eno ali več vmesnih plasti. V ponavljajočih se nevronskih mrežah lahko nevroni vplivajo nase bodisi neposredno bodisi posredno prek naslednje plasti.

Usposabljanje

Nadzorovano učenje nevronske mreže poteka tako kot vsako drugo strojno učenje. Omrežju predstavite skupine podatkov o vadbi, primerjate omrežni izhod z želenim izhodom, ustvarite vektor napake in na omrežju uporabite popravke, ki temeljijo na vektorju napak. Paketi podatkov o vadbi, ki se vodijo skupaj pred uporabo popravkov, se imenujejo epohe.

Za tiste, ki jih zanimajo podrobnosti, povratno razmnoževanje uporablja gradient funkcije napake (ali stroškov) glede na uteži in pristranskosti modela, da odkrije pravilno smer za zmanjšanje napake. Dve stvari nadzorujeta uporabo popravkov: algoritem za optimizacijo in spremenljivka hitrosti učenja, ki mora biti običajno majhna, da zagotovi konvergenco in prepreči povzročanje mrtvih nevronov ReLU.

Optimizatorji

Optimizatorji za nevronske mreže običajno uporabljajo neko obliko algoritma za gradientni spust za pogon povratnega razmnoževanja, pogosto z mehanizmom, ki preprečuje, da bi se zataknili v lokalnih minimumih, na primer za optimizacijo naključno izbranih mini serij (Stohastični gradientni spust) in uporabo zagon popravki gradienta. Nekateri algoritmi za optimizacijo prilagodijo tudi stopnjo učenja parametrov modela, tako da si ogledajo zgodovino gradientov (AdaGrad, RMSProp in Adam).

Kot pri vsakem strojnem učenju morate tudi napovedi nevronske mreže preveriti glede na ločen nabor podatkov za preverjanje. Brez tega tvegate ustvarjanje nevronskih mrež, ki si le zapomnijo svoje vložke, namesto da bi se naučile splošnih napovedovalcev.

Pravi DNN-ji

Globoka nevronska mreža za resnično težavo ima lahko več kot 10 skritih plasti. Njegova topologija je lahko preprosta ali precej zapletena.

Več slojev v omrežju, več značilnosti lahko prepozna. Na žalost, več slojev v omrežju, dlje časa bo potrebno za izračun in težje bo trenirati.

Algoritmi globokega učenja

Kot sem že omenil, se najbolj globoko učenje izvaja z globokimi nevronskimi mrežami. Konvolucijske nevronske mreže (CNN) se pogosto uporabljajo za strojni vid. Ponavljajoče se nevronske mreže (RNN) se pogosto uporabljajo za obdelavo naravnega jezika in drugih zaporedij, prav tako omrežja Long Short-Term Memory (LSTM) in nevronske mreže, ki temeljijo na pozornosti. Naključni gozdovi, znani tudi kot Naključni gozdovi, ki niso nevronske mreže, so koristni za vrsto težav s klasifikacijo in regresijo.

Nevronske mreže CNN

Konvolucijske nevronske mreže za simulacijo vizualne skorje običajno uporabljajo sloje z združevanjem, združevanjem, ReLU, popolnoma povezanimi in izgubnimi plastmi. Konvolucijski sloj v bistvu prevzame integrale številnih majhnih prekrivajočih se regij. Plast združevanja izvaja obliko nelinearnega zmanjšanja vzorčenja. Plasti ReLU uporabljajo funkcijo aktivacije, ki ni nasičena f (x) = največ (0, x). V popolnoma povezani plasti imajo nevroni povezave z vsemi aktivacijami v prejšnji plasti. Plast izgub izračuna, kako mrežni trening kaznuje odstopanje med napovedanimi in resničnimi oznakami z uporabo funkcije Softmax ali navzkrižne entropije za klasifikacijo ali evklidske funkcije izgube za regresijo.

RNN, LSTM in nevronske mreže, ki temeljijo na pozornosti

V nevronskih mrežah s povratnim pretokom informacije tečejo od vhoda skozi skrite plasti do izhoda. To omejuje omrežje na obravnavo posamezne države hkrati.

V ponavljajočih se nevronskih mrežah informacije krožijo skozi zanko, ki omrežju omogoča, da si zapomni nedavne prejšnje izhode. To omogoča analizo zaporedij in časovnih vrst. RNN imata dve skupni težavi: eksplodirajoči gradienti (enostavno jih je mogoče pritrditi z vpenjanjem gradientov) in izginjajoči gradienti (ni tako enostavno popraviti).

V LSTM-jih lahko omrežje pozabi (razvrsti) prejšnje informacije ali si jih zapomni, v obeh primerih s spreminjanjem uteži. To dejansko daje LSTM tako dolgoročni kot kratkoročni spomin in rešuje problem izginjajočega gradienta. LSTM lahko obravnavajo zaporedja na stotine preteklih vnosov.

Moduli pozornosti so splošni vhodi, ki uteži uporabijo na vektor vhodov. Hierarhični kodirnik nevronske pozornosti uporablja več plasti modulov pozornosti za obravnavo deset tisoč preteklih vložkov.

Naključni gozdovi

Druga vrsta algoritma globokega učenja - ne globoke nevronske mreže - je naključni gozd ali naključni gozd. Naključni gozd je zgrajen iz več plasti, vendar je namesto nevronov zgrajen iz odločitvenih dreves in daje statistično povprečje (način razvrščanja ali povprečje za regresijo) napovedi posameznih dreves. Randomizirani vidiki naključnih gozdov so uporaba zbiranja zagonskih pasov (drugače kot vreča) za posamezna drevesa in zajemanje naključnih podmnožic lastnosti.

Okviri globokega učenja

Čeprav bi lahko pisali programe za poglobljeno učenje iz prvih načel, je veliko bolj učinkovito uporabljati ogrodje za poglobljeno učenje, zlasti glede na to, da so optimizirani za uporabo z grafičnimi procesorji in drugimi pospeševalniki. Izstopajoči okvir je TensorFlow, ki je nastal pri Googlu. Najljubši API na visoki ravni za TensorFlow je Keras, ki se lahko uporablja tudi z drugimi zalednimi ogrodji.

PyTorch iz Facebooka in drugih je močna alternativa TensorFlowu in odlikuje ga podpora dinamičnim nevronskim mrežam, pri katerih se topologija omrežja lahko spreminja iz ene v drugo. Fastai je neodvisni API na visoki ravni, ki uporablja PyTorch kot zaledje.

MXNet, Amazon in drugi, je še ena močna alternativa TensorFlowu, ki trdi, da je boljša razširljivost. Gluon je najprimernejši visokokakovostni API za MXNet.

Chainer iz IBM-a, Intel-a in drugih je bil na nek način navdih za PyTorch, saj definira nevronsko mrežo z izvajanjem in podpira dinamična nevronska omrežja.

Medtem ko so vsi zgoraj omenjeni okviri predvsem Python, je Deeplearning4j (DL4J), prvotno iz Skyminda in zdaj projekt Apache, predvsem Java in Scala. DL4J je združljiv z Apache Spark in Hadoop.

ONNX je bil prvotno predlagan kot odprt ekosistem za zamenljive modele umetne inteligence. ONNX ima zdaj poleg formata izmenjave datotek tudi izvajalno okolje.

$config[zx-auto] not found$config[zx-overlay] not found