Care este diferența dintre o rețea neuronală și o rețea neuronală profundă și de ce funcționează mai bine cele profunde?
On decembrie 22, 2020 by adminNu am văzut întrebarea expusă exact în acești termeni și de aceea fac o nouă întrebare.
Ceea ce mă interesează nu este definiția unei rețele neuronale, ci înțelegerea diferenței reale cu o rețea neuronală profundă.
Pentru mai mult context: știu ce este o rețea neuronală și cum funcționează propagarea înapoi. Știu că un DNN trebuie să aibă mai multe straturi ascunse. Cu toate acestea, acum 10 ani în clasă am aflat că având mai multe straturi sau un singur strat (nu numărarea straturilor de intrare și ieșire) a fost echivalentă în ceea ce privește funcțiile pe care o rețea neuronală le poate reprezenta (a se vedea Cybenko „s Teorema de aproximare universală ) și că având mai multe straturi au făcut mai complexă analiza fără a câștiga performanțe. Evident, acest lucru nu mai este cazul.
Presupun, poate în mod greșit, că diferențele sunt mai mult în ceea ce privește algoritmul de formare și proprietăți decât structura și, prin urmare, Aș aprecia cu adevărat dacă răspunsul ar putea sublinia motivele care au făcut posibilă trecerea la DNN (de exemplu, dovadă matematică sau joc aleatoriu cu rețelele?) și de dorit (de ex. viteza convergenței?)
Comentarii
- FYI: Cât de adevărat este acest diapozitiv de învățare profundă?
- Dacă funcția pe care doriți să o aproximați este o funcție compozițională (obișnuită în procesarea imaginilor și multe domenii naturale datorate legii fizicii). Se poate dovedi că rețelele profunde pot exploata această compoziționalitate și pot atinge același nivel de eroare de aproximare cu un număr exponențial mai mic de neuroni (comparativ cu o rețea cu un singur strat ascuns). Ref: Poggio, Tomaso și colab. ” De ce și când rețelele adânci, dar nu superficiale, pot evita blestemul dimensionalității: o revizuire. ” International Journal of Automation and Computing (2017)
- Poate doriți să aruncați o privire la acest articol
- Consultați 6.4 din arxiv.org/pdf/2004.06093.pdf
Răspuns
Să începem cu o banalitate: rețeaua neuronală profundă este pur și simplu o rețea feedforward cu multe straturi ascunse.
Acest lucru este mai mult sau mai puțin tot ce trebuie spus despre definiție. Rețelele neuronale pot fi recurente sau feedforward; feedforward-urile nu au bucle în graficul lor și pot fi organizate în straturi. Dacă există „multe” straturi , atunci spunem că rețeaua este adâncă .
Câte câte straturi trebuie să aibă o rețea pentru a se califica ca adânc? Nu există răspuns clar la aceasta (este „sa cam ca și cum ai întreba câte boabe fac o grămadă ), dar de obicei, având două sau mai multe straturi ascunse contează la fel de adânc. În schimb, o rețea cu un singur strat ascuns este numită în mod convențional „superficială”. Bănuiesc că aici se va produce o anumită inflație și, în zece ani, oamenii ar putea crede că orice lucru cu mai puțin de, să zicem, zece straturi este superficial și potrivit numai pentru exerciții de grădiniță. În mod informal, „deep” sugerează că rețeaua este dificil de gestionat.
Iată o ilustrare, adaptată de aici :
Dar adevărata întrebare pe care o puneți este, desigur, de ce ar fi benefic să aveți mai multe straturi?
Cred că un răspuns oarecum uimitor este că nimeni nu știe cu adevărat. Există câteva explicații comune pe care le voi analiza pe scurt mai jos, dar niciuna dintre ele nu a fost demonstrată în mod convingător că este adevărată și nici măcar nu putem fi siguri că a avea mai multe straturi este cu adevărat benefic.
Spun că acest lucru este uimitor, deoarece învățarea profundă este foarte populară, bate toate recordurile (de la recunoașterea imaginilor, la redarea Go, la traducerea automată etc.) în fiecare an, se obișnuiește cu industria etc. etc. Și încă nu suntem deloc siguri de ce funcționează atât de bine.
Îmi bazez discuția pe Deep Cartea de învățare de Goodfellow, Bengio și Courville, care a ieșit în 2017 și este considerată pe scară largă cartea despre învățarea profundă (Este disponibil gratuit online.) Secțiunea relevantă este 6.4.1 Proprietăți și adâncime de aproximare universală .
Ați scris că
Acum 10 ani în clasă am aflat că a avea mai multe straturi sau un singur strat (fără a lua în considerare straturile de intrare și ieșire) era echivalent în ceea ce privește funcțiile pe care o rețea neuronală le poate reprezenta […]
Trebuie să vă referiți la așa-numita teorema de aproximare universală , demonstrată de Cybenko în 1989 și generalizat de diverse persoane în anii 90. Practic, se spune că o rețea neuronală superficială (cu 1 strat ascuns) poate aproxima orice funcție, adică poate învăța în principiu orice . Acest lucru este valabil pentru diferite funcții de activare neliniară, inclusiv unități liniare rectificate pe care majoritatea rețelelor neuronale le folosesc astăzi (manualele de referință Leshno și colab. 1993 pentru acest rezultat).
Dacă da, atunci de ce toată lumea folosește plase adânci?
Ei bine, un răspuns naiv este că funcționează mai bine. Iată o figură din cartea Învățare profundă care arată că ajută la mai multe straturi într-o anumită sarcină, dar același fenomen este adesea observat în diferite sarcini și domenii:
Știm că o rețea superficială ar putea performează la fel de bine ca și cele mai profunde. Dar nu; și de obicei nu. Întrebarea este — de ce? Răspunsuri posibile:
- Poate că o rețea superficială ar avea nevoie de mai mulți neuroni decât cea profundă?
- Poate că o rețea superficială este mai dificil de antrenat cu algoritmii noștri actuali (de exemplu, are minime locale mai urâte sau rata de convergență este mai lentă sau orice altceva)?
- Poate că o arhitectură superficială nu se potrivește cu tipul de probleme pe care de obicei încercăm să le rezolvăm (de exemplu, recunoașterea obiectelor este o „, proces ierarhic)?
- Altceva?
Cartea Învățare profundă argumentează pentru punctele glonț # 1 și # 3. În primul rând, susține că numărul de unități dintr-o rețea superficială crește exponențial cu complexitatea sarcinilor. Deci, pentru a fi utilă, o rețea superficială ar trebui să fie foarte mare; posibil mult mai mare decât o rețea profundă. Aceasta se bazează pe o serie de lucrări care demonstrează că rețelele de mică adâncime în unele cazuri ar avea nevoie exponențial de mulți neuroni; dar dacă de ex. Clasificarea MNIST sau jocul Go sunt astfel de cazuri nu este chiar clar. În al doilea rând, cartea spune acest lucru:
Alegerea unui model profund codifică o convingere foarte generală că funcția pe care dorim să o învățăm ar trebui să implice compunerea mai multor funcții mai simple. Acest lucru poate fi interpretat dintr-un punct de vedere al învățării reprezentării, spunând că noi credem că problema învățării constă în descoperirea unui set de factori de variație care pot fi descriși la rândul lor în termeni de alți factori de variație mai simpli.
Cred că „consensul” actual este că „este o combinație de puncte glonț # 1 și # 3: pentru sarcinile din lumea reală arhitectura profundă este adesea benefică și arhitectură superficială ar fi ineficient și ar necesita mult mai mulți neuroni pentru aceeași performanță.
Dar este departe de a fi dovedit. Luați în considerare de ex. Zagoruyko și Komodakis, 2016, Rețele reziduale largi . Rețelele reziduale cu peste 150 de straturi au apărut în 2015 și au câștigat diferite concursuri de recunoaștere a imaginilor. Acesta a fost un mare succes și părea un argument convingător în favoarea adâncimii; iată o cifră din o prezentare a primului autor pe hârtia de rețea reziduală (rețineți că timpul merge confuz în stânga aici):
Dar lucrarea legată mai sus arată că o „rețeaua reziduală cu„ numai ”16 straturi le poate depăși pe cele„ adânci ”cu peste 150 de straturi. Dacă acest lucru este adevărat, atunci întregul punct al figurii de mai sus se descompune.
Sau ia în considerare Ba și Caruana, 2014, Do Deep Networks Really Need to be Deep? :
În această lucrare oferim dovezi empirice conform cărora plasele de mică adâncime sunt capabile să învețe aceeași funcție ca și plasele de adâncime, iar în unele lucrări cazuri cu același număr de parametri ca rețelele profunde. Facem acest lucru formând mai întâi un model profund de ultimă generație și apoi antrenând un model superficial pentru a imita modelul profund. Modelul mimic este instruit folosind schema de compresie a modelului descrisă în secțiunea următoare. În mod remarcabil, cu compresia modelului, putem antrena plasele de mică adâncime pentru a fi la fel de precise ca unele modele profunde, chiar dacă nu suntem capabili să instruim aceste plase de mică adâncime pentru a fi la fel de exacte ca plasele adânci atunci când plasele de mică adâncime sunt antrenate direct pe original date de antrenament etichetate. Dacă o rețea superficială cu același număr de parametri ca o rețea profundă poate învăța să imite o rețea profundă cu înaltă fidelitate, atunci este clar că funcția învățată de acea rețea profundă nu trebuie să fie cu adevărat profundă.
Dacă este adevărat, acest lucru ar însemna că explicația corectă este mai degrabă glonțul meu # 2 și nu # 1 sau # 3.
După cum am spus – – încă nu știe nimeni cu siguranță.
Observații finale
Cantitatea de progrese realizate în învățarea profundă din ultimii ~ 10 ani este cu adevărat uimitoare, dar majoritatea acestor progrese au fost realizate prin încercări și erori și încă nu avem o înțelegere de bază despre ceea ce exact face ca rețelele profunde să funcționeze atât de bine. Chiar și lista lucrurilor pe care oamenii le consideră cruciale pentru înființarea unei rețele profunde eficiente pare să se schimbe la fiecare doi ani.
Renașterea profundă a învățării a început în 2006, când Geoffrey Hinton (care lucrase la neuronale) rețele de peste 20 de ani, fără prea mult interes din partea nimănui), au publicat câteva lucrări care oferă o modalitate eficientă de a antrena rețele profunde ( Lucrare științifică , Hârtie de calcul neuronal ). Trucul a fost să folosești pregătirea nesupravegheată înainte de a începe coborârea în gradient. Aceste lucrări au revoluționat domeniul și, timp de câțiva ani, oamenii au crezut că pregătirea nesupravegheată este cheia.
Apoi, în 2010, Martens a arătat că rețelele neuronale profunde pot fi antrenate cu metode de ordinul doi (așa-numitele metode fără Hessian) și pot depăși performanțele rețelelor instruite cu pre-antrenament: Învățare profundă prin optimizare fără Hessian . Apoi, în 2013, Sutskever și colab. a arătat că descendența de gradient stochastic, cu câteva trucuri foarte inteligente, poate depăși metodele fără Hessian: Despre importanța inițializării și a impulsului în învățarea profundă . De asemenea, în jurul anului 2010 oamenii și-au dat seama că utilizarea unităților liniare rectificate în locul unităților sigmoide face o diferență uriașă pentru coborârea în gradient. Abandonul a apărut în 2014. Rețelele reziduale au apărut în 2015. Oamenii continuă să găsească modalități din ce în ce mai eficiente de a antrena rețele profunde și ceea ce părea o perspectivă cheie în urmă cu 10 ani este adesea considerat o pacoste astăzi. Toate acestea sunt în mare parte determinate de încercări și erori și există puțină înțelegere a ceea ce face ca unele lucruri să funcționeze atât de bine și alte lucruri nu. Antrenarea rețelelor profunde este ca o pungă mare de trucuri. Trucurile de succes sunt de obicei raționalizate post factum.
Nu știm nici măcar de ce rețelele profunde ajung la un platou de performanță; doar 10 ani oamenii obișnuiau să dea vina pe minimele locale, dar gândirea actuală este că nu acesta este scopul (când platourile de performanță, gradienții tind să rămână mari). Aceasta este o întrebare atât de bază despre rețelele profunde și nici măcar nu știm asta .
Actualizare: Acesta este mai mult sau mai puțin subiectul discuției NIPS 2017 a lui Ali Rahimi despre învățarea automată ca alchimie: https://www.youtube.com/watch?v=Qi1Yry33TQE .
[Acest răspuns a fost complet rescris în aprilie 2017, deci unele dintre comentariile de mai jos nu se mai aplică.]
Comentarii
- Răspuns frumos! 1) După cum a menționat și @Nicolas, rezultă că există o teoremă ( en.wikipedia.org/wiki/Universal_approximation_theorem ) care susține că un n neuronal feed-forward lucrați cu un singur strat ascuns și un număr finit de neuroni pot aproxima orice funcție continuă (inclusiv un DNN) de pe hipercubul unității. Se susține că acest rezultat este independent de alegerea funcției de activare. 2) Nu sunt sigur dacă ultima dvs. remarcă (adică Hinton s-a alăturat Google) este relevantă pentru succesul recent al DNN-urilor; Hinton s-a alăturat Google mult timp după ce DNN-urile au devenit epidemice!
- Poate că ‘ folosim terminologia în mod diferit. Perceptronii nu au ‘ t un strat ascuns – intrarea lor este de date, ieșirea lor este clasificarea. O rețea multistrat constă dintr-o grămadă de perceptroni conectați astfel încât ieșirea din stratul $ n-1 $ formează intrarea în stratul $ n $. O rețea cu un singur strat ascuns are astfel trei straturi (intrare, ascuns, ieșire). Acest strat ascuns este cheia pentru aproximarea universală: perceptronii, care nu au, nu pot ‘ să calculeze lucruri precum XOR, dar rețelele multistrat pot.
- Liniaritatea lucrul pare a fi o combinație de două probleme. Perceptronii pot calcula doar limite de decizie liniare – poate trage doar linii drepte pentru a împărți două clase. Rețelele multistrat pot ” trasa ” granițe mai complicate. Dar nici perceptronii, nici rețelele multistrat nu folosesc funcții de activare liniară, cu excepția stratului de ieșire al unei rețele multistrat. Funcția de activare a perceptronului este o direcție mare (1 dacă x > 0, 0 altfel); rețelele multistrat folosesc adesea sigmoide, dar constrângerile pentru universal aprox. sunt destul de ușoare: neconstante, mărginite și în creștere monotonă.
- Răspuns excelent @amoeba, imaginea de la început m-a cam dezamăgit să citesc restul, dar a fost pentru bine. Perceptronul este contrapartida regresiei liniare pentru clasificare, motiv pentru care atunci când oamenii folosesc soluția de formă închisă (pseudoinversă) pentru a rezolva problema în locul metodelor online (sgd), ea ‘ se numește regresie logistică, din cauza logisticii (funcția sigmoidă) = perceptron. O regresie perceptronică / logistică poate doar ‘ trasa ‘ limite decizionale liniare și că ‘ s de ce ‘ se numește liniar.
- Cu toate acestea, perceptronul cu mai multe straturi (ceea ce ați desenat în prima dvs. imagine din stânga) poate combina mai multe decizii liniare limitele și astfel poate partiționa spațiul pentru a rezolva problema (neliniară) XOR, cum a menționat @Matt. Deci, multe dintre limitele de decizie liniare combinate pot face un cerc, de exemplu, dacă vă strângeți ochii. Depinde de modul în care vă gândiți – decizia este încă liniară într-un spațiu mai înalt, dacă sunteți familiarizați cu nucleele, ‘ este același lucru.
Răspuns
Răspuns bun până acum, deși există câteva lucruri pe care nimeni nu le-a menționat aici, aici sunt 0,02 $
Voi răspunde doar sub forma unei povești, ar trebui să fac lucrurile mai distractive și mai clare. Niciun tldr aici. În acest proces, ar trebui să puteți înțelege care este diferența.
Există mai multe motive pentru care DNN-urile au declanșat atunci când au făcut-o (stelele trebuiau să se alinieze, la fel ca toate lucrurile similare, este doar o chestiune de drept locul, momentul potrivit etc.).
Unul dintre motive este disponibilitatea datelor, o mulțime de date (date etichetate). Dacă doriți să puteți generaliza și învăța ceva de genul „prioruri generice” sau „prioruri universale” „(cunoscut și ca elemente de bază care pot fi refolosite între sarcini / aplicații) atunci aveți nevoie de o mulțime de date. Și aș putea adăuga date sălbatice, nu seturi de date sterile înregistrate cu atenție în laborator cu iluminare controlată și toate acestea. Mecanice Turk a făcut acest lucru (etichetare) posibil.
În al doilea rând, posibilitatea de a antrena rețele mai mari mai repede folosind GPU-uri a făcut experimentarea mai rapidă. Unitățile ReLU au făcut lucrurile mai rapide din punct de vedere computerizat și au oferit regularizarea lor, deoarece trebuia să utilizați mai multe unități în un strat pentru a putea comprima aceleași informații, deoarece straturile erau acum mai multe spars E, așa că a mers și cu abandonul. De asemenea, au ajutat la o problemă importantă care se întâmplă atunci când stivați mai multe straturi. Mai multe despre asta mai târziu. Diverse trucuri multiple care au îmbunătățit performanța. La fel ca utilizarea mini-loturilor (care este de fapt dăunătoare pentru eroarea finală) sau a convoluțiilor (care de fapt nu captează la fel de multă varianță ca câmpurile receptive locale), dar sunt mai rapide din punct de vedere al calculului.
Între timp, oamenii discutau dacă le-au plăcut mai slabe sau mai dolofane, mai mici sau mai înalte, cu sau fără pistrui, etc. Optimizarea a fost ca și cum ar fizz sau se lovește, astfel încât cercetarea se îndrepta spre metode mai complexe de antrenament, cum ar fi gradientul conjugat și metoda newtons, Toți ne-am dat seama că nu există prânz gratuit. Rețelele erau în eroare.
Ceea ce a încetinit lucrurile a fost problema gradientului de dispariție . Oamenii au spus: „Vai, omule! Pe scurt, înseamnă că a fost greu să reglezi eroarea pe straturi mai apropiate de intrări. Pe măsură ce adaugi mai multe straturi pe tort, devine prea vacilant. Nu ai putea” t propagă înapoi eroarea semnificativă înapoi la primele straturi. Cu cât mai multe straturi, cu atât s-a înrăutățit. Bummer.
Unii oameni și-au dat seama că utilizarea entropiei încrucișate ca funcție de pierdere (bine, din nou, clasificare și recunoaștere a imaginii) oferă un fel de regularizare și ajută la rețeaua saturată și la rândul ei gradientul Nu s-a putut ascunde atât de bine.
Ceea ce a făcut, de asemenea, posibilă lucrurile a fost pregătirea pre-strat pe metode nesupravegheate. Practic, luați o grămadă de codificatoare automate și învățați reprezentări din ce în ce mai puțin abstracte ca creșteți raportul de compresie. Greutățile din aceste rețele au fost utilizate pentru a inițializa versiunea supravegheată. Acest lucru a rezolvat problema gradientului de dispariție într-un alt mod: începeți deja antrenamentul supravegheat dintr-o poziție de pornire mult mai bună. Așa că toate celelalte rețele s-au ridicat și au început să se revolte. Dar rețelele oricum aveau nevoie de supraveghere, altfel era imposibil să păstrezi datele mari.
Acum, pentru ultima parte, acest lucru duce în cele din urmă la răspunsul tău, care este prea complex pentru a fi pe scurt: de ce mai multe straturi și nu doar unul. Pentru că putem! și pentru că contextul și descriptorii caracteristicilor invariante. și pool-uri.
Iată un exemplu: aveți un set de date de imagini, cum veți antrena un plan NN folosind aceste date? Ei bine, naiv, luați să spunem fiecare rând și îl concatenezi într-un singur vector lung și asta este contribuția ta. Ce înveți?Ei bine, unele funcții de prostii fuzzy care s-ar putea să nu semene cu nimic, din cauza numeroaselor tipuri de varianțe pe care le conțin obiectele din imagine și nu puteți distinge între lucruri relevante și irelevante. Și la un moment dat, rețeaua trebuie să uite pentru a putea reînvață lucruri noi. Deci, există problema capacității. Aceasta este o dinamică mai neliniară, dar intuiția este că trebuie să măriți numărul de neuroni pentru a putea include mai multe informații în rețeaua dvs.
Deci, ideea este că, dacă doar introduceți imaginea ca o singură piesă, adăugarea de straturi suplimentare nu face prea mult pentru dvs., deoarece nu puteți învăța abstracții , ceea ce este foarte important. A face lucrurile holistic nu funcționează așa de bine, cu excepția cazului în care faceți lucruri mai simple cu rețeaua, cum ar fi concentrarea pe un anumit tip de obiect, așa că vă limitați la o singură clasă și alegeți unele proprietăți globale ca obiectiv de clasificare. p>
Deci, ce trebuie făcut? Uită-te la marginea ecranului și încearcă să citești acest text. Problemă? Oricât de stupid ar părea, trebuie să te uiți la ceea ce citești. În caz contrar, este prea neclar / nu există suficientă rezoluție / granularitate. Să numim zona de focalizare câmpul receptiv. Rețelele trebuie să se poată concentra și ele. Practic, în loc să utilizați întreaga imagine ca intrare, mutați o fereastră glisantă de-a lungul imaginii și apoi o utilizați ca intrare în rețea (puțin mai puțin stocastică decât fac oamenii). Acum aveți, de asemenea, șansa de a capta corelații între pixeli și, prin urmare, obiecte și puteți face, de asemenea, distincția între pisica somnoroasă așezată pe o canapea și o pisică cu capul în jos. Îngrijit, credința în umanitate restaurată. Rețeaua poate învăța abstracții locale într-o imagine pe mai multe niveluri. Rețeaua învață filtre, inițial simple și apoi se acumulează pe cele pentru a învăța filtre mai complexe.
Deci, pentru a rezuma lucrurile: câmpuri receptive / convoluții, inițializare nesupravegheată, unități liniare rectificate, abandon sau altă regularizare metode. Dacă sunteți foarte serios în această privință, vă recomand să aruncați o privire la Învățarea profundă în rețelele neuronale: o prezentare generală a lui Schmidhuber aici este adresa URL pentru preimprimare http://arxiv.org/abs/1404.7828
Și amintiți-vă: învățare mare, date profunde. Word.
Comentarii
- Bună, Florin, mulțumesc pentru răspunsul drăguț! Îmi place stilul de scriere. Când vorbești despre ferestre glisante, te referi la modul în care straturile convoluționale de NN convoluționale observă diferite părți ale unei imagini și proiectează activările lor într-un spațiu cu dimensiuni mai mici?
- cam da, nu sunt necesare contururi, dar ele ‘ sunt mai rapide din punct de vedere al calculului, deoarece greutățile sunt limitate. verificați în această lucrare, unde nu ‘ utilizează convoluții și utilizează câmpuri receptive locale. cuvintele cheie importante sunt locale / ierarhice: arxiv.org /pdf/1112.6209.pdf
- De asemenea, cred că este cel mai apropiat răspunsul sistematic este sobi ‘ s. el ‘ a primit votul meu pozitiv. Tocmai am adăugat câteva lucruri aici și colo cu puțină sare și piper.
Răspunde
În termenii profani, principala diferență cu clasicul Rețele neuronale este că au straturi mult mai ascunse.
Ideea este să adăugați etichete straturilor pentru a face mai multe straturi de abstractizare:
De exemplu, o rețea neuronală profundă pentru recunoașterea obiectelor :
- Stratul 1: pixeli simpli
- Stratul 2: muchii
- Stratul 3: Forme (cercuri, pătrate)
- Stratul n: obiect întreg
Puteți găsi o explicație bună la această întrebare în Quora .
Și, dacă sunteți interesat de acest subiect, aș recomanda să aruncați o privire la acest aspect carte .
Comentarii
- Mulțumesc David, dar eu nu ‘ nu vedeți cu adevărat cum să adăugați doar etichete care să o facă diferită. De asemenea, îmi amintesc că a fost o problemă dificilă de înțeles și descompus cum a fost codificată o funcție prin rețeaua neuronală. Trebuie să existe altceva decât să ai doar mai multe straturi. În ceea ce privește exemplul pe care l-ați dat, cred că puteți antrena rețele neuronale individual (școală veche) pentru a face fiecare dintre sarcini.
- Puterea vine atunci când o utilizați ca o conductă, astfel încât intrările și ieșirile din straturile de straturi de la fiecare strat.
- Am citit primul dvs. link, care este o resursă bună, și alte întrebări legate de quora și se, cu toate acestea, exemplul pe care l-ați dat nu pare exact cu ceea ce am citit. ‘ Voi încerca să-mi răspund la propria întrebare, rezumând lecturile tezelor.
- Deși resursa indicată este interesantă, actualul răspuns nu răspunde la întrebare.
- Puteți indica un exemplu în care straturile sunt etichetate (altele decât într-un mod pur descriptiv)?Este cu siguranță adevărat că straturile ascunse par a avea caracteristici succesive mai complexe în fiecare strat ascuns, dar ” adăugarea etichetelor ” pare să implice că acestea ‘ este pregătit în mod special pentru a face acest lucru.
Răspuns
NN:
- un singur strat ascuns este suficient, dar poate avea mai multe straturi, totuși, ordonare de la stânga la dreapta (model: feed forward NN)
- instruit numai în mod supravegheat (propagare înapoi )
- când se utilizează mai multe straturi, instruiți toate straturile în același timp (același algoritm: propagarea înapoi), mai multe straturi fac dificilă utilizarea, deoarece erorile devin prea mici
- greu de înțelegeți ce se învață la fiecare strat
DNN:
- sunt necesare mai multe straturi, margini nedirecționate (model: mașină boltzman restricționată)
- instruit mai întâi într-un mod nesupravegheat, în care rețelele învață caracteristici relevante învățând să-și reproducă informațiile , apoi antrenat într-un mod supravegheat care reglează bine caracteristicile pentru a clasifica
- instruiți straturile unul câte unul de la intrare la ieșire (algoritm: divergență contrastivă)
- fiecare strat clar conține caracteristici ale abstracției crescânde
Trecerea la DNN se datorează a trei descoperiri independente care au avut loc în 2006.
În ceea ce privește teoremele despre NN, cea la care face referire întrebarea este :
- teorema de aproximare universală sau teorema Cybenko: o rețea neuronală feed-forward cu un singur strat ascuns poate aproxima orice funcție continuă. Cu toate acestea, în practică poate necesita mult mai mulți neuroni dacă se folosește un singur strat ascuns.
Comentarii
- -1? Într-adevăr? Am citit toate acestea în literatură și am făcut o comparație punct cu punct a ambelor abordări! Vă rugăm să spuneți cel puțin ceea ce nu este corect …
- Nu am votat negativ (poate că unui votant negativ nu i-a plăcut să răspundeți la propria întrebare? Dar asta este bineînțeles perfect aici), dar aici este una lucru care nu este pe deplin corect. Ceea ce enumerați ca proprietăți ale DNN: că marginile nu sunt direcționate, că ‘ este antrenat mai întâi într-un mod nesupravegheat, că straturile sunt antrenate unul câte unul – toate acestea se referă doar la rețele profunde de convingeri sugerate de Hinton în 2006. Acest lucru nu este neapărat adevărat pentru rețelele neuronale profunde în general și, de fapt, există acum multe modalități de a antrena o rețea profundă fără toate acestea. Vedeți răspunsul meu.
Răspuns
De asemenea, am fost un pic confuz la început de diferența dintre rețelele neuronale (NN) și rețelele neuronale profunde (DNN), totuși „adâncimea” se referă doar la numărul de parametri &, din păcate. Puteți lua ca un fel de re -branding sub așa-numita „mafie canadiană”.
În urmă cu câțiva ani, am avut și rețele neuronale ca parte a unei clase și am făcut recunoașterea cifrelor, aproximarea undelor și aplicații similare utilizând NN, care avea mai multe straturi și ieșiri ascunse și tot acel jazz pe care îl au DNN-urile. Cu toate acestea, ceea ce nu aveam atunci a fost puterea de calcul.
Motivul care a făcut posibilă și dorită trecerea la DNN sunt progresele în dezvoltarea hardware. Pur și simplu, acum putem calcula mai mult, mai rapid și mai mult paralelizat (DNN pe GPU „s), în timp ce înainte, timpul era blocajul pentru NN” s.
După cum se menționează pe pagina Wikipedia pentru Deep Învățând , partea „profundă” se referă în principal la faptul că caracteristicile interacționează într-un mod neliniar pe mai multe straturi, efectuând astfel extragerea și transformarea caracteristicilor. Acest lucru s-a făcut și în NN-uri standard, totuși la o scară mai mică.
Pe aceeași pagină, aici aveți definiția „O rețea neuronală profundă (DNN) este o rețea neuronală artificială (ANN) cu mai multe straturi ascunse de unități între straturile de intrare și de ieșire.”
Comentarii
- Bună Mttk, vă mulțumim pentru răspuns, a arătat mai multă lumină asupra acestei întrebări. În ceea ce privește ultimul dvs. punct, da structural este foarte ușor de explicat diferența (1 vs mai multe straturi), dar diferența modul în care sunt folosite aceste straturi multiple pare să fie ceea ce contează și este mult mai puțin clar. De aceea am concentrat întrebarea nu pe structură ..
- Sincer, nu ‘ nu sunt de acord cu ultima definiție la care am făcut referire – deoarece ANN / NN cu un singur strat ascuns nu sunt cu adevărat eficiente și aveți nevoie de multiple pentru orice fel de predicție mai complexă (I ‘ m spunând asta pentru că cred că DNN a fost un cuvânt la modă inutil adăugat la un termen deja bun, NN). Cred că puteți utiliza NN și DNN în mod interschimbabil (pentru că în zilele noastre nimeni nu folosește NN cu un singur strat ascuns ‘ s), în timp ce utilizarea straturilor diferă între tipurile de DN s (CNN, RBM, RNN, LSTM, CW-RNN, …) și nu ideea de DNN în sine.
Răspuns
Din câte știu, ceea ce se numește astăzi rețeaua neuronală profundă (DNN) nu are nimic fundamental sau filosofic diferit de vechea rețea neuronală standard (NN). Deși, în teorie, se poate aproxima un NN arbitrar folosind un NN superficial cu doar un singur strat ascuns, cu toate acestea, acest lucru nu înseamnă că cele două rețele vor funcționa în mod similar atunci când sunt antrenate folosind același algoritm și date de antrenament. De fapt, există un interes tot mai mare pentru formarea rețelelor de mică adâncime, care au performanțe similare rețelelor profunde. Totuși, modul în care se face acest lucru este prin antrenarea mai întâi a unei rețele adânci și apoi antrenarea rețelei superficiale pentru a imita ieșirea finală (adică ieșirea penultimului strat) a rețelei profunde. Vedeți, ceea ce face ca arhitecturile profunde să fie favorabile este că tehnicile de antrenament de astăzi (propagarea spatelui) se întâmplă să funcționeze mai bine atunci când neuronii sunt așezați într-o structură ierarhică.
O altă întrebare care ar putea fi pusă este: de ce Neural Rețelele (în special DNN-urile) au devenit atât de populare brusc. După părerea mea, ingredientele magice care au făcut DNN-urile atât de populare recent sunt următoarele:
A. Seturi de date îmbunătățite și capabilități de procesare a datelor
1. Seturi de date la scară largă cu milioane de imagini diverse au devenit disponibile
2. Implementarea rapidă a GPU a fost pusă la dispoziția publicului
B. Algoritmi de instruire și arhitecturi de rețea îmbunătățite
1. Unități liniare rectificate (ReLU) în loc de sigmoid sau tanh
2. Arhitecturile de rețea profundă au evoluat de-a lungul anilor
A-1) Până foarte recent, cel puțin în Computer Vision, nu am putut antrena modele pe milioane de imagini etichetate; pur și simplu pentru că nu existau seturi de date etichetate de acea dimensiune. Se pare că, pe lângă numărul de imagini, granularitatea setului de etichete este, de asemenea, un factor crucial în succesul DNN-urilor (vezi Figura 8 din această lucrare , de Azizpour și colab.).
A-2) S-a depus mult efort ingineresc a început să facă posibilă formarea DNN-urilor care funcționează bine în practică, mai ales apariția implementărilor GPU. Una dintre primele implementări GPU de succes ale DNN-urilor, rulează pe două GPU-uri paralele; totuși, durează aproximativ o săptămână pentru a forma un DNN pe 1,2 milioane de imagini din 1000 de categorii folosind GPU-uri de ultimă generație (vezi această lucrare, de Krizhevsky și colab.) .
B-1) Utilizarea unităților liniare rectificate simple (ReLU) în loc de sigmoid și Funcțiile tanh sunt probabil cel mai mare element de bază pentru a face posibilă instruirea DNN-urilor. Rețineți că atât funcțiile sigmoide, cât și funcțiile tanh au aproape gradient zero aproape peste tot, în funcție de cât de repede tranzitează de la nivelul de activare scăzut la ridicat; în caz extrem, când tranziția este bruscă, obținem o funcție de pas care are panta zero peste tot cu excepția unui moment în care se întâmplă tranziția.
B-2) Povestea modului în care arhitecturile rețelei neuronale s-au dezvoltat de-a lungul anilor îmi amintește de modul în care evoluția schimbă structura unui organism în natură. Partajarea parametrilor ( de exemplu, în straturi convoluționale), regularizarea abandonului, inițializarea, programarea ratei de învățare, gruparea spațială, sub-eșantionarea în straturile mai adânci și multe alte trucuri care sunt acum considerate standard în formarea DNN-urilor au fost dezvoltate, sfârșit adaptat de-a lungul anilor pentru a face posibilă formarea rețelelor profunde așa cum este astăzi.
Comentarii
- +1. Primul răspuns în acest fir care oferă un răspuns adecvat la întrebările OP ‘. Multe puncte bune aici. Singurul meu comentariu major ar fi că, pe lângă A și B, Există, de asemenea, C: Creșterea masivă a dimensiunii seturilor de date de formare disponibile. Acest lucru pare a fi cel puțin la fel de important ca A și B.
- Nu cred că ‘ cred că relu este atât de important: ziarul Alex Krizhevsky a susținut că a făcut nn învățarea de 6 ori mai rapid. Cele mai multe dintre celelalte modificări ale structurii rețelei pe care le menționați se referă la nns convoluționale, care doar copiază conductele standard de procesare a imaginii (lucru bun, dar nu există informații noi)
- @amoeba: dimensiunea setului de date este sub A. I a actualizat textul pentru a-l evidenția.
- @ seanv507: într-adevăr, am avut în vedere rețelele convoluționale (ConvNets) atunci când scriu răspunsul. Dacă există alți factori importanți (fără legătură cu ConvNets) pe care i-am ratat, aș aprecia dacă îi menționați. Aș fi bucuros să-mi actualizez răspunsul în consecință.În ceea ce privește ReLU-urile, instruirea nns-urilor cu tanh și sigmoid este considerabil mai dificilă decât cu ReLU-urile datorită problemei gradienților de dispariție: unitățile se satură ușor și, odată ce se întâmplă acest lucru, durează mult să devină din nou nesaturate (gradienții sunt foarte mici când unitatea este este saturat)
Răspuns
Diferența dintre un NN „Deep” și un NN standard este pur calitativ: nu există o definiție a ceea ce înseamnă „adânc”. „Adânc” poate însemna orice, de la arhitecturile extrem de sofisticate utilizate de Google, Facebook și co, care au 50-80 sau chiar mai multe straturi, până la 2 arhitecturi de straturi ascunse (4 straturi în total). Nu aș fi surprins dacă ai putea găsi chiar articole care pretind că fac învățare profundă cu un singur strat ascuns, deoarece „adânc” nu înseamnă mult.
„Rețea neuronală” este, de asemenea, un cuvânt care nu „Nu au o semnificație foarte precisă. Acoperă un ansamblu extrem de mare de modele, de la mașini boltzman aleatorii (care sunt grafice nedirecționate) până la arhitecturi avansate cu diverse funcții de activare. Majoritatea NN-urilor vor fi instruite folosind backprop, dar nu trebuie fi cazul, astfel încât chiar și algoritmii de formare nu sunt foarte omogeni.
În ansamblu, învățarea profundă, NN-urile profunde și NN-urile au devenit cuvinte care captează o multitudine de abordări.
Pentru referințe introductive bune la „ceea ce s-a schimbat”: Învățarea profundă a reprezentărilor: Privind înainte , Bengio, 2013 este o bună recenzie + perspectivă pentru viitor. Este necesar ca rețelele adânci să fie adânci? Ba & Caruana, 2013 care ilustrează tha A fi profund s-ar putea să nu fie util pentru reprezentare, ci pentru învățare.
Comentarii
- Referințele pe care le dai sunt foarte utile , dar restul răspunsului în forma curentă (care citește ca ” NN nu înseamnă nimic, DNN nu înseamnă nimic, NN și DNN pot face o mulțime de lucruri „) nu mult, v-ați gândi să îl revizuiți?
Răspundeți
Pentru a extinde răspunsul lui David Gasquez, una dintre principalele diferențe dintre rețelele neuronale profunde și rețelele neuronale tradiționale este că nu folosim doar propagarea înapoi pentru rețelele neuronale profunde.
De ce? Deoarece propagarea inversă antrenează straturile ulterioare mai eficient decât antrenează straturile anterioare – pe măsură ce mergeți din ce în ce mai devreme în rețea, erorile devin mai mici și mai difuze. Deci, o rețea cu zece straturi va fi în principiu șapte straturi de greutăți aleatorii, urmate de trei straturi de greutăți montate, și va funcționa la fel de bine ca o rețea cu trei straturi. Consultați aici pentru mai multe.
Deci, descoperirea conceptuală tratează problemele separate (straturile etichetate) ca probleme separate – dacă mai întâi încercați să rezolvați problema construirii unui prim strat generic bun, și apoi încercați să rezolvați problema construirii unui al doilea strat generic bun, în cele din urmă vom avea un spațiu de caracteristici profund pe care îl putem alimenta cu problema noastră reală.
Răspuns
Nu aș spune că există vreo diferență filosofică mare între NN și DNN (de fapt aș spune că DNN este doar un marketing termen pentru a distinge de NN „eșuat”. Ceea ce s-a schimbat este dimensiunea seturilor de date. În esență, rețelele neuronale sunt în prezent cei mai buni estimatori statistici $ O (n) $, funcționând bine pentru seturi de date mari cu dimensiuni mari (de exemplu, imagineet).
Cred că ar trebui să faceți un pas înapoi și să vedeți că acest lucru a creat o reapariție în AI superficial – de ex punga de cuvinte pentru analiza sentimentului și alte aplicații lingvistice și punga vizuală de cuvinte a fost abordarea principală a recunoașterii imaginilor înainte de DNN. Nimeni nu spune că punga de cuvinte este un adevărat model de limbaj, dar este o soluție de inginerie eficientă. Deci aș spune că DNN este un „sac vizual de cuvinte” mai bun – vezi de ex. Szegedy și colab. 2013 Proprietăți interesante ale rețelelor neuronale și Nguyen și colab. Rețelele neuronale profunde sunt ușor de păcălit: predicții de încredere ridicată pentru imagini de nerecunoscut unde este clar că nu se învață structuri de ordin superior etc. DNN).
Comentarii
- @amoeba această altă lucrare este aproape o lucrare însoțitoare a primei (din nou, cu multe imagini!)
Răspuns
Pentru a răspunde la ultima întrebare, uitați-vă la această lucrare de la Telgarsky care spune că pentru o anumită problemă de clasificare „toate rețelele superficiale cu mai puține decât exponențial (în k) multe noduri prezintă erori de cel puțin 1/6, în timp ce o rețea profundă cu 2 noduri în fiecare dintre straturile 2k atinge zero eroare.”
Problema de clasificare în cauză este problema n-punct alternativ în care considerăm intervalul $ [0,1-2 ^ {- k}] $ astfel încât intrarea $ x_i $ să fie $ 2 ^ k $ puncte distribuite uniform în acel interval și $ y_i $ sunt date de $ y_i = 1 $ dacă $ i $ este ciudat și $ y_i = 0 $ dacă $ i $ este egal. Întrebăm apoi, cât de bine pot rețelele superficiale fără lățimi exponențiale să capteze această relație în comparație cu rețelele profunde cu doar două noduri în fiecare strat? în $ k $ ) număr de straturi cu doar două noduri în fiecare strat, în timp ce am avea nevoie exponențial de multe (în $ k $ ) noduri pentru a obține același rezultat într-o rețea superficială.
Dovada citatului implică observarea că compoziția activărilor neliniare aplicate transformărilor afine (adică cu un număr mai mare de straturi) reușește să capteze mai multă variabilitate în date decât însumând aceleași funcții (ca în când adăugăm noduri la straturi).
Răspuns
Deep Learning este un set de algoritmi în învățarea automată care încercați să modelați abstracții la nivel înalt în date utilizând arhitecturi compuse din transformări multiple neliniare .
Sursă: Arno Candel
Lasă un răspuns