Wat is het verschil tussen een neuraal netwerk en een diep neuraal netwerk, en waarom werken de diepe beter?
Geplaatst op december 22, 2020 door adminIk heb de vraag niet precies in deze termen gezien, en daarom stel ik een nieuwe vraag.
Wat ik graag wil weten, is niet de definitie van een neuraal netwerk, maar het werkelijke verschil begrijpen met een diep neuraal netwerk.
Voor meer context: ik weet wat een neuraal netwerk is en hoe backpropagation werkt. Ik weet dat een DNN meerdere verborgen lagen moet hebben. 10 jaar geleden leerde ik echter in de klas dat het hebben van meerdere lagen of één laag (niet het tellen van de invoer- en uitvoerlagen) was equivalent in termen van de functies die een neuraal netwerk kan vertegenwoordigen (zie Cybenko “s Universele benaderingsstelling ), en dat met meer lagen maakten het moeilijker om te analyseren zonder prestatieverbetering. Dat is duidelijk niet meer het geval.
Ik veronderstel, misschien ten onrechte, dat de verschillen meer in termen van trainingsalgoritme en eigenschappen zijn dan in structuur, en daarom Ik zou het erg waarderen als het antwoord de redenen zou kunnen onderstrepen die de overstap naar DNN mogelijk maakten (bijv. Wiskundig bewijs of willekeurig spelen met netwerken?) en wenselijk (bijv. snelheid van convergentie?)
Reacties
- Ter info: Hoe waar is deze dia over diep leren?
- Als de functie die u wilt benaderen een compositorische functie is (gebruikelijk bij beeldverwerking en veel natuurlijke domeinen vanwege de wet van de fysica). Het kan worden bewezen dat diepe netwerken gebruik kunnen maken van deze compositie en hetzelfde niveau van benaderingsfouten kunnen bereiken met een exponentieel minder aantal neuronen (vergeleken met een enkelvoudig verborgen-laag netwerk). Ref: Poggio, Tomaso, et al. ” Waarom en wanneer kunnen diepe, maar niet oppervlakkige-netwerken de vloek van dimensionaliteit vermijden: een recensie. ” International Journal of Automation and Computing (2017)
- Misschien wil je dit artikel bekijken
- Zie 6.4 van arxiv.org/pdf/2004.06093.pdf
Antwoord
Laten we beginnen met een probleem: een diep neuraal netwerk is gewoon een feedforward-netwerk met veel verborgen lagen.
Dit is min of meer alles wat er te zeggen is over de definitie. Neurale netwerken kunnen recurrent of feedforward zijn; feedforward-netwerken hebben geen loops in hun grafiek en kunnen in lagen worden georganiseerd. Als er veel lagen zijn , dan zeggen we dat het netwerk diep is.
Hoeveel veel lagen moet een netwerk hebben om als diep te kwalificeren? definitief antwoord hierop (het is “sa beetje zoals vragen hoeveel korrels een hoop vormen ), maar meestal telt het hebben van twee of meer verborgen lagen als diep. Daarentegen wordt een netwerk met slechts een enkele verborgen laag gewoonlijk “ondiep” genoemd. Ik vermoed dat hier enige inflatie zal plaatsvinden, en over tien jaar zouden mensen kunnen denken dat alles met minder dan bijvoorbeeld tien lagen oppervlakkig is en alleen geschikt voor kleuterschooloefeningen. Informeel suggereert “deep” dat het netwerk moeilijk te hanteren is.
Hier is een illustratie, van hieruit aangepast :
Maar de echte vraag die u stelt is natuurlijk: waarom zou het nuttig zijn om veel lagen te hebben?
Ik denk dat de enigszins verbazingwekkend antwoord is dat niemand het echt weet. Er zijn enkele veelvoorkomende verklaringen die ik hieronder kort zal bespreken, maar van geen ervan is overtuigend aangetoond dat ze waar zijn, en men kan er niet eens zeker van zijn dat het hebben van veel lagen echt voordelig is.
Ik zeg dat dit verbazingwekkend is, omdat deep learning enorm populair is, elk jaar alle records breekt (van beeldherkenning, Go spelen tot automatische vertaling, enz.), wennen aan de industrie, enz. enz. . En we weten nog steeds niet helemaal waarom het zo goed werkt.
Ik baseer mijn discussie op de Deep Leren -boek van Goodfellow, Bengio en Courville dat in 2017 uitkwam en algemeen wordt beschouwd als het boek over diep leren. (Het is gratis online beschikbaar.) De relevante sectie is 6.4.1 Eigenschappen en diepte van universele benadering .
U schreef dat
10 jaar geleden leerde ik in de klas dat het hebben van meerdere lagen of één laag (de invoer- en uitvoerlagen niet meegerekend) equivalent was in termen van de functies die een neuraal netwerk kan vertegenwoordigen […]
U moet verwijzen naar de zogenaamde stelling van universele benadering , bewezen door Cybenko in 1989 en gegeneraliseerd door verschillende mensen in de jaren negentig. Het zegt in feite dat een ondiep neuraal netwerk (met 1 verborgen laag) elke functie kan benaderen, d.w.z. in principe alles kan leren. Dit geldt voor verschillende niet-lineaire activeringsfuncties, inclusief gerectificeerde lineaire eenheden die de meeste neurale netwerken tegenwoordig gebruiken (het leerboek verwijst naar Leshno et al. 1993 voor dit resultaat).
Zo ja, waarom gebruikt iedereen dan diepe netten?
Nou, een naïef antwoord is dat omdat ze beter werken. Hier is een figuur uit het Deep Learning -boek dat laat zien dat het helpt om meer lagen in een bepaalde taak te hebben, maar hetzelfde fenomeen wordt vaak waargenomen bij verschillende taken en domeinen:
We weten dat een ondiep netwerk zou kunnen presteren net zo goed als de diepere. Maar dat doet het niet; en dat doen ze meestal niet. De vraag is — waarom? Mogelijke antwoorden:
- Misschien heeft een ondiep netwerk meer neuronen nodig dan het diepe?
- Misschien is een ondiep netwerk moeilijker te trainen met onze huidige algoritmen (bijv. meer vervelende lokale minima, of de convergentiesnelheid is langzamer, of wat dan ook)?
- Misschien past een ondiepe architectuur niet bij het soort problemen dat we gewoonlijk proberen op te lossen (bijv. objectherkenning is een typische diepe “, hiërarchisch proces)?
- Iets anders?
Het Deep Learning -boek pleit voor bulletpoints # 1 en # 3. Ten eerste stelt het dat het aantal eenheden in een ondiep netwerk exponentieel toeneemt met de complexiteit van de taak. Dus om bruikbaar te zijn, moet een ondiep netwerk misschien erg groot zijn; mogelijk veel groter dan een diep netwerk. Dit is gebaseerd op een aantal artikelen die bewijzen dat ondiepe netwerken in sommige gevallen exponentieel veel neuronen nodig zouden hebben; maar of b.v. MNIST classificatie of Go spelen zijn dergelijke gevallen is niet echt duidelijk. Ten tweede zegt het boek dit:
Het kiezen van een diep model codeert voor een zeer algemene overtuiging dat de functie die we willen leren de samenstelling van verschillende eenvoudigere functies moet omvatten. Dit kan worden geïnterpreteerd vanuit het oogpunt van representatieleren als te zeggen dat we geloven dat het leerprobleem bestaat uit het ontdekken van een reeks onderliggende variatiefactoren die op hun beurt kunnen worden beschreven in termen van andere, eenvoudigere onderliggende variatiefactoren.
Ik denk dat de huidige “consensus” is dat het “een combinatie is van opsommingstekens nr. 1 en nr. 3: voor taken uit de echte wereld is diepe architectuur vaak gunstig en oppervlakkige architectuur zou inefficiënt zijn en veel meer neuronen nodig hebben voor dezelfde prestatie.
Maar het is verre van bewezen. Overweeg b.v. Zagoruyko en Komodakis, 2016, Wide Residual Networks . Resterende netwerken met meer dan 150 lagen verschenen in 2015 en wonnen verschillende beeldherkenningswedstrijden. Dit was een groot succes en leek een overtuigend argument ten gunste van diepgang; hier is een cijfer uit een presentatie door de eerste auteur op het resterende netwerkpapier (merk op dat de tijd hier verwarrend naar links gaat):
Maar uit het hierboven gekoppelde artikel blijkt dat een “brede “restnetwerk met” slechts “16 lagen kan beter presteren dan” diepe “met 150+ lagen. Als dit waar is, valt het hele punt van de bovenstaande figuur uiteen.
Of overweeg Ba en Caruana, 2014, Do Deep Nets Really Need to be Deep? :
In dit artikel leveren we empirisch bewijs dat ondiepe netten dezelfde functie kunnen aanleren als diepe netten, en in sommige gevallen gevallen met hetzelfde aantal parameters als de diepe netten. We doen dit door eerst een state-of-the-art diep model te trainen en vervolgens een oppervlakkig model te trainen om het diepe model na te bootsen. Het nabootsingsmodel wordt getraind met behulp van het modelcompressieschema dat in de volgende sectie wordt beschreven. Opmerkelijk is dat we met modelcompressie ondiepe netten kunnen trainen om net zo nauwkeurig te zijn als sommige diepe modellen, ook al zijn we niet in staat om deze ondiepe netten zo nauwkeurig te trainen als de diepe netten wanneer de ondiepe netten rechtstreeks op het origineel worden getraind. gelabelde trainingsgegevens. Als een ondiep net met hetzelfde aantal parameters als een diep net kan leren om een diep net met hoge betrouwbaarheid na te bootsen, dan is het duidelijk dat de functie die door dat diepe net wordt geleerd niet echt diep hoeft te zijn.
Indien waar, zou dit betekenen dat de juiste uitleg eerder mijn bullet # 2 is, en niet # 1 of # 3.
Zoals ik al zei – – niemand weet het echt zeker nog.
Afsluitende opmerkingen
De hoeveelheid vooruitgang die is geboekt in de diep leren in de afgelopen ~ 10 jaar is echt verbazingwekkend, maar de meeste van deze vooruitgang is bereikt met vallen en opstaan, en het ontbreekt ons nog steeds aan een zeer basiskennis over wat precies ervoor zorgt dat diepe netten zo goed werken. Zelfs de lijst met dingen die mensen als cruciaal beschouwen voor het opzetten van een effectief diep netwerk, lijkt om de paar jaar te veranderen.
De renaissance van diep leren begon in 2006 toen Geoffrey Hinton (die aan neurale netwerken voor meer dan 20 jaar zonder veel interesse van wie dan ook) publiceerde een aantal baanbrekende papers die een effectieve manier boden om diepe netwerken te trainen ( Science paper , Neuraal berekeningsdocument ). De truc was om pre-training zonder toezicht te gebruiken voordat je aan de afdaling begon. Deze papers zorgden voor een revolutie in het vakgebied, en een paar jaar lang dachten mensen dat pre-training zonder toezicht de sleutel was.
Toen, in 2010, toonde Martens aan dat diepe neurale netwerken kunnen worden getraind met methoden van de tweede orde (zogenaamde Hessian-vrije methoden) en beter kunnen presteren dan netwerken die zijn getraind met pre-training: Diep leren via optimalisatie zonder Hessen . Toen in 2013 Sutskever et al. toonde aan dat stochastische gradiëntafdaling met enkele zeer slimme trucs Hessische-vrije methoden kan overtreffen: Over het belang van initialisatie en momentum bij diep leren . Rond 2010 realiseerden mensen zich ook dat het gebruik van gelijkgerichte lineaire eenheden in plaats van sigmoïde eenheden een enorm verschil maakt voor het afdalen van hellingen. Drop-out verscheen in 2014. Resterende netwerken verschenen in 2015. Mensen blijven komen met steeds effectievere manieren om diepe netwerken te trainen en wat tien jaar geleden een belangrijk inzicht leek, wordt vaak overwogen hinderlijk vandaag. Dat alles wordt grotendeels gedreven door vallen en opstaan en er is weinig begrip van wat ervoor zorgt dat sommige dingen zo goed werken en sommige andere dingen niet. Het trainen van diepe netwerken is als een zak met trucs. Succesvolle trucs worden meestal post factum gerationaliseerd.
We weten niet eens waarom diepe netwerken een prestatieplateau bereiken; slechts 10 jaar gaven mensen de schuld aan lokale minima, maar de huidige gedachte is dat dit niet het punt is (wanneer de prestatieplateaus zijn, blijven de hellingen vaak groot.) Dit is zon fundamentele vraag over diepe netwerken, en we weten dit niet eens.
Update: Dit is min of meer het onderwerp van Ali Rahimis NIPS 2017-lezing over machine learning als alchemie: https://www.youtube.com/watch?v=Qi1Yry33TQE .
[Dit antwoord is volledig herschreven in april 2017, dus sommige van de onderstaande opmerkingen zijn niet meer van toepassing.]
Opmerkingen
- Leuke reactie! 1) Zoals ook vermeld door @Nicolas, blijkt dat er een stelling is ( en.wikipedia.org/wiki/Universal_approximation_theorem ) die beweert dat een feed-forward neurale n etwork met een enkele verborgen laag en een eindig aantal neuronen kan elke continue functie (inclusief een DNN) op de eenheid hyperkubus benaderen . Dit resultaat zou onafhankelijk zijn van de keuze van de activeringsfunctie. 2) Ik weet niet zeker of uw laatste opmerking (dat wil zeggen dat Hinton bij Google is gekomen) relevant is voor het recente succes van DNNs; Hinton kwam bij Google lang nadat DNNs een epidemie waren geworden!
- Misschien ‘ gebruiken we de terminologie anders. Perceptrons ‘ hebben geen verborgen laag – hun invoer is data, hun uitvoer is de classificatie. Een meerlagig netwerk bestaat uit een stel perceptrons die zo met elkaar zijn verbonden dat de uitvoer van laag $ n-1 $ de invoer vormt voor laag $ n $. Een netwerk met een enkele verborgen laag heeft dus drie lagen (invoer, verborgen, uitvoer). Deze verborgen laag is de sleutel voor universele benadering: perceptrons, die het missen, kunnen ‘ dingen als XOR niet berekenen, maar de meerlagige netwerken wel.
- De lineariteit ding lijkt een combinatie van twee problemen. Perceptrons kunnen alleen lineaire beslissingsgrenzen berekenen – het kan alleen rechte lijnen tekenen om twee klassen te verdelen. Meerlagige netwerken kunnen ” ” meer gecompliceerde grenzen trekken. Maar noch perceptrons, noch meerlagige netwerken gebruiken lineaire activeringsfuncties, behalve in de uitvoerlaag van een meerlagig netwerk. De perceptron-activeringsfunctie is een heaviside (1 als x > 0, anders 0); meerlagige netwerken gebruiken vaak sigmoïden, maar de beperkingen voor universele ong. zijn vrij mild: niet constant, begrensd en monotoon toenemend.
- @amoeba geweldig antwoord, de foto aan het begin zette me af om de rest te lezen, maar het was het beste. De perceptron is de tegenhanger van de lineaire regressie voor classificatie, en daarom is het ‘ wanneer mensen de gesloten-formulieroplossing (pseudo-inverse) gebruiken om het probleem op te lossen in plaats van online (sgd) methoden s genaamd Logistische Regressie, vanwege de logistische (sigmoïde functie) = perceptron. Een perceptron / logistische regressie kan alleen ‘ tekenen ‘ lineaire beslissingsgrenzen en dat ‘ s waarom het ‘ wordt lineair genoemd.
- De meerlagige perceptron (wat je in je eerste foto aan de linkerkant hebt getekend) kan echter meerdere van dergelijke lineaire beslissingen combineren grenzen en kan zo de ruimte partitioneren om het (niet-lineaire) XOR-probleem op te lossen zoals @Matt vermeldde. Veel gecombineerde lineaire beslissingsgrenzen kunnen dus een cirkel vormen als je bijvoorbeeld met je ogen tuurt. Het hangt ervan af hoe je erover denkt – de beslissing is nog steeds lineair in een hogere ruimte, als je bekend bent met kernels, is het ‘ ongeveer hetzelfde.
Antwoord
Goed antwoord tot nu toe, hoewel er een paar dingen zijn die niemand hier in de buurt noemde, hier is mijn 0,02 $
Ik zal alleen antwoorden in de vorm van een verhaal, het zou de dingen leuker en duidelijker moeten maken. Geen tldr hier. Tijdens het proces zou je moeten kunnen begrijpen wat het verschil is.
Er zijn meerdere redenen waarom DNNs ontstonden toen ze dat deden (sterren moesten uitlijnen, zoals alle soortgelijke dingen, het is gewoon een kwestie van goed plaats, juiste tijd enz.).
Een reden is de beschikbaarheid van gegevens, veel gegevens (gelabelde gegevens). Als u iets wilt generaliseren en leren als generieke priors of universele priors “(ook bekend als de basisbouwstenen die hergebruikt kunnen worden tussen taken / applicaties) dan heb je veel data nodig. En wilde data, mag ik eraan toevoegen, geen steriele datasets die zorgvuldig in het lab zijn vastgelegd met gecontroleerde verlichting en zo. Mechanisch Turk maakte dat (labelen) mogelijk.
Ten tweede maakte de mogelijkheid om grotere netwerken sneller te trainen met GPUs het experimenteren sneller. ReLU-eenheden maakten dingen ook rekenkundig sneller en zorgden voor regularisatie, omdat je meer eenheden moest gebruiken in één laag om dezelfde informatie te kunnen comprimeren, aangezien lagen nu meer rondhouten waren e, dus het ging ook lekker met uitval. Ze hebben ook geholpen met een belangrijk probleem dat optreedt wanneer u meerdere lagen stapelt. Daarover later meer. Diverse meerdere trucs die de prestaties verbeterden. Zoals het gebruik van mini-batches (wat in feite schadelijk is voor de uiteindelijke fout) of convoluties (die eigenlijk niet zoveel variantie vastleggen als lokale receptieve velden) maar rekenkundig sneller zijn.
In de tussentijd waren mensen aan het debatteren als ze ze dunner of molliger, kleiner of groter, met of zonder sproeten, enz. leuk vonden. Optimalisatie was als bruist het of knalt het, dus het onderzoek evolueerde naar meer complexe trainingsmethoden zoals geconjugeerde gradiënt en newton-methode, eindelijk realiseerden zich allemaal dat er geen gratis lunch is. Netwerken waren aan het boeren.
Wat de zaken vertraagde, was het verdwijnende verloop -probleem. Mensen zeiden: whoa, dat is ver weg, man! In een notendop betekent dit dat het moeilijk was om de fout aan te passen op lagen die dichter bij de invoer liggen. Als je meer lagen op de taart toevoegt, wordt het te wiebelig. t propageren een zinvolle fout terug naar de eerste lagen. Hoe meer lagen, hoe erger het werd. Jammer.
Sommige mensen kwamen erachter dat het gebruik van de kruisentropie als een verliesfunctie (nou ja, nogmaals, classificatie en beeldherkenning) een soort regularisatie biedt en helpt tegen het verzadigen van het netwerk en op zijn beurt het verloop kon dat niet goed verbergen.
Wat ook dingen mogelijk maakte, was de pre-training per laag met behulp van niet-gecontroleerde methoden. In feite neem je een aantal auto-encoders en leert je steeds minder abstracte representaties je verhoogt de compressieverhouding. De gewichten van deze netwerken werden gebruikt om de gesuperviseerde versie te initialiseren. Dit loste het verdwijnende gradiëntprobleem op een andere manier op: je begint al met trainen onder supervisie vanuit een veel betere startpositie. Dus alle andere netwerken stonden op en begonnen in opstand te komen. Maar de netwerken hadden hoe dan ook toezicht nodig, anders was het onmogelijk om de big data stil te houden.
Nu, voor het laatste deel leidt dat uiteindelijk tot je antwoord dat te complex is om in een notendop te vatten: waarom meer lagen en niet slechts één. Omdat we het kunnen! en omdat context en invariante kenmerkbeschrijvingen. en pools.
Hier is een voorbeeld: je hebt een dataset met afbeeldingen, hoe ga je een plan NN trainen met die gegevens? Nou, naïef, neem laten we zeggen dat elke rij en je voegt het samen tot één lange vector en dat is jouw input. Wat leer je?Welnu, sommige vage onzinfuncties die er misschien niet uitzien, vanwege de vele soorten variaties die de objecten in de afbeelding bevatten en je kunt geen onderscheid maken tussen relevante en niet-relevante dingen. En op een gegeven moment moet het netwerk vergeten om nieuwe dingen opnieuw te kunnen leren. Dus er is het capaciteitsprobleem. Dit is meer niet-lineaire dynamiek, maar de intuïtie is dat je het aantal neuronen moet vergroten om meer informatie in je netwerk te kunnen opnemen.
Dus het punt is dat als je de afbeelding gewoon als één stuk invoert, het toevoegen van extra lagen niet al te veel voor je doet, omdat je geen abstracties kunt leren, wat erg belangrijk is. Dingen holistisch doen werkt dus niet zo goed, tenzij je eenvoudigere dingen met het netwerk doet, zoals focussen op een specifiek type object, dus je beperkt jezelf tot één klasse en je kiest een aantal globale eigenschappen als classificatiedoel.
Dus wat is er te doen? Kijk naar de rand van je scherm en probeer deze tekst te lezen. Probleem? Hoe stom het ook klinkt, je moet kijken naar wat je leest. Anders is het te wazig / is er niet genoeg resolutie / granulariteit. Laten we het focusgebied het receptieve veld noemen. Netwerken moeten ook kunnen focussen. In plaats van de hele afbeelding als invoer te gebruiken, verplaats je een schuifvenster langs de afbeelding en vervolgens gebruik je dat als invoer voor het netwerk (iets minder stochastisch dan wat mensen doen). Nu heb je ook de kans om correlaties tussen pixels en dus objecten vast te leggen en kun je ook onderscheid maken tussen een slaperige kat die op een bank zit en een ondersteboven kat bungeejumpen. Netjes, het vertrouwen in de mensheid hersteld. Het netwerk kan op meerdere niveaus lokale abstracties in een afbeelding leren. Het netwerk leert filters, aanvankelijk eenvoudige filters, en bouwt deze vervolgens verder op om complexere filters te leren.
Dus, kort samengevat: receptieve velden / convoluties, initialisatie zonder toezicht, gecorrigeerde lineaire eenheden, uitval of andere regularisatie methoden. Als je dit heel serieus neemt, raad ik je aan om Schmidhubers Deep Learning in Neural Networks: An Overview te bekijken. Hier is de url voor de preprint http://arxiv.org/abs/1404.7828
En onthoud: veel leren, diepe gegevens. Word.
Reacties
- Hallo Florin, bedankt voor het leuke antwoord! Ik hou van de schrijfstijl. Als je het hebt over schuiframen, verwijs je naar hoe convolutionele lagen van convolutionele NN verschillende delen van een afbeelding en project observeren hun activaties op een ruimte met een lagere dimensie?
- vrijwel ja, convoluties zijn niet nodig, maar ze ‘ zijn rekenkundig sneller, aangezien de gewichten beperkt zijn. lees dit artikel waar ze ‘ t geen convoluties gebruiken en lokale receptieve velden gebruiken. de belangrijkste trefwoorden zijn lokaal / hiërarchisch: arxiv.org /pdf/1112.6209.pdf
- ik denk ook het dichtst in de buurt systematisch antwoord is sobi ‘ s. hij ‘ heeft mijn stem ontvangen. ik heb zojuist hier en daar wat meer dingen toegevoegd met een beetje zout en peper.
Antwoord
In lekentermen, het belangrijkste verschil met de klassieke neurale netwerken is dat ze veel meer verborgen lagen hebben.
Het idee is om labels aan de lagen toe te voegen om verschillende abstractielagen te maken:
Bijvoorbeeld een diep neuraal netwerk voor objectherkenning :
- Laag 1: enkele pixels
- Laag 2: randen
- Laag 3: vormen (cirkels, vierkanten)
- Laag n: geheel object
U kunt vinden een goede uitleg bij deze vraag in Quora .
En als je geïnteresseerd bent in dit onderwerp zou ik het aanraden om hier eens naar te kijken boek .
Reacties
- Bedankt David, maar ik doe ‘ Ik kan niet echt zien hoe je alleen labels toevoegt om het anders te maken. Ik herinner me ook dat het een moeilijk probleem was om te begrijpen en te ontleden hoe een functie werd gecodeerd door het neurale netwerk. Er moet iets anders zijn dan alleen meer lagen hebben. Wat betreft het voorbeeld dat je gaf, ik geloof dat je individuele (oude school) neurale netwerken kunt trainen om elk van de taken uit te voeren.
- De kracht komt wanneer je het als een pijplijn gebruikt, dus de inputs en outputs uit de lagenstapels op elke laag.
- Ik heb je eerste link gelezen, wat een goede bron is, en andere gerelateerde vragen over quora en se, maar het voorbeeld dat je gaf lijkt niet te kloppen met wat ik lezen. Ik ‘ zal proberen mijn eigen vraag te beantwoorden door deze lezingen samen te vatten.
- Ondanks dat de aangehaalde bron interessant is, geeft het antwoord op dit moment geen antwoord op de vraag.
- Kunt u naar een voorbeeld verwijzen waar de lagen zijn gelabeld (anders dan op een puur beschrijvende manier)?Het is zeker waar dat verborgen lagen achtereenvolgens complexere objecten in elke verborgen laag lijken, maar ” het toevoegen van labels ” lijkt te impliceren dat ze ‘ wordt specifiek getraind om dat te doen.
Antwoord
NN:
- één verborgen laag is voldoende, maar kan toch meerdere lagen hebben, van links naar rechts gerangschikt (model: feed forward NN)
- alleen getraind onder supervisie (backpropagation )
- wanneer meerdere lagen worden gebruikt, train dan alle lagen tegelijkertijd (zelfde algoritme: backpropagation), meer lagen maken het moeilijk om te gebruiken omdat fouten te klein worden
- moeilijk te gebruiken begrijp wat er op elke laag wordt geleerd
DNN:
- meerdere lagen zijn vereist, niet-gerichte randen (model: beperkte boltzman-machine)
- eerst getraind op een ongecontroleerde manier, waarbij de netwerken relevante kenmerken leren door te leren hun input te reproduceren , vervolgens getraind op een gecontroleerde manier die de functies nauwkeurig afstemt om te classificeren
- train de lagen één voor één van invoer- naar uitvoerlaag (algoritme: contrastieve divergentie)
- elke laag duidelijk bevat kenmerken van toenemende abstractie
De verhuizing naar DNN is het gevolg van drie onafhankelijke doorbraken die plaatsvonden in 2006.
Met betrekking tot stellingen over NN, is de vraag waarnaar de vraag verwijst :
- universele benaderingsstelling of Cybenko-theorema: een feed-forward neuraal netwerk met een enkele verborgen laag kan elke continue functie benaderen. In de praktijk kan het echter veel meer neuronen vereisen als een enkele verborgen laag wordt gebruikt.
Opmerkingen
- -1? Werkelijk? Ik las dit alles in de literatuur en maakte een punt voor punt vergelijking van beide benaderingen! Geef in ieder geval aan wat niet juist is …
- Ik heb niet naar beneden gestemd (misschien vond een downstemer het niet leuk dat je je eigen vraag beantwoordt? Maar dat is hier natuurlijk prima), maar hier is er een ding dat niet helemaal correct is. Wat u opgeeft als eigenschappen van DNN: dat de randen niet gericht zijn, dat het ‘ eerst op een onbewaakte manier is getraind, dat de lagen één voor één worden getraind – dat alles verwijst alleen naar aan netwerken van diepe geloofsovertuigingen die door Hinton in 2006 zijn voorgesteld. Dit geldt niet noodzakelijkerwijs voor diepe neurale netwerken in het algemeen en in feite zijn er nu veel manieren om een diep netwerk te trainen zonder dat alles. Zie mijn antwoord.
Answer
Ik was in het begin ook een beetje in de war door het verschil tussen neurale netwerken (NN) en diepe neurale netwerken (DNN), maar de “diepte” verwijst helaas alleen naar het aantal parameters & lagen. Je kunt het beschouwen als een soort re -branding onder de zogenaamde “Canadian Mafia”.
Enkele jaren geleden had ik ook Neural Networks als onderdeel van een klas en we deden aan cijferherkenning, golfbenadering en soortgelijke toepassingen door NN te gebruiken, dat had meerdere verborgen lagen en outputs en al die jazz die DNNs hebben. Wat we toen echter nog niet hadden, was rekenkracht.
De reden waarom de overstap naar DNN mogelijk en wenselijk was, zijn de vorderingen in de hardwareontwikkeling. Simpel gezegd, nu kunnen we meer, sneller en meer berekenen. parallelized (DNN op GPUs), terwijl voorheen tijd de bottleneck was voor NNs.
Zoals vermeld op de Wikipedia-pagina voor Deep Leren , verwijst het “diepe” gedeelte meestal naar het hebben van kenmerken die op een niet-lineaire manier op meerdere lagen samenwerken, waardoor het extraheren en transformeren van kenmerken wordt uitgevoerd. Dit werd ook gedaan in standaard NNs, echter op kleinere schaal.
Op dezelfde pagina, hier heb je de definitie “Een diep neuraal netwerk (DNN) is een kunstmatig neuraal netwerk (ANN) met meerdere verborgen lagen eenheden tussen de invoer- en uitvoerlagen.”
Opmerkingen
- Hallo Mttk, bedankt voor je antwoord, het wierp meer licht op deze vraag. Wat betreft je laatste punt, ja, structureel is het heel gemakkelijk om het verschil uit te leggen (1 versus meerdere lagen), maar het verschil in hoe deze meerdere lagen worden gebruikt, lijkt het belangrijkste te zijn en het is veel minder duidelijk. Daarom concentreerde ik de vraag niet op de structuur.
- Eerlijk gezegd don ‘ ben het niet eens met de laatste definitie waarnaar ik verwees – aangezien ANN / NN met één verborgen laag niet echt efficiënt zijn, en je meerdere nodig had voor elke vorm van complexere voorspelling (I ‘ m dit te zeggen omdat ik denk dat DNN een nutteloos modewoord was toegevoegd op een al goede termijn, NN). Ik denk dat je NN en DNN door elkaar kunt gebruiken (omdat tegenwoordig niemand een verborgen laag NN ‘ s gebruikt), terwijl het gebruik van de lagen verschilt tussen typen DNN ‘ s (CNN, RBM, RNN, LSTM, CW-RNN, …) en niet het idee van DNN zelf.
Antwoord
Voor zover ik weet, heeft wat tegenwoordig Deep Neural Network (DNN) wordt genoemd fundamenteel niets of filosofisch verschillend van het oude standaard Neural Network (NN). Hoewel men in theorie een willekeurige NN kan benaderen door een ondiepe NN te gebruiken met slechts één verborgen laag, doet dit dit echter niet betekent dat de twee netwerken op dezelfde manier presteren als ze worden getraind met hetzelfde algoritme en dezelfde trainingsgegevens. In feite is er een groeiende belangstelling voor het trainen van ondiepe netwerken die op dezelfde manier presteren als diepe netwerken. De manier waarop dit echter wordt gedaan, is door eerst een diep netwerk te trainen en vervolgens het ondiepe netwerk te trainen om de uiteindelijke output (d.w.z. de output van de voorlaatste laag) van het diepe netwerk imiteren . Kijk, wat diepe architecturen gunstig maakt, is dat de huidige trainingstechnieken (terugpropagatie) beter werken wanneer de neuronen in een hiërarchische structuur zijn ingedeeld.
Een andere vraag die kan worden gesteld is: waarom neuraal Netwerken (met name DNNs) werden plotseling zo populair. Naar mijn mening zijn de magische ingrediënten die DNNs recentelijk zo populair maakten de volgende:
A. Verbeterde datasets en gegevensverwerkingsmogelijkheden
1. Grootschalige datasets met miljoenen verschillende afbeeldingen zijn beschikbaar gekomen
2. Snelle GPU-implementatie is beschikbaar gemaakt voor publiek
B. Verbeterde trainingsalgoritmen en netwerkarchitecturen
1. Rectified Linear Units (ReLU) in plaats van sigmoid of tanh
2. Diepgaande netwerkarchitecturen zijn in de loop der jaren geëvolueerd
A-1) Tot voor kort, tenminste in Computer Vision konden we modellen niet trainen op miljoenen gelabelde afbeeldingen; simpelweg omdat gelabelde datasets van die omvang niet bestonden. Het blijkt dat, naast het aantal afbeeldingen, de granulariteit van de labelset ook een zeer cruciale factor is in het succes van DNNs (zie figuur 8 in dit artikel , door Azizpour et al.).
A-2) Er is veel technische inspanning om het mogelijk te maken DNNs te trainen die in de praktijk goed werken, met name de komst van GPU-implementaties. Een van de eerste succesvolle GPU-implementaties van DNNs, draait op twee parallelle GPUs; toch duurt het ongeveer een week om een DNN te trainen op 1,2 miljoen afbeeldingen van 1000 categorieën met behulp van geavanceerde GPUs (zie dit artikel door Krizhevsky et al.) .
B-1) Het gebruik van eenvoudige Rectified Linear Units (ReLU) in plaats van sigmoid en tanh-functies is waarschijnlijk de grootste bouwsteen om training van DNNs mogelijk te maken. Merk op dat zowel sigmoid- als tanh-functies bijna een gradiënt van nul bijna overal hebben, afhankelijk van hoe snel ze van het lage activeringsniveau naar het hoge gaan; in het extreme geval, wanneer de overgang plotseling is, krijgen we een stapfunctie met een helling nul overal behalve op een punt waar de overgang plaatsvindt.
B-2) Het verhaal van hoe neurale netwerkarchitecturen zich in de loop der jaren hebben ontwikkeld, herinnert me eraan hoe evolutie de structuur van een organisme in de natuur verandert. Parameter delen ( bijv. in convolutionele lagen), uitval regularisatie, initialisatie, leertempo-schema, ruimtelijke pooling, sub-sampling in de diepere lagen, en vele andere trucs die nu als standaard worden beschouwd in training DNNs werden ontwikkeld, geëvolueerd, einde jarenlang op maat gemaakt om de training van de diepe netwerken mogelijk te maken zoals het nu is.
Reacties
- +1. Het eerste antwoord in deze thread die een adequaat antwoord geeft op de vragen van het OP ‘. Veel goede punten hier. Mijn enige belangrijke opmerking zou zijn dat naast je A en B, th Er is ook C: enorme toename in de omvang van de beschikbare trainingsdatasets. Dit lijkt minstens zo belangrijk te zijn als A en B.
- Ik denk niet ‘ niet dat relu zo belangrijk is: Alex krizhevsky paper beweerde dat het goed was om te leren tot 6 keer sneller. De meeste van de andere netwerkstructuurwijzigingen die u noemt, hebben betrekking op convolutionele nns, die alleen standaard beeldverwerkingspijplijnen kopiëren (goede zaak, maar geen nieuwe inzichten)
- @amoeba: de grootte van de dataset is onder A. I de tekst bijgewerkt om deze te markeren.
- @ seanv507: inderdaad, ik had convolutionele netwerken (ConvNets) in gedachten toen ik het antwoord schreef. Als er andere belangrijke factoren zijn (die geen verband houden met ConvNets) die ik heb gemist, zou ik het op prijs stellen als u ze noemt. Ik zou mijn antwoord graag dienovereenkomstig willen bijwerken.Met betrekking tot ReLUs is het trainen van nns met tanh en sigmoid aanzienlijk moeilijker dan met ReLUs vanwege het probleem van verdwijnende gradiënten: eenheden raken gemakkelijk verzadigd en, als dat eenmaal gebeurt, duurt het lang voordat ze weer onverzadigd raken (gradiënten zijn erg klein wanneer de eenheid is verzadigd)
Antwoord
Het verschil tussen een “diepe” NN en een standaard NN is puur kwalitatief: er is geen definitie van wat dat “diep” betekent. “Diep” kan van alles betekenen, van de uiterst geavanceerde architecturen die worden gebruikt door Google, Facebook en co die 50-80 of zelfs meer lagen hebben, tot architecturen met 2 verborgen lagen (in totaal 4 lagen). Het zou me niet verbazen als je zelfs maar artikelen zou kunnen vinden die beweren deep learning te doen met een enkele verborgen laag, omdat diep niet veel betekent.
Neuraal netwerk is ook een woord dat dat niet doet “t heeft een zeer precieze betekenis. Het omvat een extreem groot ensemble van modellen, van willekeurige boltzman-machines (die ongerichte grafieken zijn) tot feedforward-architecturen met verschillende activeringsfuncties. De meeste NNs zullen worden getraind met backprop, maar het hoeft niet zelfs de trainingsalgoritmen zijn niet erg homogeen.
Over het algemeen zijn deep learning, diepe NNs en NNs allemaal verzamelwoorden geworden die een veelvoud aan benaderingen bevatten.
Voor goede inleidende verwijzingen naar “wat is er veranderd”: Deep Learning of Representations: Looking Forward , Bengio, 2013 is een goede recensie + perspectief voor de toekomst. Zie ook Moeten diepe netten echt diep zijn? Ba & Caruana, 2013 die illustreren dat t diep zijn kan niet nuttig zijn voor representatie, maar om te leren.
Opmerkingen
- De referenties die je geeft zijn erg nuttig , maar de rest van het antwoord in de huidige vorm (dat luidt als ” NN betekent niets, DNN betekent niets, NN en DNN kunnen veel dingen doen “) niet veel, zou je overwegen om het te herzien?
Antwoord
Om verder te gaan met het antwoord van David Gasquez: een van de belangrijkste verschillen tussen diepe neurale netwerken en traditionele neurale netwerken is dat we “niet alleen backpropagation gebruiken voor diepe neurale netwerken.
Waarom? Omdat backpropagation latere lagen efficiënter traint dan eerdere lagen – naarmate u eerder en eerder in het netwerk gaat, worden de fouten kleiner en diffuser. Een netwerk met tien lagen bestaat dus in feite uit zeven lagen willekeurige gewichten, gevolgd door drie lagen met aangepaste gewichten, en doet het net zo goed als een netwerk met drie lagen. Zie hier voor meer.
Dus de conceptuele doorbraak is het behandelen van de afzonderlijke problemen (de gelabelde lagen) als afzonderlijke problemen – als we eerst probeer het probleem op te lossen van het bouwen van een generiek goede eerste laag, en probeer dan het probleem van het bouwen van een generiek goede tweede laag op te lossen, uiteindelijk zullen we “een diepe feature-ruimte hebben die we kunnen voeden met ons werkelijke probleem.
Antwoord
Ik zou niet zeggen dat er een groot filosofisch verschil is tussen NN en DNN (in feite zou ik zeggen dat DNN slechts een marketing term om te onderscheiden van “mislukt” NN). Wat is veranderd, is de grootte van de datasets. In wezen zijn neurale netwerken momenteel de beste $ O (n) $ statistische schatters, die goed werken voor hoog-dimensionale grote datasets (bijv. Imagenet).
Ik denk dat je een stap terug moet doen en zien dat dit een heropleving heeft veroorzaakt in ondiepe AI – bijv Een tas met woorden voor sentimentanalyse en andere taaltoepassingen en een visuele tas met woorden was de leidende benadering van beeldherkenning vóór DNN. Niemand zegt dat een zak met woorden een echt taalmodel is, maar het is een effectieve technische oplossing. Dus ik zou zeggen dat DNN een betere “visuele zak met woorden” is – zie bijv. Szegedy et al. 2013 Intrigerende eigenschappen van neurale netwerken en Nguyen et al. Diepe neurale netwerken worden gemakkelijk voor de gek gehouden: voorspellingen met veel vertrouwen voor onherkenbare afbeeldingen waarbij het duidelijk is dat er geen structuren van een hogere orde enz. worden geleerd (of wat dan ook waarvoor wordt geclaimd DNN).
Opmerkingen
- @amoeba dit andere papier is bijna een begeleidend artikel voor het eerste (weer met veel afbeeldingen!)
Antwoord
Om de laatste vraag te beantwoorden, bekijk dit artikel van Telgarsky die zegt dat voor een bepaald classificatieprobleem “alle ondiepe netwerken met minder dan exponentieel (in k) veel knooppunten een fout van ten minste 1/6 vertonen, terwijl een diep netwerk met 2 knooppunten in elk van de 2k-lagen nul fouten oplevert.”
Het classificatieprobleem in kwestie is het n-alternating-point probleem waarin we rekening houden met het interval $ [0,1-2 ^ {- k}] $ zodat de invoer $ x_i $ de $ 2 ^ k $ gelijkmatig verdeelde punten in dat interval en de bijbehorende $ y_i $ worden gegeven door $ y_i = 1 $ if $ i $ is oneven, en $ y_i = 0 $ if $ i $ is gelijk. We vragen dan, hoe goed kunnen ondiepe netwerken zonder exponentiële breedten deze relatie vastleggen in vergelijking met diepe netwerken met slechts twee knooppunten in elke laag? In wezen kunnen we gegevens beter (exact gelijkmatig) benaderen met een lineaire ( in $ k $ ) aantal lagen met slechts twee knooppunten in elke laag, terwijl we exponentieel veel (in $ k $ ) knooppunten om hetzelfde resultaat te krijgen in een ondiep netwerk.
Het bewijs van het citaat omvat het opmerken dat de samenstelling van niet-lineaire activeringen toegepast op affiene transformaties (dwz met een groter aantal lagen) erin slaagt meer variabiliteit in de gegevens vast te leggen dan het optellen van dezelfde functies (zoals wanneer we knooppunten aan lagen toevoegen).
Answer
Deep Learning is een set algoritmen in machine learning die probeer abstracties op hoog niveau in gegevens te modelleren door architecturen te gebruiken die zijn samengesteld uit meerdere niet-lineaire transformaties .
Bron: Arno Candel
Geef een reactie