Ar atsitiktinio triukšmo pridėjimas prie paslėptų sluoksnių yra laikomas įteisinimu? Kuo skiriasi tai atliekant ir pridedant metimą bei partijos normalizavimą?


Atsakymas 1:

Taip, atsitiktinių triukšmų pridėjimas prie paslėptų sluoksnių yra normalizavimas lygiai taip pat, kaip ir metant mokslą. Svarbiausia intuicija yra ta, kad jei kiekvieno sluoksnio nervinė reakcija yra triukšminga, tada treniruotėse reikia sureguliuoti svorius į atskiras kategorijas, kai prošvaisa yra didesnė už triukšmą. Taigi bandymo metu, kai triukšmo nėra, klasifikacija turėtų būti stabilesnė. Tai labai panašu į tai, kaip veikia maksimalios paraštės klasifikacija, ir mes visi žinome, kokie sėkmingi buvo maksimalios paraštės metodai (pvz., „Support Vector Machines“). Vis dėlto turite būti atsargūs ir įsitikinti, kad triukšmas neviršija signalo.

Atmetimas laikomas normalizavimo metodu, nes jis atlieka modelio vidurkį. Tai yra, treniruočių metu modelis tam tikru laiko momentu iš tikrųjų yra tikimybės pasiskirstymas per neuroninių tinklų modelių klasę, kurioje svoriai yra fiksuoti, tačiau bet kurio iš šio modelio neuronų gali trūkti. Bendra kiekvieno neuroninio tinklo tikimybė nustatoma pagal individualią tikimybę, kad tam tikras neuronas yra arba jo nėra. Tai yra normalizavimas, nes jis vidutiniškai atspindi kiekvienos bylos šališkumą, išlygindamas išlaidų funkciją.

Pridėjus atsitiktinį triukšmą prie paslėpto sluoksnio, jis veikia taip pat, tačiau skirtingai paskirstant tikimybę. Užuot turėję fiksuotus svorius, turite fiksuotą topologiją, o tikimybių pasiskirstymas svorius pasirenka atsitiktinai pagal Gauso paskirstymą, kurio centre yra „tikrieji“ svoriai, ty svoriai, kuriuos kaupiate kietajame diske. Vėlgi, tai yra modelio vidurkiai, ir tai turėtų daryti reguliuojančią įtaką, atsižvelgiant į tai, kad triukšmas (dispersija) neturėtų užgožti signalo. Pavyzdžiui, jei pirmą kartą pritaikysite „BatchNorm“, turėsite maždaug standartinį normalų išvesties profilį (vienetai, kurių centras yra nulis, o vieno varianto), ir tada galėsite pritaikyti triukšmą, kurio dispersija, tarkime, 0,1. Galite žaisti su variantu, kad pamatytumėte, kas veikia.

Redaguoti: Kadangi klausimas minėjo „BatchNorm“, norėjau pabrėžti, kad „BatchNorm“ iš tikrųjų nėra naudojamas normalizavimui. Tai yra, „BatchNorm“ neišlygina išlaidų. Vietoj to, siekiant pagerinti atgalinio dauginimo efektyvumą, pridedamas „BatchNorm“. Iš esmės jis apsaugo, kad atgalinis skilties gradientas netaptų per didelis ar mažas keičiant skalę ir persitempiant; kaip techniką, jis turi gilesnius ryšius su antrosios eilės optimizavimo metodais, kuriais bandoma modeliuoti sąnaudų paviršiaus kreivę. Kaip minėjau aukščiau, „BatchNorm“ taip pat gali būti naudojamas siekiant užtikrinti, kad santykinis mastelis yra teisingas, jei ketinate pridėti atsitiktinį triukšmą prie nervų veiklos.


Atsakymas 2:

Manau, kad tai daugiau nei optimizavimas.

Poveikis turėtų būti lygus stochastikumo poveikiui SGD.

SGD ir jo įkvėpimo Monte Carlo metodais išvengiama įstrigimo prie prastų vietinių minimumų, imantis atsitiktinių žingsnių kiekvieną kartą, o ne griežtai laikantis staigiausio nusileidimo krypties; arba atlikdami ką nors lygiaverčio įvairiuose jų įsikūnijimuose, pvz., pridėdami atsitiktinį komponentą kiekviename žingsnyje, užuot periodiškai atlikę atsitiktinį žingsnį.

Pridėjus silpną atsitiktinį triukšmą prie svorio, bus pasiektas tas pats. [Užuomina: Gradiento mažėjimas taip pat prideda svorio prie kiekvienos iteracijos!]


Atsakymas 3:

REDAGUOTI:

Jei į kiekvieno sluoksnio įvesties duomenis pridedate gauso būdu paskirstytą atsitiktinį triukšmą, jūsų modelis gali būti tvirtesnis dėl nedidelių duomenų pakeitimų, leidžiančių jūsų tinklui geriau atskirti triukšmą nuo signalo. Kaip sakė Zeeshanas Zia, tai iš esmės būtų tinkamas stochastinis gradientas. Aš vis dar negalvočiau apie šį įteisinimą. Tai daugiau būdas padėti modeliui išmokti triukšmo nuo signalo.

Pametimas atsitiktinai išjungia tam tikrą mazgų dalį paslėptame sluoksnyje kiekviename leidime. Tai pagerina tinklą, nes verčia jį išmokti atpažinti tuos pačius modelius keliais būdais, o tai lemia geresnį modelį.

Serijos normalizavimas yra tas, kai jūs perimate įvestis į sluoksnį ir įsitikinate, kad jos visos yra normalizuotos nuo 0 iki 1. Tai padeda tinklui geriau išmokti, nes palaiko tinkamą nuolydžio nuoseklumą ir sklandumą. Tokiu būdu išvengsite šokinėjimo aplink minimumus, nes jūsų nuolydis yra per didelis.