Vad är skillnaden mellan ett neurala nätverk och ett djupt neurala nätverk, och varför fungerar de djupa bättre?
On december 22, 2020 by adminJag har inte sett frågan som anges exakt i dessa termer, och det är därför jag gör en ny fråga.
Vad jag är intresserad av att veta är inte definitionen av ett neuralt nätverk, utan att förstå den faktiska skillnaden med ett djupt neuralt nätverk.
För mer sammanhang: Jag vet vad ett neuralt nätverk är och hur backpropagation fungerar. Jag vet att ett DNN måste ha flera dolda lager. Men för 10 år sedan i klassen lärde jag mig att ha flera lager eller ett lager (inte räkna in- och utgångslager) var ekvivalent när det gäller funktionerna som ett neuralt nätverk kan representera (se Cybenko ”s Universal approximationssats ), och att ha fler lager gjorde det mer komplicerat att analysera utan vinst i prestanda. Det är uppenbart att det inte är fallet längre.
Jag antar, kanske felaktigt, att skillnaderna är när det gäller träningsalgoritm och egenskaper snarare än struktur, och därför Jag skulle verkligen uppskatta om svaret kunde understryka orsakerna som gjorde övergången till DNN möjlig (t.ex. matematiskt bevis eller slumpmässigt spel med nätverk?) och önskvärt (t.ex. konvergenshastighet?)
Kommentarer
- FYI: Hur sant är den här bilden för djupinlärning?
- Om funktionen du vill approximera är en kompositionsfunktion (vanligt i bildbehandling och många naturliga domäner på grund av fysikens lag). Det kan bevisas att djupa nätverk kan utnyttja denna sammansättning och uppnå samma nivå av approximationsfel med exponentiellt mindre antal nervceller (jämfört med ett nätverk med ett enda dolt lager). Ref: Poggio, Tomaso, et al. ” Varför och när kan djupa men inte grunda nätverk undvika förbannelsen av dimensionalitet: en recension. ” International Journal of Automation and Computing (2017)
- Du kanske vill ta en titt på den här artikeln
- Se 6.4 av arxiv.org/pdf/2004.06093.pdf
Svar
Låt oss börja med en trivialitet: Djupt neurala nätverk är helt enkelt ett matningsnätverk med många dolda lager.
Det här är mer eller mindre allt som finns att säga om definitionen. Neurala nätverk kan vara återkommande eller matas vidare, matningsförmedlarna har inga loopar i sin graf och kan organiseras i lager. , då säger vi att nätverket är djupt .
Hur många lager måste ett nätverk ha för att kvalificera sig som djupt? Det finns ingen bestämt svar på detta (det ”sa lite som att fråga hur många korn gör en hög ), men vanligtvis har två eller flera dolda lager räknas som djupa. Däremot kallas ett nätverk med bara ett enda dolt lager vanligtvis ”grunt”. Jag misstänker att det kommer att bli en viss inflation här, och om tio år kanske folk tror att allt med mindre än, säg, tio lager är grunt och endast lämpligt för dagisövningar. Informellt föreslår ”djupt” att nätverket är svårt att hantera.
Här är en illustration, anpassad härifrån :
Men den verkliga frågan du ställer är naturligtvis, varför skulle det vara bra att ha många lager?
Jag tror att något förvånande svar är att ingen riktigt vet. Det finns några vanliga förklaringar som jag kort kommer att granska nedan, men ingen av dem har på ett övertygande sätt visats vara sant, och man kan inte ens vara säker på att det att ha många lager är riktigt bra.
Jag säger att detta är häpnadsväckande, för djupinlärning är enormt populärt, slår alla rekord (från bildigenkänning, att spela Go, till automatisk översättning, etc.) varje år, brukar användas av industrin, etc. etc . Och vi är fortfarande inte riktigt säkra på varför det fungerar så bra.
Jag baserar min diskussion på Deep Learning bok av Goodfellow, Bengio och Courville som gick ut 2017 och anses allmänt vara boken om djupinlärning. (Det är fritt tillgängligt online.) Det relevanta avsnittet är 6.4.1 Universella approximationsegenskaper och djup .
Du skrev att
För 10 år sedan i klassen lärde jag mig att det att ha flera lager eller ett lager (räknas inte in- och utlagren) var ekvivalent när det gäller de funktioner som ett neuralt nätverk kan representera […]
Du måste referera till den så kallade Universal approximationsteorem , bevisat av Cybenko 1989 och generaliserades av olika människor på 1990-talet. Det säger i princip att ett grunt neuralt nätverk (med 1 dolt lager) kan approximera vilken som helst funktion, dvs. kan i princip lära sig vad som helst . Detta gäller för olika icke-linjära aktiveringsfunktioner, inklusive rättade linjära enheter som de flesta neurala nätverk använder idag (läroboken refererar till Leshno et al. 1993 för detta resultat).
Om så är fallet, varför använder alla djupa nät?
Tja, ett naivt svar är att de fungerar bättre. Här är en figur från Deep Learning -boken som visar att det hjälper till att ha fler lager i en viss uppgift, men samma fenomen observeras ofta i olika uppgifter och domäner:
Vi vet att ett grunt nätverk kunde presterar lika bra som de djupare. Men det gör det inte; och det gör de vanligtvis inte. Frågan är — varför? Möjliga svar:
- Kanske ett grunt nätverk skulle behöva fler nervceller än det djupa?
- Kanske är ett grunt nätverk svårare att träna med våra nuvarande algoritmer (t.ex. mer otäcka lokala minima, eller konvergensgraden är långsammare, eller vad som helst)?
- Kanske passar en grund arkitektur inte till den typ av problem som vi vanligtvis försöker lösa (t.ex. objektigenkänning är en viktig ”djup” ”, hierarkisk process)?
- Något annat?
Deep Learning -boken argumenterar för punktpunkter # 1 och # 3. För det första hävdar det att antalet enheter i ett grunt nätverk växer exponentiellt med uppgiftskomplexitet. Så för att vara användbart kan ett grunt nätverk behöva vara mycket stort; möjligen mycket större än ett djupt nätverk. Detta är baserat på ett antal papper som visar att grunda nätverk i vissa fall behöver exponentiellt många neuroner; men om t.ex. MNIST-klassificering eller Go playing är sådana fall inte riktigt tydliga. För det andra säger boken detta:
Att välja en djup modell kodar för en mycket allmän uppfattning att den funktion vi vill lära oss bör innefatta sammansättning av flera enklare funktioner. Detta kan tolkas ur en representativ inlärningssynpunkt som att vi tror att inlärningsproblemet består i att upptäcka en uppsättning underliggande variationfaktorer som i sin tur kan beskrivas i termer av andra, enklare underliggande variationfaktorer.
Jag tror att det nuvarande ”samförståndet” är att det ”är en kombination av punkt 1 och # 3: för verkliga uppgifter är djup arkitektur ofta fördelaktig och grund arkitektur skulle vara ineffektivt och kräva mycket mer neuroner för samma prestanda.
Men det är långt ifrån bevisat. Tänk på t.ex. Zagoruyko och Komodakis, 2016, Wide Residual Networks . Restnätverk med mer än 150 lager dök upp 2015 och vann olika bildigenkänningstävlingar. Detta var en stor framgång och såg ut som ett övertygande argument för djup; här är en siffra från en presentation av den första författaren på återstående nätverkspapper (notera att tiden förvirrande går till vänster här):
Men papperet länkat ovan visar att en ”bred ”restnätverk med” endast ”16 lager kan överträffa” djupa ”sådana med 150+ lager. Om detta är sant bryts hela punkten i ovanstående figur ner.
Eller överväga Ba och Caruana, 2014, Do Deep Nets Really Need to be Djupt? :
I denna uppsats ger vi empiriska bevis för att grunda nät kan lära sig samma funktion som djupa nät, och i vissa fall med samma antal parametrar som de djupa näten. Vi gör detta genom att först träna en toppmodern djupmodell och sedan träna en grund modell för att efterlikna den djupa modellen. Mimikmodellen tränas med hjälp av modellkomprimeringsschemat som beskrivs i nästa avsnitt. Anmärkningsvärt, med modellkomprimering kan vi träna grunda nät för att vara lika exakta som vissa djupa modeller, även om vi inte kan träna dessa grunda nät för att vara lika exakta som de djupa näten när de grunda näten tränas direkt på originalet märkta träningsdata. Om ett grunt nät med samma antal parametrar som ett djupt nät kan lära sig att efterlikna ett djupt nät med hög trohet, är det uppenbart att funktionen som lärs av det djupa nätet egentligen inte behöver vara djup.
Om det är sant, skulle det betyda att den korrekta förklaringen snarare är min kula # 2, och inte # 1 eller # 3.
Som jag sa – – ingen vet det riktigt ännu.
Avslutande kommentarer
Mängden framsteg som uppnåtts i djup inlärning under de senaste ~ tio åren är verkligen fantastiskt, men det mesta av dessa framsteg uppnåddes genom försök och fel, och vi saknar fortfarande mycket grundläggande förståelse för vad exakt gör att djupa nät fungerar så bra. Till och med listan över saker som människor anser vara avgörande för att skapa ett effektivt djupt nätverk verkar förändras vartannat år.
Den djupa inlärningsrenässansen började 2006 när Geoffrey Hinton (som hade arbetat med neurala nätverk i mer än 20 år utan stort intresse från någon) publicerade ett par banbrytande artiklar som erbjuder ett effektivt sätt att träna djupa nätverk ( Science paper , Neural computation paper ). Tricket var att använda förundersökning utan tillsyn innan du började lutningen. Dessa tidningar revolutionerade fältet, och i ett par år trodde folk att förutbildning utan tillsyn var nyckeln.
Sedan 2010 visade Martens att djupa neurala nätverk kan utbildas med andra ordningens metoder (så kallade hessiska-fria metoder) och kan överträffa nätverk utbildade med förutbildning: Djupinlärning via hessianfri optimering . Sedan Sutskever et al 2013. visade att stokastisk gradientnedstigning med några mycket smarta trick kan överträffa hessianfria metoder: Om vikten av initialisering och momentum i djupinlärning . Omkring 2010 insåg människor också att användning av rättade linjära enheter istället för sigmoidenheter gör stor skillnad för gradientnedstigning. Avbrott uppträdde 2014. Restnätverk uppträdde 2015. Människor fortsätter att hitta fler och mer effektiva sätt att träna djupa nätverk och vad som verkade vara en viktig insikt för 10 år sedan anses ofta en olägenhet idag. Allt detta drivs till stor del av försök och fel och det finns liten förståelse för vad som gör att vissa saker fungerar så bra och andra saker inte. Att träna djupa nätverk är som en stor påse med tricks. Framgångsrika knep är vanligtvis rationaliserade post factum.
Vi vet inte ens varför djupa nätverk når en prestationsplatå; bara tio år brukade folk skylla lokala minima, men nuvarande tänkande är att detta inte är poängen (när prestandaplatåerna tenderar att förbli stora). Det här är en så grundläggande fråga om djupa nätverk, och vi vet inte ens detta .
Uppdatering: Detta är mer eller mindre föremål för Ali Rahimis NIPS 2017-tal om maskininlärning som alkemi: https://www.youtube.com/watch?v=Qi1Yry33TQE .
[Det här svaret skrevs helt om i april 2017, så vissa av kommentarerna nedan gäller inte längre.]
Kommentarer
- Trevligt svar! 1) Som också nämnts av @Nicolas är det visar sig att det finns en teorem ( en.wikipedia.org/wiki/Universal_approximation_theorem ) som hävdar att en feed-forward neuralt n Etwork med ett enda dolt lager och ett begränsat antal neuroner kan approximera vilken kontinuerlig funktion som helst (inklusive ett DNN) på enhetens hyperkub. Detta resultat påstås vara oberoende av valet av aktiveringsfunktion. 2) Jag är inte säker på om din senaste anmärkning (dvs. att Hinton gick med i Google) är relevant för DNN: s senaste framgång. Hinton gick med i Google långt efter att DNN blev epidemi!
- Kanske använder vi ’ terminologin annorlunda. Perceptrons har inte ’ t ett dolt lager – deras input är data, deras output är klassificeringen. Ett flerskiktsnätverk består av ett gäng perceptroner som är kopplade ihop så att utdata från lager $ n-1 $ bildar input till lager $ n $. Ett nätverk med ett enda dolt lager har således tre lager (input, dold, output). Detta dolda lager är nyckeln till universell approximation: perceptrons, som saknar det, kan ’ t beräkna saker som XOR, men flerskiktsnätverk kan.
- Linjäriteten saken verkar som en kombination av två frågor. Perceptrons kan bara beräkna linjära beslutsgränser – det kan bara rita raka linjer för att dela två klasser. Flerskiktsnätverk kan ” rita ” mer komplicerade gränser. Men varken perceptrons eller flerskiktsnätverk använder linjära aktiveringsfunktioner, utom i utskiktet i ett flerskiktsnätverk. Perceptron-aktiveringsfunktionen är en heaviside (1 om x > 0, 0 annars); flerskiktsnätverk använder ofta sigmoids, men begränsningarna för universal ca. är ganska milda: icke-konstanta, begränsade och monotont växande.
- @amoeba bra svar, bilden i början fick mig att läsa resten, men det var på det bästa. Perceptronen är motsvarigheten till den linjära regressionen för klassificering, varför när människor använder den slutna formlösningen (pseudoinverse) för att lösa problemet istället för online (sgd) -metoder, så ’ s kallas Logistisk regression, på grund av logistiken (sigmoidfunktionen) = perceptron. En perceptron / logistisk regression kan bara ’ rita ’ linjära beslutsgränser och att ’ s varför det ’ kallas linjärt.
- Flerskiktsperceptronen (vad du ritade i din första bild till vänster) kan dock kombinera flera sådana linjära beslut gränser och kan därmed dela upp utrymmet för att lösa det (icke-linjära) XOR-problemet som @Matt nämnde. Så många många kombinerade linjära beslutsgränser kan göra en cirkel till exempel om du kikar i ögonen. Det beror på hur du tänker på det – beslutet är fortfarande linjärt i ett högre utrymme, om du är bekant med kärnor är det ’ samma sak.
Svar
Bra svar hittills, men det finns några saker som ingen nämnde här, här är min 0,02 $
Jag svarar bara i form av en berättelse, skulle göra saker roligare och tydligare. Ingen tldr här. I processen bör du kunna förstå vad skillnaden är.
Det finns flera anledningar till att DNN: er gnistrade när de gjorde det (stjärnor var tvungna att anpassa sig, som alla liknande saker, det är bara rätt plats, rätt tid etc).
En anledning är tillgången på data, massor av data (märkta data). Om du vill kunna generalisera och lära dig något som ”generisk prior” eller ”universal prior ”(aka de grundläggande byggstenarna som kan återanvändas mellan uppgifter / applikationer) då behöver du massor av data. Och vilda data, kan jag lägga till, inte sterila datamängder noggrant inspelade i laboratoriet med kontrollerad belysning och allt. Mekanisk Turk gjorde det möjligt (märkning).
För det andra gjorde möjligheten att träna större nätverk snabbare med GPU: er att experimentera snabbare. ReLU-enheter gjorde också saker beräkningsmässigt snabbare och tillhandahöll deras reglering eftersom du behövde använda fler enheter i ett lager för att kunna komprimera samma information eftersom lager nu var fler spars e, så det gick också bra med bortfall. De hjälpte också till med ett viktigt problem som händer när du staplar flera lager. Mer om det senare. Olika multipla knep som förbättrade prestanda. Som att använda minibatcher (vilket i själva verket är skadligt för slutfel) eller krångel (som faktiskt inte fångar lika mycket varians som lokala mottagliga fält) men är beräkningsmässigt snabbare.
Under tiden diskuterade folk om de gillade dem mer magra eller mer knubbiga, mindre eller längre, med eller utan fräknar, etc. Optimering var som att det brusar eller slår det så forskningen rörde sig mot mer komplexa träningsmetoder som konjugerad gradient och newtonmetod, äntligen alla insåg att det inte finns någon gratis lunch. Nätverk burpade.
Det som saktade ner saker var problemet med försvinnande gradient . Människor gick som: whoa, det är långt ute, man! I ett nötskal betyder det att det var svårt att justera felet på lager närmare ingångarna. När du lägger till fler lager på kakan blir det alltför vacklande. Du kunde inte ” t back-propagera meningsfullt fel tillbaka till de första lagren. Ju fler lager, desto värre blev det. Bummer.
Vissa människor tänkte att användning av korsentropin som förlustfunktion (ja, igen, klassificering och bildigenkänning) ger någon form av reglering och hjälper till att nätverket blir mättat och i sin tur lutningen kunde inte dölja det så bra.
Det som också gjorde det möjligt var förträningen per lager med hjälp av metoder utan tillsyn. I grund och botten tar du en massa auto-kodare och lär dig allt mindre abstrakta representationer som du ökar kompressionsförhållandet. Vikten från dessa nätverk användes för att initialisera den övervakade versionen. Detta löste det försvinnande lutningsproblemet på ett annat sätt: du börjar redan övervakad utbildning från en mycket bättre startposition. Så alla andra nätverk stod upp och började göra uppror. Men nätverken behövde tillsyn ändå, annars var det omöjligt att hålla big data stilla.
Nu, för den sista delen som äntligen leder till ditt svar som är för komplicerat för att sätta i ett nötskal: varför fler lager och inte bara ett. För att vi kan! och för att sammanhang och oförändrade funktionsbeskrivare. och pooler.
Här är ett exempel: du har en datauppsättning med bilder, hur ska du träna en plan NN med den informationen? Tja, naivt, du tar oss säga varje rad och du sammanfogar den till en lång vektor och det är din inmatning. Vad lär du dig?Tja, några otydliga nonsensfunktioner som kanske inte ser ut som någonting på grund av de många många typer av avvikelser som objekten i bilden innehåller och du kan inte skilja mellan relevanta och irrelevanta saker. Och någon gång måste nätverket glömma att kunna lära sig nya saker. Så det finns kapacitetsfrågan. Detta är mer icke-linjär dynamik, men intuitionen är att du måste öka antalet neuroner för att kunna inkludera mer information i ditt nätverk.
Så poängen är att om du bara matar in bilden som ett stycke, så gör inte extra lager inte för mycket för dig eftersom du inte kan lära dig abstraktioner , vilket är mycket viktigt. Att göra saker holistiskt fungerar alltså inte så bra, såvida du inte gör enklare saker med nätverket som att fokusera på en viss typ av objekt, så du begränsar dig till en klass och väljer några globala egenskaper som ett klassificeringsmål. p>
Så vad finns det att göra? Titta på kanten av skärmen och försök läsa den här texten. Problem? Så dumt som det låter måste du titta på vad du läser. Annars är det för otydligt / det finns inte tillräckligt med upplösning / granularitet. Låt oss kalla fokusområdet det mottagliga fältet. Nätverk måste kunna fokusera också. I stället för att använda hela bilden som inmatning flyttar du ett skjutfönster längs bilden och sedan använder du det som inmatning till nätverket (lite mindre stokastiskt än vad människor gör). Nu har du också en chans att fånga korrelationer mellan pixlar och därmed föremål och du kan också skilja mellan sömnig katt som sitter på en soffa och en upp och ner kattunge. Snygg, tron på mänskligheten återställd. Nätverket kan lära sig lokala abstraktioner i en bild på flera nivåer. Nätverket lär sig filter, initialt enkla och bygger sedan på dem för att lära sig mer komplexa filter.
Så, för att sammanfatta saker: mottagliga fält / viklingar, oövervakad initialisering, korrigerade linjära enheter, bortfall eller annan regularisering metoder. Om du är mycket seriös om detta rekommenderar jag att du tittar på Schmidhuber s Deep Learning in Neural Networks: An Overview here ”s the url for the preprint http://arxiv.org/abs/1404.7828
Och kom ihåg: stor inlärning, djupdata. Word.
Kommentarer
- Hej Florin, tack för det fina svaret! Jag gillar skrivstil. När du talar om skjutbara fönster, hänvisar du till hur fusklager av fällnings NN observerar olika delar av en bild och projekt deras aktiveringar på ett utrymme med lägre dimension?
- ganska ja, viklingar är inte nödvändiga, men de ’ går snabbare beräkningsmässigt, eftersom vikterna är begränsade. ut det här dokumentet där de inte använder ’ t använder krångel och använder lokala mottagliga fält. De viktiga nyckelorden är lokala / hierarkiska: arxiv.org /pdf/1112.6209.pdf
- Jag tycker också närmast systematiskt svar är sobi ’ s. han ’ fick min röst. Jag har precis lagt till några saker här och där med lite salt och peppar.
Svar
I lekmannstermer, den största skillnaden med de klassiska Neural Networks är att de har mycket mer dolda lager.
Tanken är att lägga till etiketter i lagren för att göra flera lager av abstraktion:
Till exempel ett djupt neurala nätverk för objektigenkänning :
- Lager 1: Enstaka pixlar
- Layer 2: Edges
- Layer 3: Forms (cirklar, kvadrater)
- Layer n: Hela objekt
Du kan hitta en bra förklaring på denna fråga i Quora .
Och om du är intresserad av detta ämne skulle jag rekommendera att ta en titt på detta bok .
Kommentarer
- Tack David, men jag har inte ’ Inte riktigt se hur man bara lägger till etiketter gör det annorlunda. Jag minns också att det var ett svårt problem att förstå och sönderdela hur en funktion kodades av det neurala nätverket. Det måste finnas något annat än att bara ha fler lager. När det gäller exemplet du gav tror jag att du kan träna neurologiska nätverk individuellt (old school) för att utföra var och en av uppgifterna.
- Kraften kommer när du använder den som en pipeline, så ingångarna och utgångarna från lagerstaplarna vid varje lager.
- Jag har läst din första länk, vilket är en bra resurs, och andra relaterade frågor om quora och se, men det exempel du gav verkar inte vara korrekt med det jag läsa. Jag ’ Jag försöker svara på min egen fråga och sammanfattar avhandlingarnas läsningar.
- Trots att den spetsiga resursen är intressant svarar svaret nu inte på frågan.
- Kan du peka på ett exempel där skikten är märkta (annat än på ett rent beskrivande sätt)?Det är verkligen sant att dolda lager verkar ha successivt mer komplexa funktioner i varje dolt lager, men ” att lägga till etiketter ” verkar antyda att de ’ utbildas särskilt för att göra det.
Svar
NN:
- ett dolt lager räcker men kan ändå ha flera lager, vänster till höger ordning (modell: mata fram NN)
- utbildas endast på övervakat sätt (backpropagation )
- när flera lager används, träna alla lager samtidigt (samma algoritm: backpropagation), fler lager gör det svårt att använda eftersom fel blir för små
- svårt att förstå vad som lärs ut i varje lager
DNN:
- flera lager krävs, oriktade kanter (modell: begränsad boltzman-maskin)
- utbildades först på ett övervakat sätt, där nätverken lär sig relevanta funktioner genom att lära sig att återge sina insatser , tränas sedan på ett övervakat sätt som finjusterar funktionerna för att klassificera
- träna lagren en efter en från ingång till utgående lager (algoritm: kontrastdivergens)
- varje lager tydligt innehåller drag av ökande abstraktion
Övergången till DNN beror på tre oberoende genombrott som hände 2006.
När det gäller satser på NN är den frågan som man hänvisar till är :
- universal approximation theorem eller Cybenko theorem: ett feed-forward neuralt nätverk med ett enda dolt lager kan approximera vilken kontinuerlig funktion som helst. Men i praktiken kan det kräva mycket mer neuroner om ett enda dolt lager används.
Kommentarer
- -1? Verkligen? Jag läste allt detta i litteraturen och gjorde en jämförelse punkt för punkt av båda metoderna! Vänligen ange åtminstone vad som inte är korrekt …
- Jag röstade inte ner (kanske en nedröstare tyckte inte om att du svarade på din egen fråga? Men det är naturligtvis helt bra här), men här är en sak som inte är helt korrekt. Vad du listar som egenskaper för DNN: att kanterna inte är riktade, att det ’ först tränades på ett övervakat sätt, att skikten tränades en efter en – allt detta hänvisar bara till djupa trosnätverk som Hinton föreslog 2006. Detta är inte nödvändigtvis sant för djupa neurala nätverk i allmänhet och det finns faktiskt nu många sätt att träna ett djupt nätverk utan allt detta. Se mitt svar.
Svar
Jag har också varit förvirrad lite i början av skillnaden mellan neurala nätverk (NN) och djupa neurala nätverk (DNN), men ”djup” hänvisar tyvärr bara till antalet parametrar & lager, tyvärr. Du kan ta det som någon form av -märkning under den så kallade ”kanadensiska maffian”.
För flera år sedan hade jag också Neural Networks som en del av en klass och vi gjorde siffrigenkänning, våg approximation och liknande applikationer med hjälp av NN, som hade flera dolda lager och utgångar och all den jazz som DNN har. Men vad vi inte hade då var datorkraft.
Anledningen som gjorde övergången till DNN möjlig och önskvärd är framstegen inom hårdvaruutveckling. Enkelt uttryckt, nu kan vi beräkna mer, snabbare och mer parallelliserad (DNN på GPU ”s), medan tiden var flaskhalsen för NN” s.
Som det hänvisas till på Wikipedia ”s sida för Deep Inlärning , den ”djupa” delen hänvisar mest till att ha funktioner som interagerar på ett icke-linjärt sätt i flera lager och därför utför funktionsextraktion och transformation. Detta gjordes också i vanliga NN ”, dock i mindre skala.
På samma sida, här har du definitionen ”Ett djupt neurala nätverk (DNN) är ett artificiellt neuralt nätverk (ANN) med flera dolda lager av enheter mellan ingångs- och utgångslager.”
Kommentarer
- Hej Mttk, tack för ditt svar, det kastar mer ljus på denna fråga. Beträffande din sista punkt, ja strukturell är väldigt lätt att förklara skillnaden (1 vs flera lager), men skillnaden i hur dessa flera lager används verkar vara det som betyder och det är mycket mindre tydligt. Det är därför jag fokuserade frågan inte på struktur ..
- Ärligt talat, jag don ’ t håller med den sista definitionen som jag hänvisade till – eftersom ANN / NN med ett dolt lager inte är riktigt effektiva, och du behövde flera för någon form av mer komplex förutsägelse (I ’ m säger detta för att jag tycker att DNN var ett värdelöst buzzword tillagt till en redan bra period, NN). Jag tror att du kan använda NN och DNN omväxlande (för nuförtiden använder ingen ett dolt lager NN ’ s), medan användningen av skikten skiljer sig mellan olika typer av DNN ’ s (CNN, RBM, RNN, LSTM, CW-RNN, …) och inte tanken på DNN själv.
Svar
Såvitt jag vet har det som kallas Deep Neural Network (DNN) idag ingenting fundamentalt eller filosofiskt annorlunda från den gamla standard Neural Network (NN). Även om man i teorin kan approximera ett godtyckligt NN med ett grunt NN med endast ett dolt lager, men detta gör det inte betyder att de två nätverken kommer att fungera på samma sätt när de tränas med samma algoritm och träningsdata. Det finns faktiskt ett växande intresse för att utbilda grunda nätverk som fungerar på samma sätt som djupa nätverk. Sättet detta görs är dock genom att träna ett djupt nätverk först och sedan träna det grunda nätverket för att imitera den slutliga utgången (dvs. utgången från det näst sista lagret) av det djupa nätverket. Se, det som gör djupa arkitekturer gynnsamma är att dagens träningstekniker (ryggutbredning) råkar fungera bättre när neuronerna läggs ut i en hierarkisk struktur.
En annan fråga som kan ställas är: varför Neural Nätverk (i synnerhet DNN) blev plötsligt så populära. Enligt min förståelse är de magiska ingredienserna som gjorde DNN så populära nyligen:
A. Förbättrade datauppsättningar och databehandlingsmöjligheter
1. Storskaliga datamängder med miljontals olika bilder blev tillgängliga
2. Snabb GPU-implementering gjordes tillgänglig för offentliga
B. Förbättrade träningsalgoritmer och nätverksarkitekturer
1. Rektifierade linjära enheter (ReLU) istället för sigmoid eller tanh
2. Djupa nätverksarkitekturer har utvecklats under åren
A-1) Fram till nyligen, åtminstone i Computer Vision kunde vi inte träna modeller på miljoner märkta bilder; helt enkelt för att märkta datamängder av den storleken inte fanns. Det visar sig att förutom antalet bilder är etikettuppsättningens granularitet också en mycket avgörande faktor för DNN: s framgång (se figur 8 i detta dokument , av Azizpour et al.).
A-2) Mycket tekniskt arbete har gjort det möjligt att utbilda DNN som fungerar bra i praktiken, framför allt tillkomsten av GPU-implementeringar. En av de första framgångsrika GPU-implementeringarna av DNN: er, körs på två parallella GPU: er; ändå tar det ungefär en vecka att träna ett DNN på 1,2 miljoner bilder i 1000 kategorier med avancerade grafikprocessorer (se detta dokument, av Krizhevsky et al.) .
B-1) Användning av enkla rättade linjära enheter (ReLU) istället för sigmoid och tanh-funktioner är förmodligen den största byggstenen för att möjliggöra utbildning av DNN. Observera att både sigmoid- och tanh-funktioner har nästan nollgradient nästan överallt, beroende på hur snabbt de passerar från låg aktiveringsnivå till hög; i extrema fall, när övergången är plötslig, får vi en stegfunktion som har lutning noll överallt utom vid en punkt där övergången sker.
B-2) Historien om hur neurala nätverksarkitekturer utvecklats genom åren påminner mig om hur evolution förändrar en organisms struktur i naturen. Parameterdelning ( t.ex. i fällningsskikt), regelbunden bortfall, initialisering, inlärningshastighetsschema, rumslig sammanslagning, delprovtagning i de djupare lagren och många andra knep som nu betraktas som standard i utbildning DNN utvecklades, utvecklades, slut skräddarsydda genom åren för att göra utbildningen av de djupa nätverken möjlig som den är idag.
Kommentarer
- +1. Det första svaret den här tråden som ger ett adekvat svar på OP ’ s frågor. Många bra poäng här. Min enda viktigaste kommentar skulle vara att förutom din A och B, th här är också C: Massiv ökning av storleken på tillgängliga träningsdatamängder. Detta verkar vara minst lika viktigt som A och B.
- Jag tycker inte ’ Jag tycker att relu är så viktigt: Alex krizhevsky-papper hävdade att det fick nn att lära sig till sex gånger snabbare. De flesta av de andra nätverksstrukturförändringarna du nämner hänför sig till fällningsnns, som bara kopierar standardbildsbehandlingsrörledningar (bra men ingen ny insikt)
- @amoeba: storleken på datasetet är under A. uppdaterade texten för att markera den.
- @ seanv507: Jag hade faktiskt konvolutionsnätverk (ConvNets) i åtanke när jag skrev svaret. Om det finns andra viktiga faktorer (som inte är relaterade till ConvNets) som jag har missat skulle jag uppskatta det om du nämner dem. Jag skulle gärna uppdatera mitt svar därefter.När det gäller ReLUs är träning av nns med tanh och sigmoid betydligt svårare än med ReLUs på grund av frågan om försvinnande lutningar: enheter blir lätt mättade och när det händer tar det lång tid att bli omättade igen (lutningar är väldigt små när enheten är mättad)
Svar
Skillnaden mellan ett ”djupt” NN och ett standard NN är rent kvalitativ: det finns ingen definition av vad det ”djupa” betyder. ”Djupt” kan betyda allt från de extremt sofistikerade arkitekturerna som används av Google, Facebook och co som har 50-80 eller ännu fler lager, till 2 dolda lager (totalt 4 lager). Jag skulle inte bli förvånad om du ens kunde hitta artiklar som påstod sig göra djupinlärning med ett enda dolt lager, för ”djupt” betyder inte mycket.
”Neuralt nätverk” är också ett ord som inte ”t har en mycket exakt betydelse. Det täcker ett extremt stort ensemble av modeller, från slumpmässiga boltzman-maskiner (som är oriktade grafer) till framåtgående arkitekturer med olika aktiveringsfunktioner. De flesta NN kommer att tränas med backprop, men det behöver inte vara fallet så även träningsalgoritmerna är inte särskilt homogena.
Sammantaget har djupinlärning, djupa NN och NN alla blivit fängslande ord som fångar en mängd olika tillvägagångssätt.
För bra introduktionsreferenser till ”vad som förändrats”: Deep Learning of Representations: Looking Forward , Bengio, 2013 är en bra recension + perspektiv för framtiden. Se även Behöver djupa nät verkligen vara djupa? Ba & Caruana, 2013 som illustrerar tha Att vara djup kan inte vara användbart för representation men för inlärning.
Kommentarer
- De referenser du ger är mycket hjälpsamma , men resten av svaret i nuvarande form (som läser som ” NN betyder inte någonting, DNN betyder inte något, NN och DNN kan göra många saker ”) inte mycket, skulle du överväga att revidera det?
Svar
För att utöka David Gasquez svar är en av de största skillnaderna mellan djupa neurala nätverk och traditionella neurala nätverk att vi inte bara använder backpropagation för djupa neurala nät.
Varför? Eftersom backpropagation tränar senare lager mer effektivt än det tränar tidigare lager – när du går tidigare och tidigare i nätverket blir felen mindre och mer diffusa. Så ett tioskiktsnätverk kommer i grunden att vara sju lager av slumpmässiga vikter följt av tre lager med monterade vikter och gör lika bra som ett treskiktsnätverk. Se här för mer.
Så det konceptuella genombrottet behandlar de separata problemen (de märkta skikten) som separata problem – om vi först försök att lösa problemet med att bygga ett generiskt bra första lager, och försök sedan att lösa problemet med att bygga ett generiskt bra andra lager, så småningom har vi ett djupt funktionsutrymme som vi kan mata in i vårt faktiska problem.
Svar
Jag skulle inte säga att det finns någon stor filosofisk skillnad mellan NN och DNN (faktiskt skulle jag säga DNN är bara en marknadsföring term för att skilja sig från ”misslyckades” NN). Vad som har förändrats är datamängden. I huvudsak är neurala nätverk för närvarande de bästa $ O (n) $ statistiska uppskattarna, som fungerar bra för högdimensionella stora datamängder (t.ex. imagenet).
Jag tycker att du bör gå tillbaka och se att detta har skapat en återuppkomst i grunt AI – t.ex. påse med ord för sentimentanalys och andra språkapplikationer och visuell påse med ord var en ledande strategi för bildigenkänning före DNN. Ingen säger att påse med ord är en riktig språkmodell, men det är en effektiv teknisk lösning. Så jag skulle säga att DNN är en bättre ”visuell påse med ord” – se t.ex. Szegedy et al. 2013 Spännande egenskaper hos neurala nätverk och Nguyen et al. Djupa neurala nätverk luras enkelt: Förutsägelser med högt förtroende för oigenkännliga bilder där det är tydligt att det inte finns några högre ordningsstrukturer etc. som lärs in (eller vad som helst som påstås DNN).
Kommentarer
- @amoeba detta andra papper är nästan ett följeslag till det första (igen med massor av bilder!)
Svar
För att svara på den senare frågan, titta på det här papperet från Telgarsky som säger att för ett visst klassificeringsproblem ”alla grunda nätverk med färre än exponentiellt (i k) uppvisar många noder fel åtminstone 1/6, medan ett djupt nätverk med 2 noder i vart och ett av 2k lager uppnår nollfel.”
Klassificeringsproblemet i fråga är det n-alternerande punktproblemet där vi betraktar intervallet $ [0,1-2 ^ {- k}] $ så att ingången $ x_i $ är $ 2 ^ k $ enhetligt fördelade poäng i det intervallet och motsvarande $ y_i $ ges av $ y_i = 1 $ om $ i $ är udda och $ y_i = 0 $ om $ i $ är jämnt. Vi frågar sedan hur bra kan grunda nätverk utan exponentiella bredder fånga detta förhållande jämfört med djupa nätverk med bara två noder i varje lager? I grund och botten kan vi approximera data bättre (exakt jämnt) med en linjär ( i $ k $ ) antal lager med bara två noder i varje lager, medan vi skulle behöva exponentiellt många (i $ k $ ) noder för att få samma resultat i ett grunt nätverk.
Beviset på offerten innebär att man märker att sammansättningen av icke-linjära aktiveringar som appliceras på affina transformationer (dvs. med ett större antal lager) lyckas fånga mer variation i data än att summera samma funktioner (som när vi lägger till noder i lager).
Svar
Deep Learning är en uppsättning algoritmer i maskininlärning som försök att modellera högnivåabstraktioner i data med hjälp av arkitekturer som består av flera icke-linjära omvandlingar .
Källa: Arno Candel
Lämna ett svar