Hvad er forskellen mellem et neuralt netværk og et dybt neuralt netværk, og hvorfor fungerer de dybe bedre?
On december 22, 2020 by adminJeg har ikke set spørgsmålet angivet præcist i disse termer, og det er derfor, jeg laver et nyt spørgsmål.
Hvad jeg er interesseret i at vide er ikke definitionen af et neuralt netværk, men at forstå den faktiske forskel med et dybt neuralt netværk.
For mere sammenhæng: Jeg ved, hvad et neuralt netværk er, og hvordan backpropagation fungerer. Jeg ved, at et DNN skal have flere skjulte lag. Men for 10 år siden i klassen lærte jeg, at det at have flere lag eller et lag (ikke tæller input- og outputlagene) var ækvivalent med hensyn til de funktioner, som et neuralt netværk er i stand til at repræsentere (se Cybenko “s Universal tilnærmelses sætning ), og at der flere lag gjorde det mere komplekst at analysere uden gevinst i ydeevne. Det er klart, at det ikke er tilfældet længere.
Jeg antager måske måske forkert, at forskellene er med hensyn til træningsalgoritme og egenskaber snarere end struktur, og derfor Jeg ville virkelig sætte pris på, hvis svaret kunne understrege årsagerne, der gjorde overgangen til DNN mulig (f.eks. Matematisk bevis eller tilfældigt spil med netværk?) og ønskeligt (f.eks. konvergenshastighed?)
Kommentarer
- FYI: Hvor sand er dette dias ved dyb læring?
- Hvis den funktion, du vil tilnærme, er en kompositionsfunktion (almindelig i billedbehandling og mange naturlige domæner på grund af fysikloven). Det kan bevises, at dybe netværk kan udnytte denne sammensætning og opnå det samme niveau af tilnærmelsesfejl med eksponentielt mindre antal neuroner (sammenlignet med et enkelt-skjult lag-netværk). Ref: Poggio, Tomaso, et al. ” Hvorfor og hvornår kan dybe, men ikke lave netværk undgå forbandelsen af dimensionalitet: en gennemgang. ” International Journal of Automation and Computing (2017)
- Det kan være en god idé at se på denne artikel
- Se 6.4 af arxiv.org/pdf/2004.06093.pdf
Svar
Lad os starte med en trivialitet: Dybt neuralt netværk er simpelthen et fremadrettet netværk med mange skjulte lag.
Dette er mere eller mindre alt, hvad der er at sige om definitionen. Neurale netværk kan være tilbagevendende eller fremadgående; feedforward-dem har ingen sløjfer i deres graf og kan organiseres i lag. Hvis der er “mange” lag , så siger vi, at netværket er dybt .
Hvor mange lag skal et netværk have for at kvalificere sig som dybt? Der er ingen bestemt svar på dette (det “sa lidt som at spørge, hvor mange korn , der skaber en bunke ), men normalt har to eller flere skjulte lag tæller så dybt. I modsætning hertil kaldes et netværk med kun et enkelt skjult lag konventionelt “lavt”. Jeg formoder, at der vil ske en vis inflation her, og om ti år tror folk måske, at alt med mindre end f.eks. Ti lag er lavt og kun egnet til børnehaveøvelser. Uformelt antyder “dyb”, at netværket er svært at håndtere.
Her er en illustration, tilpasset herfra :
Men det rigtige spørgsmål, du stiller, er selvfølgelig, hvorfor ville det være gavnligt at have mange lag?
Jeg tror, at noget forbløffende svar er, at ingen rigtig ved. Der er nogle almindelige forklaringer, som jeg kort vil gennemgå nedenfor, men ingen af dem er overbevisende påvist for at være sande, og man kan ikke engang være sikker på, at det at have mange lag er virkelig gavnligt.
Jeg siger, at dette er forbløffende, fordi dyb læring er massivt populært, at bryde alle rekorder (fra billedgenkendelse, til at spille Go, til automatisk oversættelse osv.) hvert år, bliver brugt af branchen osv. osv. . Og vi er stadig ikke helt sikre på, hvorfor det fungerer så godt.
Jeg baserer min diskussion på Deep Learning bog af Goodfellow, Bengio og Courville, der gik ud i 2017 og betragtes bredt som bogen om dyb læring. (Det er frit tilgængeligt online.) Det relevante afsnit er 6.4.1 Universelle tilnærmelsesegenskaber og dybde .
Du skrev, at
For 10 år siden lærte jeg i klassen, at det at have flere lag eller et lag (ikke tæller input- og outputlagene) var ækvivalent med hensyn til de funktioner, et neuralt netværk er i stand til at repræsentere […]
Du skal henvise til den såkaldte Universal tilnærmelses sætning , bevist ved Cybenko i 1989 og generaliseret af forskellige mennesker i 1990erne. Det siger grundlæggende, at et lavt neuralt netværk (med 1 skjult lag) kan tilnærme enhver funktion, dvs. kan i princippet lære hvad som helst . Dette gælder for forskellige ikke-lineære aktiveringsfunktioner, herunder udbedrede lineære enheder, som de fleste neurale netværk bruger i dag (lærebogen henviser til Leshno et al. 1993 for dette resultat).
Hvis ja, hvorfor bruger alle så dybe net?
Nå, et naivt svar er, at fordi de fungerer bedre. Her er en figur fra Deep Learning bogen, der viser, at det hjælper med at have flere lag i en bestemt opgave, men det samme fænomen observeres ofte på tværs af forskellige opgaver og domæner:
Vi ved, at et lavt netværk kunne udføre lige så godt som de dybere. Men det gør det ikke; og det gør de normalt ikke. Spørgsmålet er — hvorfor? Mulige svar:
- Måske har et lavt netværk brug for flere neuroner end det dybe?
- Måske er et lavt netværk sværere at træne med vores nuværende algoritmer (f.eks. mere grimme lokale minima, eller konvergenshastigheden er langsommere, eller hvad som helst)?
- Måske passer en lav arkitektur ikke til den slags problemer, vi normalt prøver at løse (f.eks. genkendelse af genstande er en grundlæggende “dyb “, hierarkisk proces)?
- Noget andet?
Deep Learning bogen argumenterer for punkttegn # 1 og # 3. For det første hævder det, at antallet af enheder i et lavt netværk vokser eksponentielt med opgavens kompleksitet. Så for at være nyttigt skal et lavt netværk muligvis være meget stort; muligvis meget større end et dybt netværk. Dette er baseret på et antal papirer, der viser, at lavvandede netværk i nogle tilfælde har brug for eksponentielt mange neuroner; men om f.eks. MNIST-klassifikation eller Go playing er sådanne tilfælde ikke rigtig klar. For det andet siger bogen dette:
At vælge en dyb model koder for en meget generel overbevisning om, at den funktion, vi ønsker at lære, skal involvere sammensætning af flere enklere funktioner. Dette kan fortolkes fra et repræsentationsindlæringssynspunkt som at sige, at vi mener, at læringsproblemet består i at opdage et sæt underliggende variationer, der igen kan beskrives i form af andre, enklere underliggende variationer.
Jeg tror, at den nuværende “konsensus” er, at det “er en kombination af kuglepunkter nr. 1 og # 3: for virkelige opgaver er dyb arkitektur ofte gavnlig og lav arkitektur ville være ineffektiv og kræve meget flere neuroner for den samme præstation.
Men det er langt fra bevist. Overvej f.eks. Zagoruyko og Komodakis, 2016, Wide Residual Networks . Restnetværk med over 150 lag dukkede op i 2015 og vandt forskellige billedgenkendelseskonkurrencer. Dette var en stor succes og lignede et overbevisende argument til fordel for dybde; her er en figur fra en præsentation af den første forfatter på det resterende netværkspapir (bemærk at tiden forvekslende går til venstre her):
Men ovenstående papir viser, at en “bred “restnetværk med” kun “16 lag kan overgå” dybe “lag med mere end 150 lag. Hvis dette er sandt, så bryder hele punktet i ovenstående figur sammen.
Eller overvej Ba og Caruana, 2014, Do Deep Nets Really Need to be Dybt? :
I dette papir leverer vi empiriske beviser for, at lave net er i stand til at lære den samme funktion som dybe net, og i nogle sager med samme antal parametre som de dybe net. Vi gør dette ved først at træne en avanceret dyb model og derefter træne en lav model for at efterligne den dybe model. Efterligningsmodellen trænes ved hjælp af modelkomprimeringsskemaet beskrevet i næste afsnit. Det er bemærkelsesværdigt, at vi med modelkompression er i stand til at træne lave net, så de er lige så nøjagtige som nogle dybe modeller, selvom vi ikke er i stand til at træne disse lave net, så de er lige så nøjagtige som de dybe net, når de lave net trænes direkte på originalen mærkede træningsdata. Hvis et lavt net med det samme antal parametre som et dybt net kan lære at efterligne et dybt net med høj troskab, er det klart, at funktionen, der læres af det dybe net, ikke rigtig behøver at være dyb.
Hvis det er sandt, ville det betyde, at den korrekte forklaring snarere er min kugle nr. 2 og ikke nr. 1 eller nr. 3.
Som jeg sagde – – ingen ved det helt sikkert endnu.
Afsluttende bemærkninger
Mængden af opnåede fremskridt i dyb læring i løbet af de sidste ~ 10 år er virkelig fantastisk, men det meste af dette fremskridt blev opnået ved prøving og fejl, og vi mangler stadig meget grundlæggende forståelse for, hvad nøjagtigt får dybe net til at fungere så godt. Selv listen over ting, som folk anser for at være afgørende for at oprette et effektivt dybt netværk, ser ud til at ændre sig hvert par år.
Den dybe læringsrenæssance startede i 2006, da Geoffrey Hinton (som havde arbejdet med neurale) netværk i mere end 20 år uden særlig interesse fra nogen) udgav et par gennembrudspapirer, der tilbyder en effektiv måde at træne dybe netværk på ( Science paper , Neural computation paper ). Tricket var at bruge ikke-overvåget præ-træning før du begyndte gradientnedstigningen. Disse papirer revolutionerede området, og i et par år troede folk, at uovervåget foruddannelse var nøglen.
Så i 2010 viste Martens, at dybe neurale netværk kan trænes med andenordens metoder (såkaldte hessiske-fri metoder) og kan overgå netværk, der er trænet med præ-træning: Dyb læring via hessisk-fri optimering . Så i 2013 Sutskever et al. viste, at stokastisk gradientnedstigning med nogle meget kloge tricks kan overgå hessiske-fri metoder: Om vigtigheden af initialisering og momentum i dyb læring . Omkring 2010 indså folk også, at brug af korrigerede lineære enheder i stedet for sigmoide enheder gør en enorm forskel for gradientnedstigning. Frafald dukkede op i 2014. Restnetværk dukkede op i 2015. Folk kommer stadig med mere og mere effektive måder til at træne dybe netværk og hvad der virkede som en nøgleindsigt for 10 år siden betragtes ofte som en gener i dag. Alt dette er stort set drevet af prøving og fejl, og der er ringe forståelse af, hvad der får nogle ting til at fungere så godt og andre ting ikke. At træne dybe netværk er som en stor pose med tricks. Succesrige tricks er normalt rationaliseret post factum.
Vi ved ikke engang, hvorfor dybe netværk når et præstationsplateau; kun 10 år plejede folk at bebrejde lokale minima, men den nuværende tænkning er, at dette ikke er pointen (når perfomance plateauerne, gradienterne har tendens til at forblive store). Dette er sådan et grundlæggende spørgsmål om dybe netværk, og vi ved ikke engang dette .
Opdatering: Dette er mere eller mindre genstand for Ali Rahimis NIPS 2017-tale om maskinindlæring som alkymi: https://www.youtube.com/watch?v=Qi1Yry33TQE .
[Dette svar blev helt omskrevet i april 2017, så nogle af kommentarerne nedenfor gælder ikke længere.]
Kommentarer
- Dejligt svar! 1) Som også nævnt af @Nicolas, er det viser sig, at der er en sætning ( da.wikipedia.org/wiki/Universal_approximation_theorem ), der hævder, at en feed-forward neurale n etwork med et enkelt skjult lag og et endeligt antal neuroner kan tilnærme enhver kontinuerlig funktion (inklusive en DNN) på enhedens hypercube. Dette resultat hævdes at være uafhængigt af valget af aktiveringsfunktion. 2) Jeg er ikke sikker på, om din sidste bemærkning (dvs. at Hinton sluttede sig til Google) er relevant for DNNs seneste succes; Hinton sluttede sig til Google længe efter at DNN blev epidemi!
- Måske bruger vi ‘ terminologien anderledes. Perceptrons har ikke ‘ et skjult lag – deres input er data, deres output er klassificeringen. Et flerlagsnetværk består af en flok perceptroner, der er kablet sammen, således at output fra lag $ n-1 $ danner input til lag $ n $. Et netværk med et enkelt skjult lag har således tre lag (input, skjult, output). Dette skjulte lag er nøglen til universel tilnærmelse: perceptrons, der mangler det, kan ‘ t beregne ting som XOR, men flerlagsnetværk kan.
- Lineariteten ting virker som en kombination af to spørgsmål. Perceptrons kan kun beregne lineære beslutningsgrænser – det kan kun tegne lige linjer for at opdele to klasser. Multilayer-netværk kan ” tegne ” mere komplicerede grænser. Men hverken perceptroner eller flerlagsnetværk bruger lineære aktiveringsfunktioner, undtagen i outputlaget på et flerlagsnetværk. Perceptron-aktiveringsfunktionen er en heaviside (1 hvis x > 0, ellers 0); multilayer-netværk bruger ofte sigmoids, men begrænsningerne for universal ca. er ret milde: ikke-konstante, afgrænsede og monotont stigende.
- @amoeba godt svar, billedet i starten skød mig lidt ud for at læse resten, men det var det bedste. Perceptronen er modstykket til den lineære regression til klassificering, hvorfor folk bruger den lukkede formopløsning (pseudoinverse) til at løse problemet i stedet for online (sgd) -metoder, det ‘ s kaldet Logistisk regression på grund af logistikken (sigmoid-funktion) = perceptron. En perceptron / logistisk regression kan kun ‘ tegne ‘ lineære beslutningsgrænser, og at ‘ s hvorfor det ‘ kaldes lineært.
- Multilagsperceptronen (hvad du tegnede i dit første billede til venstre) kan imidlertid kombinere flere sådanne lineære beslutninger grænser og kan således opdele rummet for at løse det (ikke-lineære) XOR-problem som @Matt nævnte. Så mange mange kombinerede lineære beslutningsgrænser kan f.eks. Skabe en cirkel, hvis du kigger øjnene i øjnene. Det afhænger af, hvordan du tænker over det – beslutningen er stadig lineær i et højere rum, hvis du er fortrolig med kerner, er den ‘ den samme ting.
Svar
Godt svar hidtil, selvom der er et par ting, som ingen herom nævnes, her er min 0,02 $
Jeg svarer bare i form af en historie, skal gøre tingene mere sjove og klare. Ingen tldr her. I processen skal du være i stand til at forstå, hvad forskellen er.
Der er flere grunde til, at DNNer udløste, da de gjorde det (stjerner var nødt til at justere, som alt andet, det er bare spørgsmålet om ret sted, rigtigt tidspunkt osv.).
En af årsagerne er tilgængeligheden af data, masser af data (mærket data). Hvis du vil være i stand til at generalisere og lære noget som “generisk prior” eller “universal prior “(aka de grundlæggende byggesten, der kan genbruges mellem opgaver / applikationer), så har du brug for masser af data. Og vilde data, kan jeg tilføje, ikke sterile datasæt, der er omhyggeligt registreret i laboratoriet med kontrolleret belysning og alt andet. Mekanisk Turk gjorde det muligt (mærkning).
For det andet gjorde muligheden for at træne større netværk hurtigere ved hjælp af GPUer eksperimenter hurtigere. ReLU-enheder gjorde tingene også hurtigere beregningsmæssigt og sørgede for deres regulering, da du havde brug for at bruge flere enheder i et lag for at kunne komprimere den samme information, da lag nu var flere spar e, så det gik også godt med frafald. De hjalp også med et vigtigt problem, der opstår, når du stabler flere lag. Mere om det senere. Forskellige flere tricks, der forbedrede ydeevnen. Som at bruge mini-batches (hvilket faktisk er skadeligt for den endelige fejl) eller krængninger (som faktisk ikke fanger så meget variation som lokale modtagelige felter), men er beregningsmæssigt hurtigere.
I mellemtiden diskuterede folk hvis de kunne lide dem mere tynde eller mere buttede, mindre eller højere, med eller uden fregner osv. Optimering var ligesom det sprænger eller bang det, så forskningen bevægede sig mod mere komplekse træningsmetoder som konjugeret gradient og newtons metode, endelig alle klarede sig, at der ikke er nogen gratis frokost. Netværk bøvede.
Hvad der bremsede tingene var problemet med forsvindende gradient . Folk gik som: whoa, det er langt ude, mand! I en nøddeskal betyder det, at det var svært at justere fejlen på lag tættere på input. Når du tilføjer flere lag på kagen, bliver det for wobbly. Du kunne ikke ” t tilbage-propagere meningsfuld fejl tilbage til de første lag. Jo flere lag, jo værre blev det. Bummer.
Nogle mennesker regnede med, at brug af kryds-entropi som tabsfunktion (godt, igen, klassifikation og billedgenkendelse) giver en form for regulering og hjælper mod, at netværket bliver mættet og igen gradienten var ikke i stand til at skjule det godt.
Det, der også gjorde det muligt, var præ-træning pr. lag ved hjælp af ikke-overvågede metoder. Grundlæggende tager du en masse auto-kodere og lærer stadig mindre abstrakte repræsentationer som du øger kompressionsforholdet. Vægtene fra disse netværk blev brugt til at initialisere den overvågede version. Dette løste det forsvindende gradientproblem på en anden måde: du starter allerede overvåget træning fra en meget bedre startposition. Så alle de andre netværk rejste sig og begyndte at gøre oprør. Men netværket havde brug for tilsyn alligevel, ellers var det umuligt at holde big data stille.
Nu til den sidste del, der endelig slags fører til dit svar, som er for kompliceret til at sætte det i en nøddeskal: hvorfor flere lag og ikke kun et. Fordi vi kan! og fordi kontekst og uforanderlige trækbeskrivere. og puljer.
Her er et eksempel: du har et datasæt med billeder, hvordan skal du træne en plan NN ved hjælp af disse data? Nå, naivt, du tager lad os sige hver række og du sammenkæder det til en lang vektor, og det er dit input. Hvad lærer du?Nå, nogle fuzzy nonsensfunktioner, der måske ikke ligner noget på grund af de mange mange typer afvigelser, som objekterne i billedet indeholder, og du er ikke i stand til at skelne mellem relevante og irrelevante ting. Og på et eller andet tidspunkt skal netværket glemme at kunne genlære nye ting. Så der er kapacitetsproblemet. Dette er mere ikke-lineær dynamik, men intuitionen er, at du skal øge antallet af neuroner for at kunne inkludere mere information i dit netværk.
Så pointen er, at hvis du bare indtaster billedet som et stykke, gør tilføjelse af ekstra lag ikke for meget for dig, da du ikke er i stand til at lære abstraktioner , hvilket er meget vigtigt. At gøre ting holistisk fungerer således ikke så godt, medmindre du laver enklere ting med netværket som at fokusere på en bestemt type objekt, så du begrænser dig til en klasse, og du vælger nogle globale egenskaber som klassifikationsmål. p>
Så hvad skal man gøre? Se på kanten af skærmen, og prøv at læse denne tekst. Problem? Så dumt som det lyder, skal du se på, hvad du læser. Ellers er det for fuzzy / der er ikke nok opløsning / granularitet. Lad os kalde fokusområdet det modtagelige felt. Netværk skal også være i stand til at fokusere. Dybest set i stedet for at bruge hele billedet som input, flytter du et glidende vindue langs billedet, og derefter bruger du det som input til netværket (lidt mindre stokastisk end hvad mennesker gør). Nu har du også en chance for at fange sammenhænge mellem pixels og dermed objekter, og du kan også skelne mellem søvnig kat, der sidder i en sofa, og et bungee-spring på hovedet. Pænt, troen på menneskeheden genoprettet. Netværket kan lære lokale abstraktioner i et billede på flere niveauer. Netværket lærer filtre, til at begynde med enkle, og bygger derefter op på dem for at lære mere komplekse filtre.
Så for at opsummere tingene: modtagelige felter / indviklinger, ikke-overvåget initialisering, udbedrede lineære enheder, frafald eller anden regulering metoder. Hvis du “er meget seriøs over dette, anbefaler jeg, at du kigger 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, dybe data. Word.
Kommentarer
- Hej Florin, tak for det pæne svar! Jeg kan godt lide skrivestilen. Når du taler om glidende vinduer, henviser du til, hvordan foldede lag af foldede NN observerer forskellige dele af et billede og projekt deres aktiveringer på et rum med en lavere dimension?
- stort set ja, indviklinger er ikke nødvendige, men de ‘ er hurtigere beregningsmæssigt, da vægten er begrænset. ud af dette papir, hvor de ikke bruger ‘ t bruger konvolutter og bruger lokale modtagelige felter. De vigtige nøgleord er lokale / hierarkiske: arxiv.org /pdf/1112.6209.pdf
- jeg synes også det nærmeste systematisk svar er sobi ‘ s. han ‘ fik min opstemning. Jeg har lige tilføjet et par ting mere her og der med lidt salt og peber.
Svar
I lægmæssige udtryk, den største forskel med de klassiske Neurale netværk er, at de har meget mere skjulte lag.
Ideen er at tilføje etiketter til lagene for at lave flere lag med abstraktion:
For eksempel et dybt neuralt netværk til objektgenkendelse :
- Lag 1: Enkelt pixels
- Lag 2: Kanter
- Lag 3: Formularer (cirkler, firkanter)
- Lag n: Hele objekt
Du kan finde en god forklaring på dette spørgsmål i Quora .
Og hvis du er interesseret i dette emne, vil jeg anbefale at se på dette bog .
Kommentarer
- Tak David, men jeg har ikke ‘ T virkelig se, hvordan man bare tilføjer etiketter gør det anderledes. Jeg husker også, at det var et svært problem at forstå og nedbryde, hvordan en funktion blev kodet af det neurale netværk. Der må være noget andet end bare at have flere lag. Hvad angår eksemplet, du gav, tror jeg, at du kan træne neurale netværk individuelt (old school) til at udføre hver af opgaverne.
- Effekten kommer, når du bruger den som en rørledning, så input og output fra lagstakkene ved hvert lag.
- Jeg har læst dit første link, som er en god ressource, og andre relaterede spørgsmål om quora og se, men det eksempel, du gav, virker ikke nøjagtigt med det jeg Læs. Jeg ‘ Jeg prøver at besvare mit eget spørgsmål med en sammenfatning af aflæsningerne.
- På trods af at den spidse ressource er interessant, svarer svaret aktuelt ikke på spørgsmålet.
- Kan du pege på et eksempel, hvor lagene er mærket (bortset fra en rent beskrivende måde)?Det er bestemt rigtigt, at skjulte lag ser ud til successivt mere komplekse funktioner i hvert skjult lag, men ” tilføjelse af etiketter ” synes at antyde, at de ‘ trænes specifikt til at gøre det.
Svar
NN:
- et skjult lag er nok, men kan alligevel have flere lag, fra venstre til højre rækkefølge (model: fremad NN)
- kun trænet på overvåget måde (backpropagation )
- når flere lag bruges, træner alle lagene på samme tid (samme algoritme: backpropagation), flere lag gør det vanskeligt at bruge, da fejl bliver for små
- svært at forstå, hvad der læres på hvert lag
DNN:
- flere lag er påkrævet, ikke-retnede kanter (model: begrænset boltzman-maskine)
- først trænet på en ikke-overvåget måde, hvor netværkene lærer relevante funktioner ved at lære at reproducere sine input , trænes derefter på en overvåget måde, der finjusterer funktionerne for at klassificere
- træne lagene et efter et fra input til outputlag (algoritme: kontrastdivergens)
- hvert lag klart indeholder træk ved stigende abstraktion
Flytningen til DNN skyldes tre uafhængige gennembrud, der skete i 2006.
Med hensyn til sætninger om NN er den, spørgsmålet henviser til, :
- universal approximation theorem eller Cybenko theorem: et feed-forward neuralt netværk med et enkelt skjult lag kan tilnærme enhver kontinuerlig funktion. Men i praksis kan det kræve meget flere neuroner, hvis der bruges et enkelt skjult lag.
Kommentarer
- -1? Virkelig? Jeg læste alt dette i litteraturen og lavede en sammenligning punkt for punkt af begge tilgange! Angiv i det mindste, hvad der ikke er korrekt …
- Jeg stemte ikke ned (måske kunne en downvoter ikke lide, at du besvarede dit eget spørgsmål? Men det er selvfølgelig helt fint her), men her er en ting, der ikke er helt korrekt. Hvad du angiver som egenskaber ved DNN: at kanter ikke er rettet, at det ‘ først trænes på en ikke-overvåget måde, at lagene trænes en efter en – alt dette refererer kun til dybe trosnetværk foreslået af Hinton i 2006. Dette gælder ikke nødvendigvis for dybe neurale netværk generelt, og faktisk er der nu mange måder at træne et dybt netværk uden alt dette. Se mit svar.
Svar
Jeg har også været lidt forvirret i starten af forskellen mellem neurale netværk (NN) og dybe neurale netværk (DNN), men “dybde” refererer dog kun til antallet af parametre & lag, desværre. Du kan tage det som en slags re -mærkning under den såkaldte “Canadian Mafia”.
For flere år siden havde jeg også neurale netværk som en del af en klasse, og vi lavede ciffergenkendelse, bølgetilnærmelse og lignende applikationer ved hjælp af NN, som havde flere skjulte lag og output og al den jazz, som DNN har. Det, vi ikke havde dengang, var imidlertid computerkraft.
Årsagen, der gjorde overgangen til DNN mulig og ønskelig, er fremskridtene inden for hardwareudvikling. Kort sagt, nu kan vi beregne mere, hurtigere og mere paralleliseret (DNN på GPUer), mens tid før var flaskehalsen for NNer.
Som der henvises til på Wikipedias side til Deep Læring , den “dybe” del refererer hovedsageligt til at have funktioner, der interagerer på en ikke-lineær måde på flere lag og udfører derfor funktionsextraktion og transformation. Dette blev også gjort i standard NNer, dog i mindre skala.
På samme side her har du definitionen “Et dybt neuralt netværk (DNN) er et kunstigt neuralt netværk (ANN) med flere skjulte lag af enheder mellem input- og outputlagene.”
Kommentarer
- Hej Mttk, tak for dit svar, det kaster mere lys på dette spørgsmål. Med hensyn til dit sidste punkt er ja strukturelt meget let at forklare forskellen (1 vs flere lag), men forskellen i hvordan disse flere lag bruges, synes at være det, der betyder noget, og det er meget mindre klart. Derfor fokuserede jeg spørgsmålet ikke på struktur ..
- Helt ærligt, jeg don ‘ t er enig med den sidste definition, jeg henviste til – da ANN / NN med et skjult lag ikke rigtig er effektive, og du havde brug for flere til enhver form for mere kompleks forudsigelse (I ‘ m siger dette, fordi jeg synes, DNN var et ubrugeligt buzzword tilføjet til en allerede god periode, NN). Jeg tror, du kan bruge NN og DNN om hverandre (for i dag bruger ingen et skjult lag NN ‘ s), mens brugen af lagene adskiller sig mellem typer DNN ‘ s (CNN, RBM, RNN, LSTM, CW-RNN, …) og ikke ideen om DNN selv.
Svar
Så vidt jeg ved, har det, der kaldes Deep Neural Network (DNN) i dag, intet fundamentalt eller filosofisk forskellig fra det gamle standard Neural Network (NN). Selvom man i teorien kan tilnærme en vilkårlig NN ved kun at bruge et lavt NN med kun et skjult lag, men dette gør det dog ikke betyder, at de to netværk fungerer ens, når de trænes ved hjælp af den samme algoritme og træningsdata. Faktisk er der en voksende interesse for at træne lavvandede netværk, der fungerer på samme måde som dybe netværk. Den måde, dette gøres på, er imidlertid ved først at træne et dybt netværk og derefter træne det lave netværk til at imitere det endelige output (dvs. output fra det næstsidste lag) af det dybe netværk. Se, hvad der gør dybe arkitekturer gunstige, er, at nutidens træningsteknikker (udbredelse af ryg) tilfældigvis fungerer bedre, når neuronerne er lagt i en hierarkisk struktur.
Et andet spørgsmål, der kan stilles, er: hvorfor neurale Netværk (især DNNer) blev pludselig så populære. Efter min forståelse er de magiske ingredienser, der gjorde DNNer så populære for nylig, følgende:
A. Forbedrede datasæt og databehandlingsfunktioner
1. Store datasæt med millioner af forskellige billeder blev tilgængelige
2. Hurtig GPU-implementering blev gjort tilgængelig for offentlige
B. Forbedrede træningsalgoritmer og netværksarkitekturer
1. Rettede lineære enheder (ReLU) i stedet for sigmoid eller tanh
2. Dybe netværksarkitekturer udviklede sig gennem årene
A-1) Indtil for nylig, i det mindste i Computer Vision kunne vi ikke træne modeller på millioner af mærkede billeder; simpelthen fordi mærkede datasæt af den størrelse ikke eksisterede. Det viser sig, at udover antallet af billeder er etikettsætets granularitet også en meget afgørende faktor for DNNs succes (se figur 8 i dette papir , af Azizpour et al.).
A-2) En masse teknisk indsats har gået i at gøre det muligt at træne DNNer, der fungerer godt i praksis, især fremkomsten af GPU-implementeringer. En af de første succesrige GPU-implementeringer af DNNer kører på to parallelle GPUer; alligevel tager det cirka en uge at træne et DNN på 1,2 millioner billeder i 1000 kategorier ved hjælp af avancerede GPUer (se dette papir, af Krizhevsky et al.) .
B-1) Anvendelse af enkle rektificerede lineære enheder (ReLU) i stedet for sigmoid og tanh-funktioner er sandsynligvis den største byggesten til at muliggøre træning af DNNer. Bemærk, at både sigmoid- og tanh-funktioner har næsten nul gradient næsten overalt, afhængigt af hvor hurtigt de går fra det lave aktiveringsniveau til det høje; i ekstreme tilfælde, når overgangen er pludselig, får vi en trinfunktion, der har hældning nul overalt undtagen på et tidspunkt, hvor overgangen sker.
B-2) Historien om, hvordan neurale netværksarkitekturer har udviklet sig gennem årene, minder mig om, hvordan evolution ændrer en organisms struktur i naturen. Parameterdeling ( fx i sammenløbende lag), frafaldsregularisering, initialisering, læringshastighedsplan, rumlig pooling, undersampling i de dybere lag og mange andre tricks, der nu betragtes som standard i uddannelse af DNNer, blev udviklet, udviklet, ende skræddersyet gennem årene for at gøre det muligt at træne de dybe netværk, som det er i dag.
Kommentarer
- +1. Det første svar i denne tråd, der giver et passende svar på OP ‘ s spørgsmål. Mange gode punkter her. Min eneste store kommentar ville være, at ud over din A og B, Før er også C: Massiv stigning i størrelsen af tilgængelige træningsdatasæt. Dette synes at være mindst lige så vigtigt som A og B.
- Jeg tror ikke ‘ t synes, relu er så vigtigt: Alex krizhevsky-papir hævdede, at det fik nn til at lære sig op til 6 gange hurtigere. De fleste af de andre ændringer i netværksstrukturen, du nævner, vedrører foldningsnns, som bare kopierer standard billedbehandlingsrørledninger (god ting, men ingen nye indsigter)
- @amoeba: størrelsen på datasættet er under A. opdaterede teksten for at fremhæve den.
- @ seanv507: Jeg havde faktisk konvolutionsnetværk (ConvNets) i tankerne, da jeg skrev svaret. Hvis der er andre vigtige faktorer (ikke relateret til ConvNets), som jeg har savnet, ville jeg sætte pris på det, hvis du nævner dem. Jeg vil med glæde opdatere mit svar i overensstemmelse hermed.Med hensyn til ReLUer er træning af nns med tanh og sigmoid betydeligt sværere end med ReLUer på grund af problemet med forsvindende gradienter: enheder bliver let mættede, og når det først sker, tager det lang tid at blive umættede igen (gradienter er meget små, når enheden er mættet)
Svar
Forskellen mellem et “Deep” NN og et standard NN er rent kvalitativ: der er ingen definition af, hvad det “dybe” betyder. “Dyb” kan betyde alt fra de ekstremt sofistikerede arkitekturer, der bruges af Google, Facebook og co, som har 50-80 eller endnu flere lag, til 2 skjulte lag (4 lag i alt) arkitekturer. Jeg ville ikke blive overrasket, hvis du endda kunne finde artikler, der hævder at udføre dyb læring med et enkelt skjult lag, fordi “dyb” betyder ikke meget.
“Neuralt netværk” er også et ord, der ikke betyder “t har en meget præcis betydning. Det dækker et ekstremt stort ensemble af modeller, fra tilfældige boltzman-maskiner (som ikke er rettet mod grafer) til fremadrettede arkitekturer med forskellige aktiveringsfunktioner. De fleste NNer trænes ved hjælp af backprop, men det behøver ikke at være tilfældet, så selv træningsalgoritmerne er ikke meget homogene.
Samlet set er dyb læring, dybe NNer og NNer alle blevet fangst-ord, der fanger en lang række tilgange.
For gode introduktionsreferencer til “hvad der ændrede sig”: Deep Learning of Representations: Ser fremad , Bengio, 2013 er en god gennemgang + perspektiv for fremtiden. Se også Behøver dybe net virkelig være dybe? Ba & Caruana, 2013 som illustrerer tha t at være dyb kan ikke være nyttigt til repræsentation, men til læring.
Kommentarer
- De referencer, du giver, er meget nyttige , men resten af svaret i den aktuelle form (som læser som ” NN betyder ikke noget, DNN betyder ikke noget, NN og DNN kan gøre en masse ting “) ikke meget, vil du overveje at revidere det?
Svar
For at udvide David Gasquez svar er en af de største forskelle mellem dybe neurale netværk og traditionelle neurale netværk, at vi ikke bare bruger backpropagation til dybe neurale net.
Hvorfor? Fordi backpropagation træner senere lag mere effektivt, end det træner tidligere lag – når du går tidligere og tidligere i netværket, bliver fejlene mindre og mere diffuse. Så et ti-lags netværk vil grundlæggende være syv lag med tilfældige vægte efterfulgt af tre lag med monterede vægte og gøre lige så godt som et trelagsnetværk. Se her for mere.
Så det konceptuelle gennembrud behandler de separate problemer (de mærkede lag) som separate problemer – hvis vi først prøv at løse problemet med at opbygge et generisk godt første lag, og prøv derefter at løse problemet med at opbygge et generisk godt andet lag, til sidst har vi et dybt funktionsrum, som vi kan føde til vores faktiske problem.
Svar
Jeg vil ikke sige, at der er nogen stor filosofisk forskel mellem NN og DNN (faktisk ville jeg sige, at DNN bare er en markedsføring udtryk for at skelne fra “mislykket” NN). Hvad der har ændret sig er størrelsen på datasættene. I det væsentlige er neurale netværk i øjeblikket de bedste $ O (n) $ statistiske estimatorer, der fungerer godt for højdimensionelle store datasæt (f.eks. Imagenet).
Jeg synes, du skal træde tilbage og se, at dette har skabt en genopblussen i lav AI – f.eks pose med ord til sentimentanalyse og andre sproglige applikationer og visuel pose med ord var førende tilgang til billedgenkendelse før DNN. Ingen siger en pose med ord er en ægte sprogmodel, men det er en effektiv teknisk løsning. Så jeg vil sige, at DNN er en bedre “visuel pose med ord” – se f.eks. Szegedy et al. 2013 Spændende egenskaber for neurale netværk og Nguyen et al. Deep Neural Networks er let narret: Forudsigelser med høj tillid til uigenkendelige billeder hvor det er klart, at der ikke læres strukturer af højere orden osv. (eller hvad der kræves for DNN).
Kommentarer
- @amoeba dette andet papir er næsten et ledsagende papir til det første (igen med masser af billeder!)
Svar
For at besvare sidstnævnte spørgsmål skal du se på dette papir fra Telgarsky der siger, at for et bestemt klassificeringsproblem “viser alle lavvandede netværk med færre end eksponentielt (i k) mange noder fejl mindst 1/6, hvorimod et dybt netværk med 2 noder i hvert af 2k lag opnår nul fejl.”
Det pågældende klassifikationsproblem er det n-alternerende punkt-problem, hvor vi betragter intervallet $ [0,1-2 ^ {- k}] $ så input $ x_i $ er $ 2 ^ k $ ensartet fordelte punkter i dette interval og det tilsvarende $ y_i $ er angivet af $ y_i = 1 $ hvis $ i $ er ulige, og $ y_i = 0 $ hvis $ i $ er jævn. Vi spørger derefter, hvor godt kan lavvandede netværk uden eksponentielle bredder fange dette forhold i forhold til dybe netværk med kun to noder i hvert lag? I det væsentlige kan vi tilnærme data bedre (nøjagtigt ens) med en lineær ( i $ k $ ) antal lag med kun to noder i hvert lag, hvorimod vi behøver eksponentielt mange (i $ k $ ) noder for at få det samme resultat i et lavt netværk.
Beviset for citatet indebærer at bemærke, at sammensætningen af ikke-lineære aktiveringer anvendt på affine transformationer (dvs. med et større antal lag) formår at opfange mere variation i dataene end at opsummere de samme funktioner (som når vi tilføjer noder til lag).
Svar
Deep Learning er et sæt algoritmer i maskinindlæring, der forsøg på at modellere abstraktioner på højt niveau i data ved hjælp af arkitekturer sammensat af flere ikke-lineære transformationer .
Kilde: Arno Candel
Skriv et svar