Betraktes tilføjelse af tilfældig støj til skjulte lag som en regulering? Hvad er forskellen mellem at gøre det og tilføje dropout og batchnormalisering?


Svar 1:

Ja, tilføjelse af tilfældig støj til skjulte lag er en regularisering på nøjagtig den samme måde som frafald er. Den vigtigste intuition her er, at hvis den neurale respons i hvert lag er støjende, skal træningen justere vægtene til separate kategorier med en afstand, der er større end støjen. På testtidspunktet, når støjen er fraværende, bør klassificeringen således være mere stabil. Dette ligner meget, hvordan max-margin-klassificering fungerer, og vi ved alle, hvor vellykkede max-margin-teknikker har været (f.eks. Support Vector Machines). Du skal dog være forsigtig med at sikre dig, at støj ikke overvælder signalet.

Frafald betragtes som en reguleringsmetode, fordi den udfører gennemsnit af model. Det vil sige, at under træning er modellen på et bestemt tidspunkt faktisk en sandsynlighedsfordeling over en klasse af neurale netværksmodeller, hvor vægterne er faste, men en hvilken som helst af neuronerne i modellen kan mangle. Den samlede sandsynlighed for hvert neuralt netværk bestemmes af den individuelle sandsynlighed for, at en bestemt neuron er til stede eller fraværende. Dette er regularisering, fordi det gennemsnit overstiger bias i de enkelte tilfælde og udjævner omkostningsfunktionen.

Tilføjelse af tilfældig støj til skjult lag fungerer på samme måde, men med en anden sandsynlighedsfordeling. I stedet for at have faste vægte, har du en fast topologi, og sandsynlighedsfordelingen vælger vægte tilfældigt i henhold til en Gaussisk distribution, der er centreret om de "sande" vægte, dvs. de vægte, du opbevarer på din harddisk. Igen er dette gennemsnit af model, og det bør have en regulerende indflydelse med advarslen om, at støjen (variansen) ikke skal overvælde signalet. Så hvis du f.eks. Først anvender BatchNorm, vil du have en nogenlunde standard normal outputprofil (enheder centreret på nul med varians et), og du kan derefter anvende støj med varians på f.eks. 0,1. Du kan lege med variansen for at se, hvad der fungerer.

EDIT: Da spørgsmålet nævnes BatchNorm, ønskede jeg at påpege, at BatchNorm ikke rigtig bruges til regulering. Det vil sige, at BatchNorm ikke udjævner omkostningerne. I stedet tilføjes BatchNorm for at forbedre ydelsen til backpropagation. I det væsentlige forhindrer det, at den tilbageudbredte gradient bliver for stor eller lille ved at omskalere og genindlæse; som en teknik har den dybere forbindelser til optimeringsmetoder fra anden orden, der forsøger at modellere omkostningsoverfladens krumning. Som jeg nævnte ovenfor, kan BatchNorm også bruges til at garantere, at den relative skalering er korrekt, hvis du vil tilføje tilfældig støj til de neurale aktiviteter.


Svar 2:

Jeg vil betragte det som et optimerings trick mere end normalisering.

Effekten skal svare til virkningen af ​​stokastisitet i SGD.

SGD, og ​​dens inspiration Monte Carlo-metoder undgår at sidde fast i dårlige lokale minima ved at tage et tilfældigt skridt hver gang imellem i stedet for nøje at følge retningen med stejleste nedstigning; eller gøre noget tilsvarende i deres forskellige inkarnationer, fx tilføjelse af en tilfældig komponent til hvert trin i stedet for periodisk at tage et tilfældigt trin.

Tilføjelse af svag tilfældig støj til vægte opnår nøjagtigt det samme. [Tip: Gradientafstigning tilføjer også noget til vægtene i hver iteration!]


Svar 3:

REDIGERE:

Tilføjelse af gaussisk-distribueret, tilfældig støj til inputdataene for hvert lag kan gøre din model mere robust overfor små ændringer i dataene, så dit netværk bedre kan skelne fra støj fra signal. Som Zeeshan Zia sagde, ville dette i det væsentlige være stokastisk gradient anstændigt. Jeg vil stadig ikke overveje denne regulering. Det er mere en teknik, der hjælper din model med at lære mønstre til at adskille støj fra signal.

Frafald deaktiverer tilfældigt en bestemt del af knudepunkterne i et skjult lag på hver pas. Dette forbedrer netværket, fordi det tvinger det til at lære at genkende de samme mønstre på flere måder, hvilket fører til en bedre model.

Batchnormalisering er det sted, hvor du tager input til et lag og sørger for, at de alle er normaliserede mellem 0 og 1. Dette hjælper netværket med at lære bedre, fordi det holder gradienten anstændig mere ensartet og glat. På denne måde undgår du at springe rundt i minima, fordi din gradient er for stor.