Hva er forskjellen mellom et nevralt nettverk og et dypt nevralt nettverk, og hvorfor fungerer de dype bedre?
On desember 22, 2020 by adminJeg har ikke sett spørsmålet som er presist i disse vilkårene, og det er derfor jeg lager et nytt spørsmål.
Det jeg er interessert i å vite er ikke definisjonen av et nevralt nettverk, men å forstå den faktiske forskjellen med et dypt nevralt nettverk.
For mer sammenheng: Jeg vet hva et nevralt nettverk er og hvordan backpropagation fungerer. Jeg vet at et DNN må ha flere skjulte lag. Men for 10 år siden i klassen lærte jeg at det å ha flere lag eller ett lag (ikke å telle inngangs- og utgangslagene) var ekvivalent når det gjelder funksjonene et nevralt nettverk er i stand til å representere (se Cybenko «s Universal tilnærmingsteori ), og at det å ha flere lag gjorde det mer komplekst å analysere uten gevinst i ytelse. Det er tydeligvis ikke tilfelle lenger.
Jeg antar, kanskje feil, at forskjellene er i form av treningsalgoritme og egenskaper i stedet for struktur, og derfor Jeg vil virkelig sette pris på om svaret kunne understreke årsakene som gjorde overgangen til DNN mulig (f.eks. Matematisk bevis eller tilfeldig spill med nettverk?) og ønskelig (f.eks. konvergenshastighet?)
Kommentarer
- FYI: Hvor sant er dette lysbildet for dyp læring?
- Hvis funksjonen du vil tilnærme, er en komposisjonsfunksjon (vanlig i bildebehandling og mange naturlige domener på grunn av fysikkens lov). Det kan bevises at dype nettverk kan utnytte denne komposisjonaliteten og oppnå samme nivå av tilnærmingsfeil med eksponentielt mindre antall nevroner (sammenlignet med et enkelt skjult lag nettverk). Ref: Poggio, Tomaso, et al. » Hvorfor og når kan dype, men ikke grunne nettverk unngå forbannelsen av dimensjonalitet: en gjennomgang. » International Journal of Automation and Computing (2017)
- Det kan være lurt å ta en titt på denne artikkelen
- Se 6.4 av arxiv.org/pdf/2004.06093.pdf
Svar
La oss starte med en trivialitet: Dyp nevralt nettverk er rett og slett et fremovernettverk med mange skjulte lag.
Dette er mer eller mindre alt det er å si om definisjonen. Nevrale nettverk kan være tilbakevendende eller fremover, feedforward de har ingen sløyfer i grafen og kan organiseres i lag. Hvis det er «mange» lag , så sier vi at nettverket er dypt .
Hvor mange lag må et nettverk ha for å kvalifisere som dypt? Det er ingen bestemt svar på dette (det «sa litt som å spørre hvor mange korn som lager en bunke ), men vanligvis har to eller flere skjulte lag teller så dypt. I kontrast blir et nettverk med bare et skjult lag konvensjonelt kalt «grunt». Jeg mistenker at det vil være noe inflasjon på gang her, og om ti år kan folk tenke at alt med mindre enn, for eksempel ti lag, er grunt og bare egnet for barnehageøvelser. Uformelt antyder «dyp» at nettverket er tøft å håndtere.
Her er en illustrasjon, tilpasset herfra :
Men det virkelige spørsmålet du stiller er selvfølgelig hvorfor ville det være gunstig å ha mange lag?
Jeg tror at noe forbløffende svaret er at ingen virkelig vet. Det er noen vanlige forklaringer som jeg kort vil gjennomgå nedenfor, men ingen av dem har blitt overbevist overbevisende for å være sanne, og man kan ikke engang være sikker på at det å ha mange lag er virkelig fordelaktig.
Jeg sier at dette er forbløffende, fordi dyp læring er enormt populært, bryter alle rekordene (fra bildegjenkjenning, til å spille Go, til automatisk oversettelse, etc.) hvert år, blir vant til av bransjen, etc. osv. . Og vi er fortsatt ikke helt sikre på hvorfor det fungerer så bra.
Jeg baserer diskusjonen min på Deep Learning bok av Goodfellow, Bengio og Courville som gikk ut i 2017 og er allment ansett å være boka om dyp læring. (Den er gratis tilgjengelig online.) Den relevante delen er 6.4.1 Universelle tilnærmingsegenskaper og dybde .
Du skrev at
For 10 år siden i klassen lærte jeg at det å ha flere lag eller ett lag (ikke teller inngangs- og utgangslagene) var ekvivalent når det gjelder funksjonene et nevralt nettverk er i stand til å representere […]
Du må referere til den såkalte Universal tilnærmingsteori , bevist av Cybenko i 1989 og generalisert av forskjellige mennesker på 1990-tallet. Det står i utgangspunktet at et grunt nevralt nettverk (med 1 skjult lag) kan tilnærme hvilken som helst funksjon, dvs. kan i prinsippet lære hva som helst . Dette gjelder for ulike ikke-lineære aktiveringsfunksjoner, inkludert rettet lineære enheter som de fleste nevrale nettverk bruker i dag (læreboken refererer til Leshno et al. 1993 for dette resultatet).
Hvis ja, hvorfor bruker alle dype garn?
Vel, et naivt svar er at de fungerer bedre. Her er en figur fra Deep Learning boken som viser at det hjelper å ha flere lag i en bestemt oppgave, men det samme fenomenet blir ofte observert på tvers av forskjellige oppgaver og domener:
Vi vet at et grunt nettverk kunne utføre like bra som de dypere. Men det gjør det ikke; og de gjør det vanligvis ikke. Spørsmålet er — hvorfor? Mulige svar:
- Kanskje et grunt nettverk trenger flere nevroner enn det dype?
- Kanskje et grunt nettverk er vanskeligere å trene med våre nåværende algoritmer (for eksempel har det mer stygg lokale minima, eller konvergenshastigheten er tregere, eller hva som helst)?
- Kanskje en grunne arkitektur ikke passer til den typen problemer vi vanligvis prøver å løse (f.eks. gjenkjennelse av objekter er en viktig «dyp «, hierarkisk prosess)?
- Noe annet?
Deep Learning boken argumenterer for punkttegn # 1 og # 3. For det første argumenterer det for at antall enheter i et grunt nettverk vokser eksponentielt med oppgavekompleksitet. Så for å være nyttig kan et grunt nettverk trenge å være veldig stort; muligens mye større enn et dypt nettverk. Dette er basert på en rekke papirer som viser at grunne nettverk i noen tilfeller trenger eksponentielt mange nevroner; men om f.eks. MNIST-klassifisering eller Go playing er slike tilfeller er ikke helt klart. For det andre sier boken dette:
Å velge en dyp modell koder for en veldig generell tro på at funksjonen vi ønsker å lære skal innebære sammensetning av flere enklere funksjoner. Dette kan tolkes fra et representasjonslæringssynspunkt som å si at vi mener læringsproblemet består i å oppdage et sett med underliggende variasjonsfaktorer som igjen kan beskrives med andre, enklere underliggende variasjonsfaktorer.
Jeg tror den nåværende «konsensusen» er at den «er en kombinasjon av punkt 1 og 3: for virkelige oppgaver er dyp arkitektur ofte gunstig og grunne arkitektur ville være ineffektivt og kreve mye mer nevroner for samme ytelse.
Men det er langt fra bevist. Tenk f.eks. Zagoruyko og Komodakis, 2016, Wide Residual Networks . Restnettverk med over 150 lag dukket opp i 2015 og vant forskjellige billedgjenkjenningskonkurranser. Dette var en stor suksess og så ut som et overbevisende argument for dybde; her er en figur fra en presentasjon av den første forfatteren på gjenværende nettverkspapir (merk at tiden forvirrende går til venstre her):
Men papiret lenket ovenfor viser at et «bredt «restnettverk med» bare «16 lag kan overgå» dype «lag med 150+ lag. Hvis dette er sant, brytes hele poenget med figuren ovenfor.
Eller vurder Ba og Caruana, 2014, Do Deep Nets Really Need to be Deep? :
I denne artikkelen gir vi empiriske bevis for at grunne nett er i stand til å lære den samme funksjonen som dype garn, og i noen tilfeller med samme antall parametere som de dype nettene. Vi gjør dette ved først å trene en toppmoderne dyp modell, og deretter trene en grunne modell for å etterligne den dype modellen. Etterligningsmodellen er trent ved hjelp av modellkomprimeringsskjemaet beskrevet i neste avsnitt. Bemerkelsesverdig med modellkompresjon er vi i stand til å trene grunne garn for å være like nøyaktige som noen dype modeller, selv om vi ikke er i stand til å trene disse grunne garnene for å være like nøyaktige som de dype garnene når de grunne garnene blir trent direkte på originalen merkede treningsdata. Hvis et grunt nett med samme antall parametere som et dypt nett kan lære å etterligne et dypt nett med høy troskap, er det klart at funksjonen som det dype nettet lærer, ikke egentlig trenger å være dyp.
Hvis det er sant, vil dette bety at den riktige forklaringen snarere er min kule nr. 2, og ikke nr. 1 eller nr. 3.
Som jeg sa – – ingen vet det helt sikkert ennå.
Avsluttende bemerkninger
Mengden fremgang som er oppnådd i dyp læring de siste ~ 10 årene er virkelig fantastisk, men det meste av denne fremgangen ble oppnådd ved prøving og feiling, og vi mangler fortsatt veldig grunnleggende forståelse for hva akkurat får dype nett til å fungere så bra. Selv listen over ting som folk anser som avgjørende for å opprette et effektivt dypt nettverk ser ut til å endre seg hvert par år.
Den dype læringsrenessansen startet i 2006 da Geoffrey Hinton (som hadde jobbet med nevrale forhold) nettverk i over 20 år uten mye interesse fra noen) publiserte et par banebrytende artikler som tilbyr en effektiv måte å trene dype nettverk på ( Science paper , Neural computation paper ). Trikset var å bruke ikke-overvåket førtrening før du startet gradientnedgangen. Disse papirene revolusjonerte feltet, og i et par år trodde folk at ikke-overvåket førtrening var nøkkelen.
Så i 2010 viste Martens at dype nevrale nettverk kan trenes med andreordens metoder (såkalte hessiske-frie metoder) og kan utkonkurrere nettverk trent med pre-trening: Dyp læring via hessiskfri optimalisering . Så i 2013 Sutskever et al. viste at stokastisk gradientnedstigning med noen veldig smarte triks kan overgå hessiske frie metoder: Om viktigheten av initialisering og momentum i dyp læring . Også rundt 2010 innså folk at bruk av rettet lineære enheter i stedet for sigmoid enheter gjør en stor forskjell for gradient nedstigning. Frafall dukket opp i 2014. Restnettverk dukket opp i 2015. Folk kommer stadig på mer og mer effektive måter å trene dype nettverk på og det som virket som en viktig innsikt for 10 år siden, blir ofte ansett. en plage i dag. Alt dette er i stor grad drevet av prøving og feiling, og det er liten forståelse av hva som får noen ting til å fungere så bra og noen andre ting ikke. Å trene dype nettverk er som en stor pose med triks. Vellykkede triks er vanligvis rasjonalisert post factum.
Vi vet ikke engang hvorfor dype nettverk når et ytelsesplatå. Bare 10 år pleide folk å skylde på lokale minima, men den nåværende tanken er at dette ikke er poenget (når prestasjonsplatåene har en tendens til å holde seg store). Dette er et så grunnleggende spørsmål om dype nettverk, og vi vet ikke engang dette .
Oppdatering: Dette er mer eller mindre gjenstand for Ali Rahimis NIPS 2017-samtale om maskinlæring som alkymi: https://www.youtube.com/watch?v=Qi1Yry33TQE .
[Dette svaret ble helt omskrevet i april 2017, så noen av kommentarene nedenfor gjelder ikke lenger.]
Kommentarer
- Hyggelig svar! 1) Som også nevnt av @Nicolas, det viser seg at det er en teorem ( en.wikipedia.org/wiki/Universal_approximation_theorem ) som hevder at en feed-forward neurale n etwork med et enkelt skjult lag og et endelig antall nevroner kan tilnærme en hvilken som helst kontinuerlig funksjon (inkludert en DNN) på enhetens hyperkube. Dette resultatet hevdes å være uavhengig av valget av aktiveringsfunksjonen. 2) Jeg er ikke sikker på om din siste kommentar (dvs. at Hinton ble med i Google) er relevant for den nylige suksessen til DNN; Hinton ble med på Google lenge etter at DNN ble epidemi!
- Kanskje vi ‘ bruker terminologien annerledes. Perceptrons har ikke ‘ t et skjult lag – deres input er data, deres output er klassifiseringen. Et flerlagsnettverk består av en haug med perseptroner som er koblet sammen slik at utdataene fra laget $ n-1 $ danner inngangen til laget $ n $. Et nettverk med et enkelt skjult lag har altså tre lag (input, hidden, output). Dette skjulte laget er nøkkelen for universell tilnærming: perseptroner, som mangler det, kan ‘ t beregne ting som XOR, men flerlagsnettverk kan.
- Linjæriteten ting virker som en kombinasjon av to saker. Perceptrons kan bare beregne lineære beslutningsgrenser – det kan bare tegne rette linjer for å dele to klasser. Flerlagsnettverk kan » tegne » mer kompliserte grenser. Men verken perseptroner eller flerlagsnettverk bruker lineære aktiveringsfunksjoner, bortsett fra i utgangslaget til et flerlagsnettverk. Perceptron-aktiveringsfunksjonen er en heaviside (1 hvis x > 0, 0 ellers); flelagsnettverk bruker ofte sigmoids, men begrensningene for universell ca. er ganske milde: ikke-konstante, avgrensede og monotont økende.
- @amoeba flott svar, bildet i begynnelsen satte meg litt på å lese resten, men det var på det beste. Perceptron er motstykket til den lineære regresjonen for klassifisering, og derfor bruker folk den lukkede formløsningen (pseudoinverse) for å løse problemet i stedet for online (sgd) -metoder, det ‘ s kalt Logistisk regresjon, på grunn av logistikken (sigmoid funksjon) = perceptron. En perseptron / logistisk regresjon kan bare ‘ tegne ‘ lineære beslutningsgrenser og at ‘ s hvorfor det ‘ kalles lineært.
- Imidlertid kan flerlagsperceptronen (det du tegnet på ditt første bilde til venstre) kombinere flere slike lineære avgjørelser grenser og kan dermed dele opp rommet for å løse det (ikke-lineære) XOR-problemet som @Matt nevnte. Så mange mange kombinerte lineære beslutningsgrenser kan lage en sirkel for eksempel hvis du kaster øynene dine. Det kommer an på hvordan du tenker på det – avgjørelsen er fortsatt lineær i et høyere rom. Hvis du er kjent med kjerner, er det ‘ det samme.
Svar
Godt svar så langt, selv om det er et par ting ingen rundt her nevnt, her er mine 0,02 $
Jeg svarer bare i form av en historie, skal gjøre ting morsommere og tydeligere. Ingen tldr her. I prosessen bør du kunne forstå hva forskjellen er.
Det er flere grunner til at DNN-er utløste da de gjorde det (stjerner måtte justere, som alt lignende, det er bare saken sted, rett tid osv.).
En årsak er tilgjengeligheten av data, mye data (merkede data). Hvis du vil kunne generalisere og lære noe som «generisk prior» eller «universal prior «(aka de grunnleggende byggesteinene som kan brukes på nytt mellom oppgaver / applikasjoner) så trenger du mye data. Og ville data, kan jeg legge til, ikke sterile datasett nøye registrert i laboratoriet med kontrollert belysning og alt. Mekanisk Turk gjorde det mulig (merking).
For det andre, muligheten for å trene større nettverk raskere ved hjelp av GPUer gjorde eksperimentering raskere. ReLU-enheter gjorde ting også beregningsmessig raskere og ga regulering siden du trengte å bruke flere enheter ett lag for å kunne komprimere den samme informasjonen siden lagene nå var flere spars e, så det gikk også fint med frafall. De hjalp også til med et viktig problem som oppstår når du stable flere lag. Mer om det senere. Ulike flere triks som forbedret ytelsen. Som å bruke minibatcher (som faktisk er skadelig for endelige feil) eller kronglinger (som faktisk ikke fanger like mye avvik som lokale mottakelige felt), men er beregningsmessig raskere.
I mellomtiden diskuterte folk. hvis de likte dem mer tynne eller mer lubne, mindre eller høyere, med eller uten fregner, etc. Optimalisering var som det spruter eller knaller det, så forskningen gikk mot mer komplekse treningsmetoder som konjugatgradient og newtons-metoden, til slutt alle innså at det ikke er noen gratis lunsj. Nettverk burp.
Det som bremset ting var forsvinnende gradient problemet. Folk gikk som: whoa, det er langt ut, mann! I et nøtteskall betyr det at det var vanskelig å justere feilen på lagene nærmere inngangene. Når du legger til flere lag på kaken, blir det for vinglete. Du kunne ikke » t tilbake-propagere meningsfylt feil tilbake til de første lagene. Jo flere lag, jo verre ble det. Bummer.
Noen mennesker fant ut at bruk av kryss-entropi som tapfunksjon (vel, igjen, klassifisering og bildegjenkjenning) gir en slags regulering og hjelper mot at nettverket blir mettet og i sin tur gradienten klarte ikke å skjule det godt.
Det som også gjorde ting mulig var trening per lag ved hjelp av metoder uten tilsyn. I utgangspunktet tar du en haug med auto-kodere og lærer stadig mindre abstrakte fremstillinger som du øker kompresjonsforholdet. Vektene fra disse nettverkene ble brukt til å initialisere den overvåkede versjonen. Dette løste det forsvinnende gradientproblemet på en annen måte: du starter allerede veiledet opplæring fra en mye bedre startposisjon. Så alle de andre nettverkene reiste seg og begynte å gjøre opprør. Men nettverkene trengte tilsyn uansett, ellers var det umulig å holde stordata stille.
Nå, for den siste delen som til slutt fører til svaret ditt som er for komplisert til å sette i et nøtteskall: hvorfor flere lag og ikke bare ett. Fordi vi kan! og fordi kontekst og uforanderlige funksjonsbeskrivere. og bassenger.
Her er et eksempel: du har et datasett med bilder, hvordan skal du trene et plan NN ved hjelp av disse dataene? Vel, naivt, la oss si hver rad og du sammenføyer den til en lang vektor og det er innspillet ditt. Hva lærer du?Vel, noen uklare tullfunksjoner som kanskje ikke ser ut som noe, på grunn av de mange mange typer avvik som gjenstandene i bildet inneholder, og at du ikke er i stand til å skille mellom relevante og irrelevante ting. Og på et tidspunkt må nettverket glemme å kunne lære nye ting på nytt. Så det er kapasitetsproblemet. Dette er mer ikke-lineær dynamikk, men intuisjonen er at du må øke antall nevroner for å kunne inkludere mer informasjon i nettverket ditt.
Så poenget er at hvis du bare skriver inn bildet som ett stykke, vil ikke legge til ekstra lag ikke gjøre for mye for deg siden du ikke er i stand til å lære abstraksjoner , noe som er veldig viktig. Å gjøre ting helhetlig fungerer altså ikke så bra, med mindre du gjør enklere ting med nettverket som å fokusere på en bestemt type objekt, så du begrenser deg til en klasse og velger noen globale egenskaper som klassifiseringsmål. p>
Så hva er det å gjøre? Se på kanten av skjermen og prøv å lese denne teksten. Problem? Så dumt som det høres ut, må du se på hva du leser. Ellers er det for uklart / det er ikke nok oppløsning / granularitet. La oss kalle fokusområdet det mottakelige feltet. Nettverk må også kunne fokusere. I utgangspunktet i stedet for å bruke hele bildet som inngang, flytter du et skyvevindu langs bildet, og deretter bruker du det som inngang til nettverket (litt mindre stokastisk enn hva mennesker gjør). Nå har du også en sjanse til å fange sammenhenger mellom piksler og dermed gjenstander, og du kan også skille mellom søvnig katt som sitter på en sofa og en opp-ned kattstrikk. Ryddig, troen på menneskeheten gjenopprettet. Nettverket kan lære lokale abstraksjoner i et bilde på flere nivåer. Nettverket lærer filtre, til å begynne med enkle, og bygger deretter opp på dem for å lære mer komplekse filtre.
Så, for å oppsummere ting: mottakelige felt / viklinger, initialt initialisert tilsyn, korrigerte lineære enheter, frafall eller annen regulering metoder. Hvis du er veldig seriøs om dette, anbefaler jeg at du tar en titt på Schmidhuber «s Deep Learning in Neural Networks: An Overview here» s url for the preprint http://arxiv.org/abs/1404.7828
Og husk: stor læring, dype data. Word.
Kommentarer
- Hei Florin, takk for det fine svaret! Jeg liker skrivestilen. Når du snakker om skyvevinduer, refererer du til hvordan konvolusjonslag med konvolusjonell NN observerer forskjellige deler av et bilde og prosjekt deres aktiveringer på et rom med lavere dimensjon?
- ganske mye ja, viklinger er ikke nødvendige, men de ‘ går raskere beregningsmessig, siden vektene er begrenset. ut dette papiret der de ikke bruker ‘ t bruker konvolusjoner og bruker lokale mottakelige felt. De viktige nøkkelordene er lokale / hierarkiske: arxiv.org /pdf/1112.6209.pdf
- tror jeg også nærmest systematisk svar er sobi ‘ s. han ‘ fikk min oppstemning. Jeg har nettopp lagt til noen ting til her og der med litt salt og pepper.
Svar
I lekmannsbetegnelser, er hovedforskjellen med de klassiske Neural Networks at de har mye mer skjulte lag.
Ideen er å legge til etiketter i lagene for å lage flere lag med abstraksjon:
For eksempel et dypt nevralt nettverk for objektgjenkjenning :
- Lag 1: Enkeltpiksler
- Lag 2: Kanter
- Lag 3: Skjemaer (sirkler, firkanter)
- Lag n: Hele objektet
Du finner en god forklaring på dette spørsmålet i Quora .
Og hvis du er interessert i dette emnet, vil jeg anbefale å ta en titt på dette bok .
Kommentarer
- Takk David, men jeg har ikke ‘ t virkelig se hvordan du bare legger til etiketter for å gjøre det annerledes. Jeg husker også at det var et vanskelig problem å forstå og dekomponere hvordan en funksjon ble kodet av nevrale nettverk. Det må være noe annet enn bare å ha flere lag. Når det gjelder eksemplet du ga, tror jeg at du kan trene nevrale nettverk individuelt (old school) for å gjøre hver av oppgavene.
- Kraften kommer når du bruker den som en rørledning, så innganger og utganger fra lagstakkene på hvert lag.
- Jeg har lest den første lenken din, som er en god ressurs, og andre relaterte spørsmål om quora og se, men eksemplet du ga virker ikke nøyaktig med det jeg lese. Jeg ‘ Jeg prøver å svare på mitt eget spørsmål og oppsummerer avlesningene.
- Til tross for at den spisse ressursen er interessant, svarer ikke svaret aktuelt ikke på spørsmålet.
- Kan du peke på et eksempel der lagene er merket (annet enn på en rent beskrivende måte)?Det er absolutt sant at skjulte lag ser ut til suksessivt mer komplekse funksjoner i hvert skjult lag, men » å legge til etiketter » ser ut til å antyde at de ‘ blir spesielt opplært til å gjøre det.
Svar
NN:
- ett skjult lag er nok, men kan likevel ha flere lag, fra venstre til høyre rekkefølge (modell: feed forward NN)
- bare trent på overvåket måte (backpropagation )
- når flere lag brukes, trener alle lagene samtidig (samme algoritme: backpropagation), flere lag gjør det vanskelig å bruke ettersom feil blir for små
- vanskelig å forstå hva som læres på hvert lag
DNN:
- flere lag kreves, ikke-rettede kanter (modell: begrenset boltzman-maskin)
- først trent på en ukontrollert måte, der nettverkene lærer relevante funksjoner ved å lære å reprodusere sine innspill , deretter trent på en overvåket måte som finjusterer funksjonene for å klassifisere
- trene lagene ett etter ett fra input til output lag (algoritme: kontrastiv divergens)
- hvert lag tydelig inneholder trekk ved økende abstraksjon
Flyttingen til DNN skyldes tre uavhengige gjennombrudd som skjedde i 2006.
Når det gjelder teoremer på NN, er spørsmålet henviser til :
- universell tilnærmingsteori eller Cybenko-teorem: et fremadgående nevralt nettverk med et enkelt skjult lag kan tilnærme enhver kontinuerlig funksjon. Imidlertid kan det i praksis kreve mye mer nevroner hvis det brukes et enkelt skjult lag.
Kommentarer
- -1? Egentlig? Jeg leste alt dette i litteraturen og gjorde en sammenligning av begge tilnærmingene punkt for punkt! Vennligst oppgi i det minste hva som ikke er riktig …
- Jeg stemte ikke ned (kanskje en downvoter likte ikke at du svarte på ditt eget spørsmål? Men det er selvfølgelig helt greit her), men her er en ting som ikke er helt riktig. Det du lister opp som egenskaper for DNN: at kantene ikke er rettet, at det ‘ først ble trent på en ukontrollert måte, at lagene ble trent en etter en – alt dette refererer bare til dype trosnettverk foreslått av Hinton i 2006. Dette gjelder ikke nødvendigvis for dype nevrale nettverk generelt, og faktisk er det nå mange måter å trene et dypt nettverk uten alt dette. Se svaret mitt.
Svar
Jeg har også blitt forvirret litt i begynnelsen av forskjellen mellom nevrale nettverk (NN) og dype nevrale nettverk (DNN), men «dybden» refererer bare til antall parametere & lag, dessverre. Du kan ta det som en slags re -merket under den såkalte «Canadian Mafia».
For flere år siden hadde jeg også Neural Networks som en del av en klasse, og vi gjorde sifferkjenning, bølgetilnærming og lignende applikasjoner ved å bruke NN, som hadde flere skjulte lag og utganger og all den jazz som DNN har. Det vi ikke hadde den gangen var imidlertid datakraft.
Årsaken som gjorde overgangen til DNN mulig og ønskelig er fremskritt innen maskinvareutvikling. Enkelt sagt, nå kan vi beregne mer, raskere og mer parallelliserte (DNN på GPU «s), mens tid før var flaskehalsen for NN» s.
Som det vises til Wikipedias side for Deep Læring , den «dype» delen refererer hovedsakelig til å ha funksjoner som samhandler på en ikke-lineær måte på flere lag, og derfor utfører funksjonene ekstrahering og transformasjon. Dette ble også gjort i standard NN «s, men i mindre skala.
På samme side, her har du definisjonen «Et dypt nevralt nettverk (DNN) er et kunstig nevralt nettverk (ANN) med flere skjulte lag av enheter mellom inngangs- og utgangslagene.»
Kommentarer
- Hei Mttk, takk for svaret ditt, det kaster mer lys på dette spørsmålet. Når det gjelder ditt siste poeng, er ja strukturelt veldig enkelt å forklare forskjellen (1 vs flere lag), men forskjellen i hvordan disse flere lagene brukes ser ut til å være det som betyr noe, og det er mye mindre klart. Derfor fokuserte jeg spørsmålet ikke på struktur ..
- Ærlig talt, jeg har ikke ‘ t er enig med den siste definisjonen jeg refererte til – siden ANN / NN med ett skjult lag ikke er veldig effektive, og du trengte flere for noen form for mer kompleks prediksjon (I ‘ m sier dette fordi jeg tror DNN var et unyttig moteord lagt til til en allerede god periode, NN). Jeg tror du kan bruke NN og DNN om hverandre (for i dag bruker ingen ett skjult lag NN ‘ s), mens bruken av lagene er forskjellig mellom typer DNN ‘ s (CNN, RBM, RNN, LSTM, CW-RNN, …) og ikke ideen om DNN selv.
Svar
Så vidt jeg vet har det som kalles Deep Neural Network (DNN) i dag ingenting fundamentalt eller filosofisk forskjellig fra den gamle standard Neural Network (NN). Selv om man i teorien kan tilnærme en vilkårlig NN ved å bruke et grunt NN med bare ett skjult lag, men dette gjør det ikke betyr at de to nettverkene vil prestere likt når de blir trent med samme algoritme og treningsdata. Det er faktisk en økende interesse for å trene grunne nettverk som fungerer på samme måte som dype nettverk. Måten dette gjøres på er imidlertid ved å trene et dypt nettverk først, og deretter trene det grunne nettverket for å imitere den endelige utgangen (dvs. utgangen fra det nest siste laget) av det dype nettverket. Se, det som gjør dype arkitekturer gunstige, er at dagens treningsteknikker (ryggutbredelse) tilfeldigvis fungerer bedre når nevronene legges ut i en hierarkisk struktur.
Et annet spørsmål som kan stilles er: hvorfor Neural Nettverk (spesielt DNN) ble så populære plutselig. Etter min forståelse er de magiske ingrediensene som gjorde DNN så populære nylig:
A. Forbedrede datasett og databehandlingsfunksjoner
1. Store datasett med millioner av forskjellige bilder ble tilgjengelig
2. Rask GPU-implementering ble gjort tilgjengelig for offentlige
B. Forbedrede treningsalgoritmer og nettverksarkitekturer
1. Rettede lineære enheter (ReLU) i stedet for sigmoid eller tanh
2. Dype nettverksarkitekturer utviklet seg gjennom årene
A-1) Inntil veldig nylig, i det minste i Computer Vision kunne vi ikke trene modeller på millioner av merkede bilder; ganske enkelt fordi merkede datasett av den størrelsen ikke eksisterte. Det viser seg at, foruten antall bilder, er granulariteten til etikettsettet også en veldig avgjørende faktor for suksessen til DNNs (se figur 8 i dette papiret , av Azizpour et al.).
A-2) Mye teknisk innsats har gått inn i å gjøre det mulig å trene DNN-er som fungerer godt i praksis, og spesielt fremtiden til GPU-implementeringer. En av de første vellykkede GPU-implementeringene av DNN, kjører på to parallelle GPUer; Likevel tar det omtrent en uke å trene et DNN på 1,2 millioner bilder i 1000 kategorier ved hjelp av avanserte GPUer (se denne artikkelen, av Krizhevsky et al.) .
B-1) Bruk av enkle, korrigerte lineære enheter (ReLU) i stedet for sigmoid og tanh-funksjoner er trolig den største byggesteinen i å gjøre opplæring av DNN mulig. Merk at både sigmoid- og tanh-funksjoner har nesten nullgradient nesten overalt, avhengig av hvor raskt de går fra det lave aktiveringsnivået til det høye; i ekstreme tilfeller når overgangen er plutselig, får vi en trinnfunksjon som har helling null overalt bortsett fra på et punkt der overgangen skjer.
B-2) Historien om hvordan nevrale nettverksarkitekturer har utviklet seg gjennom årene, minner meg om hvordan evolusjon endrer en organisms struktur i naturen. Parameterdeling ( for eksempel i konvolusjonslag), frafallsregularisering, initialisering, læringsfrekvensplan, romlig pooling, undersampling i de dypere lagene, og mange andre triks som nå anses som standard i opplæring av DNNs ble utviklet, utviklet, slutt skreddersydd gjennom årene for å gjøre opplæringen av de dype nettverkene mulig slik det er i dag.
Kommentarer
- +1. Det første svaret i denne tråden som gir et tilstrekkelig svar på OP ‘ spørsmålene. Mange gode poeng her. Min eneste store kommentar vil være at i tillegg til A og B, ere er også C: Massiv økning i størrelsen på tilgjengelige treningsdatasett. Dette ser ut til å være minst like viktig som A og B.
- Jeg tror ikke ‘ t synes relu er så viktig: Alex krizhevsky paper hevdet at det fikk nn til å lære seg til 6 ganger raskere. De fleste av de andre nettverksstrukturendringene du nevner, er knyttet til konvolusjonsnns, som bare kopierer standard bildebehandlingsrørledninger (bra, men ingen ny innsikt)
- @amoeba: størrelsen på datasettet er under A. I oppdaterte teksten for å markere den.
- @ seanv507: Jeg hadde faktisk konvolusjonsnettverk (ConvNets) i tankene når jeg skrev svaret. Hvis det er andre viktige faktorer (ikke relatert til ConvNets) som jeg har savnet, vil jeg sette pris på det hvis du nevner dem. Jeg vil gjerne oppdatere svaret mitt deretter.Når det gjelder ReLUs, er trening av nns med tanh og sigmoid betydelig vanskeligere enn med ReLUs på grunn av forsvinnende gradienter: enhetene blir lett mettede, og når det først skjer, tar det lang tid å bli umettet igjen (gradienter er veldig små når enheten er mettet)
Svar
Forskjellen mellom et «Deep» NN og et standard NN er rent kvalitativ: det er ingen definisjon av hva det «dype» betyr. «Deep» kan bety alt fra ekstremt sofistikerte arkitekturer som brukes av Google, Facebook og co som har 50-80 eller enda flere lag, til 2 skjulte lag (4 lag totalt) arkitekturer. Jeg vil ikke bli overrasket om du til og med kan finne artikler som hevder å gjøre dyp læring med et enkelt skjult lag, fordi «dypt» ikke betyr mye.
«Neural network» er også et ord som ikke «T har en veldig presis betydning. Det dekker et ekstremt stort ensemble av modeller, fra tilfeldige boltzman-maskiner (som er ikke-rettet grafer) til fremovergående arkitekturer med forskjellige aktiveringsfunksjoner. De fleste NN-er vil bli trent med backprop, men det trenger ikke være tilfelle så selv treningsalgoritmene er ikke veldig homogene.
Samlet sett har dyp læring, dype NN og NN alle blitt fangeord som fanger en rekke tilnærminger.
For gode innledende referanser til «hva endret»: Deep Learning of Representations: Ser fremover , Bengio, 2013 er en god gjennomgang + perspektiv for fremtiden. Se også Må dype nett virkelig være dype? Ba & Caruana, 2013 som illustrerer tha å være dyp kan ikke være nyttig for representasjon, men for læring.
Kommentarer
- Referansene du gir er veldig nyttige , men resten av svaret i gjeldende form (som leser som » NN betyr ikke noe, DNN betyr ikke noe, NN og DNN kan gjøre mange ting «) ikke mye, vil du vurdere å revidere det?
Svar
For å utvide David Gasquez svar, er en av de viktigste forskjellene mellom dype nevrale nettverk og tradisjonelle nevrale nettverk at vi ikke bare bruker backpropagation for dype nevrale nett.
Hvorfor? Fordi backpropagation trener senere lag mer effektivt enn det trener tidligere lag – etter hvert som du går tidligere og tidligere i nettverket, blir feilene mindre og mer diffuse. Så et ti-lags nettverk vil i utgangspunktet være syv lag med tilfeldige vekter etterfulgt av tre lag med monterte vekter, og gjør det like bra som et trelags nettverk. Se her for mer.
Så det konseptuelle gjennombruddet er å behandle de separate problemene (de merkede lagene) som separate problemer – hvis vi først prøv å løse problemet med å bygge et generisk godt første lag, og prøv deretter å løse problemet med å bygge et generisk godt andre lag, til slutt vil vi ha et dypt funksjonsrom som vi kan mate inn i vårt faktiske problem.
Svar
Jeg vil ikke si at det er noen stor filosofisk forskjell mellom NN og DNN (faktisk vil jeg si DNN er bare en markedsføring begrep for å skille fra «mislykket» NN). Det som har endret seg er størrelsen på datasettene. I hovedsak er nevrale nettverk for tiden de beste $ O (n) $ statistiske estimatorene, og fungerer bra for høydimensjonale store datasett (f.eks. Imagenet).
Jeg tror du bør trekke deg tilbake og se at dette har skapt en gjenoppblomstring i grunne AI – f.eks pose med ord for sentimentanalyse og andre språkbruk og visuell pose med ord var ledende tilnærming til bildegjenkjenning før DNN. Ingen sier at pose med ord er en ekte språkmodell, men det er en effektiv ingeniørløsning. Så jeg vil si DNN er en bedre «visuell pose med ord» – se f.eks. Szegedy et al. 2013 Spennende egenskaper til nevrale nettverk og Nguyen et al. Dype nevrale nettverk lures lett: Forutsigelser med høy tillit for ugjenkjennelige bilder der det er klart at det ikke er noen høyere ordensstrukturer etc. som læres (eller hva som helst som påstås for DNN).
Kommentarer
- @amoeba dette andre papiret er nesten et ledsagepapir til det første (igjen med mange bilder!)
Svar
For å svare på sistnevnte spørsmål, se på denne artikkelen fra Telgarsky som sier at for et visst klassifiseringsproblem «viser alle grunne nettverk med færre enn eksponentielt (i k) mange noder feil minst 1/6, mens et dypt nettverk med 2 noder i hvert av 2k lag oppnår null feil.»
Klassifiseringsproblemet det er snakk om er n-vekslingspunktproblemet der vi betrakter intervallet $ [0,1-2 ^ {- k}] $ slik at inngangen $ x_i $ er $ 2 ^ k $ jevnt fordelte poeng i det intervallet, og den tilsvarende $ y_i $ er gitt av $ y_i = 1 $ hvis $ i $ er merkelig, og $ y_i = 0 $ hvis $ i $ er jevnt. Vi spør da, hvor godt kan grunne nettverk uten eksponensielle bredder fange dette forholdet i forhold til dype nettverk med bare to noder i hvert lag? I hovedsak kan vi tilnærme data bedre (nøyaktig jevn) med en lineær i $ k $ ) antall lag med bare to noder i hvert lag, mens vi ville trenge eksponentielt mange (i $ k $ ) noder for å få det samme resultatet i et grunt nettverk.
Beviset på sitatet innebærer å legge merke til at sammensetningen av ikke-lineære aktiveringer som brukes på affine transformasjoner (dvs. med et større antall lag) klarer å fange opp mer variasjon i dataene enn å summere de samme funksjonene (som når vi legger til noder i lag).
Svar
Deep Learning er et sett med algoritmer i maskinlæring som forsøk å modellere abstraksjoner på høyt nivå i data ved å bruke arkitekturer sammensatt av flere ikke-lineære transformasjoner .
Kilde: Arno Candel
Legg igjen en kommentar