Pitanje:
Zašto bismo miješali podatke dok treniramo neuronsku mrežu?
DSKim
2016-11-12 05:10:30 UTC
view on stackexchange narkive permalink

U mini-paketnom treningu neuronske mreže čuo sam da je važna praksa miješanje podataka o treningu prije svake epohe.Može li netko objasniti zašto miješanje u svakoj epohi pomaže?

Iz google pretraživanja pronašao sam sljedeće odgovore:

  • pomaže treningu da se brzo konvergira
  • sprečava bilo kakvu pristranost tijekom treninga
  • sprečava model da nauči redoslijed treninga

Ali, imam poteškoća s razumijevanjem zašto je bilo koji od tih učinaka uzrokovan slučajnim miješanjem.Može li itko dati intuitivno objašnjenje?

šest odgovori:
Josh
2017-11-02 00:56:16 UTC
view on stackexchange narkive permalink

N napomena: u cijelom ovom odgovoru referiram se na minimiziranje gubitka treninga i ne raspravljam o kriterijima zaustavljanja poput gubitka validacije. Izbor kriterija zaustavljanja ne utječe na postupak / koncepte opisane u nastavku.

Proces vježbanja neuronske mreže je pronalaženje minimalne vrijednosti funkcije gubitka $ ℒ_X (W) $, pri čemu $ W $ predstavlja matricu (ili nekoliko matrica) težina između neurona, a $ X $ predstavlja trening skup podataka. Koristim indeks za $ X $ da naznačim da se naše minimiziranje $ ℒ $ događa samo preko pondera $ W $ (to jest, tražimo $ W $ tako da je $ ℒ $ minimizirano) dok je $ X $ fiksno .

Sada, ako pretpostavimo da imamo $ P $ elemente u $ W $ (to jest, u mreži postoje $ P $ ponderi), $ ℒ $ je površina u $ P + 1 $ -dimenzionalnom prostoru . Da bismo dobili vizualni analog, zamislimo da imamo samo dva neuronska utega ($ P = 2 $). Tada $ ℒ $ ima jednostavnu geometrijsku interpretaciju: to je površina u trodimenzionalnom prostoru. To proizlazi iz činjenice da se za bilo koju datu matricu pondera $ W $ funkcija gubitka može procijeniti na $ X $ i ta vrijednost postaje nadmorska visina površine.

Ali postoji problem nekonveksnosti; površina koju sam opisao imat će brojne lokalne minimume, pa su algoritmi gradijentnog spuštanja osjetljivi na to da u njima mogu zabiti dublje / niže / bolje rješenje. To će se vjerojatno dogoditi ako je $ X $ nepromijenjen tijekom svih iteracija treninga, jer je površina fiksirana za zadanih $ X $; sve su njegove značajke statične, uključujući razne minimume.

Rješenje za to je mini-batch trening u kombinaciji s miješanjem. Miješanjem redova i vježbanjem samo njihove podskupine tijekom zadane iteracije, $ X $ mijenja se sa svakom iteracijom, a zapravo je sasvim moguće da nema dvije iteracije u cijelom slijedu iteracija treninga i epohe će se izvoditi na potpuno istim $ X $. Učinak je da se rješivač lako može "odbiti" od lokalnog minimuma. Zamislite da je rješivač zaglavljen u lokalnom minimumu na iteraciji $ i $ s mini-batchom treninga $ X_i $. Ovaj lokalni minimum odgovara $ ℒ $ koji se procjenjuje na određenoj vrijednosti pondera; nazvat ćemo ga $ ℒ_ {X_i} (W_i) $. Na sljedećoj iteraciji oblik naše površine gubitka zapravo se mijenja jer koristimo $ X_ {i + 1} $, odnosno $ ℒ_ {X_ {i + 1}} (W_i) $ može poprimiti vrlo različitu vrijednost od $ ℒ_ {X_i} (W_i) $ i sasvim je moguće da ne odgovara lokalnom minimumu! Sada možemo izračunati ažuriranje gradijenta i nastaviti s treningom. Da budemo jasni: oblik $ ℒ_ {X_ {i + 1}} $ će se - općenito - razlikovati od oblika $ ℒ_ {X_ {i}} $. Imajte na umu da ovdje mislim na funkciju gubitka $ ℒ $ koja se procjenjuje na skupu treninga $ X $; to je cjelovita površina definirana nad svim mogućim vrijednostima $ W $, umjesto da se procjenjuje taj gubitak (što je samo skalar) za određenu vrijednost $ W $. Također imajte na umu da ako se mini-serije koriste bez miješanja, još uvijek postoji stupanj "diverzifikacije" površina gubitaka, ali postojat će konačan (i relativno mali) broj jedinstvenih površina s pogreškama koje je vidio rješivač (konkretno, vidjet će isti točni set mini-šarža - a time i površine gubitaka - tijekom svake epohe).

Jedna stvar koju sam namjerno izbjegao bila je rasprava o veličinama mini serija, jer o tome postoji milijun mišljenja i ona ima značajne praktične implikacije (veća paralelizacija može se postići s većim serijama).Međutim, vjerujem da je sljedeće vrijedno spomena.Budući da se $ ℒ $ procjenjuje izračunavanjem vrijednosti za svaki redak od $ X $ (i zbrajanjem ili uzimanjem prosjeka, tj. Komutativnog operatora) za zadani skup matrica težine $ W $, raspored redova od $ X$ nema učinka kada se koristi gradijentsko spuštanje u cjelini (to jest, kada je svaka serija punih $ X $, a iteracije i epohe su ista stvar).

Hvala vam na ovom korisnom objašnjenju.Nakon što sam duboko pročitao vaš odgovor, imam dva pitanja: 1. Spomenuli ste da mini serija isporučuje stupanj ograničene diverzifikacije.Ne razumijem zašto ovo nije dovoljno da se izbjegne zaglavljivanje u lokalnom minimumu.Ako je rješivač u lokalnim minimumima površine jedne šarže, s velikom vjerojatnošću nije u lokalnim minimumima površine sljedeće šarže, stoga ne bi trebao zaglaviti.? 2. Kako se solver konvergira u površini funkcije gubitka dok se površina uvijek mijenja pomoću različitih šarža?
Prednost diverzifikacije još uvijek postoji bez miješanja, ali nije toliko značajna kao kada se koristi miješanje, jer se neprestano vidi isti slijed površina gubitaka, dok ako koristimo miješanje, vjerojatno nikada više neće vidjeti istu površinu gubitaka.Što se tiče kriterija zaustavljanja, svoje sam općenito napisao tako da kad prosječni postotak smanjenja gubitka tijekom određenog broja ponavljanja bude manji od neke tolerancije, trening prestaje.
Možda nisam baš dobro odgovorio na vaše pitanje o lokalnim minimumima.U teoriji bi ove površine gubitaka trebale pokazivati određeni stupanj sličnosti jer se pretpostavlja da je raspodjela vjerojatnosti odgovora (ovisno o prediktorima modela) konstantna u cijelom skupu podataka o treningu.Dakle, ako je minimum dovoljno dubok, trebao bi se pojaviti u velikom broju mini serija, stoga vjerojatno nije vjerojatno da će rješivač odbiti od njega.Ali ako je minimum u osnovi samo "buka", ova bi strategija trebala funkcionirati prilično dobro i omogućiti modelu da nastavi trenirati.
Hvala.Vaš drugi odgovor čini jasno razumljivim zašto se NN konvergira unatoč različitim površinama.Što se tiče mog prvog pitanja, je li ispravno reći da bi postojanje istog slijeda imalo samo veću mogućnost da se "buka" ponovi na mnogim površinama gubitaka serija nego kad se koristi miješanje?Ovo je jedino objašnjenje koje mogu dati zašto je još uvijek moguće zaglaviti se u lokalnim minimumima kada se koriste mini serije bez miješanja.
@CodePope mislim da je to točno.Također, nakon što se gubitak znatno smanji od početka treninga, gradijenti će biti prilično mali i možda je čak moguće da se rješavač u osnovi zaglavi u "petlji" jer neprestano vidi isti slijed površina gubitaka.Napominjemo da je ovo spekulativno objašnjenje temeljeno na mom prilično ograničenom iskustvu, pa ako vas ozbiljno teoretski zanima, radije se obratite stručnjaku.
@CodePope Imajte na umu da ponašanje koje opisujem uvelike ovisi o izboru rješavača.Mnogo je rješenja dostupno u zrelim paketima poput Kerasa.Jedina stvar koju sam pronašao u tim paketima i smatrao sam nezadovoljavajućom je zaustavljanje povratnih poziva;puno ih se zaustavi na temelju apsolutne razine gubitka treninga.Ova će vrijednost ovisiti o problemu i takvi se pristupi neće dobro nositi s vrijednostima gubitaka koje bučno skaču.Zato mi se sviđa metoda "prosječnog smanjenja postotka" koja je spomenuta prije.Jedini problem je što ga općenito morate sami napisati.
bibliolytic
2017-09-06 11:34:19 UTC
view on stackexchange narkive permalink

Da biste pokušali dati drugo objašnjenje:

Jedna od najsnažnijih stvari o neuronskim mrežama je da one mogu biti vrlo složene funkcije, što omogućuje naučiti vrlo složene odnose između vaših ulaznih i izlaznih podataka.Ti odnosi mogu uključivati stvari koje nikada ne biste očekivali, poput redoslijeda unošenja podataka po epohi.Ako je redoslijed podataka unutar svake epohe jednak, tada model to može koristiti kao način smanjenja pogreške u treningu, što je svojevrsna prekomjerna opremljenost.

Što se tiče brzine: Mini-batch metode oslanjaju se na stohastički gradijentni spust (i njegova poboljšanja), što znači da se oslanjaju na slučajnost kako bi pronašli minimum.Miješanjem mini serija pretvorbe čine varijabilnijima, što može pomoći konvergenciji jer povećava vjerojatnost da se pogodi dobar smjer (ili barem ja to tako razumijem).

Kako neuronska mreža može naučiti redoslijed hranjenja podataka u svakoj epohi?
Jednom riječju, ne mogu.Ako se koristi trening mini serije (tj. Više od jedne serije u epohi), tada određeni redoslijed podataka može utjecati na trening u smislu da vježbanjem na jednoj mini seriji prvo rješenje može ući u određeno područje (možda sadržilokalni minimum ...) nego drugi.Ali reći da NN s povratnim informacijama "uči" o redoslijedu podataka zapravo nije točno jer se svako predviđanje izrađuje neovisno o svakom drugom predviđanju, a poredak * unutar * mini serija neće, naravno, imati nikakvog učinka.
Nuclear Wang
2017-11-02 01:26:59 UTC
view on stackexchange narkive permalink

S vrlo pojednostavljene točke gledišta, podaci se unose sekvencijalno, što sugerira da je u najmanju ruku moguće da redoslijed podataka utječe na izlaz.Ako redoslijed nije važan, nasumično odabiranje sigurno neće naštetiti.Ako je redoslijed važan, slučajno odabiranje pomoći će izravnati te slučajne efekte kako ne bi postali sustavne pristranosti.Ukratko, randomizacija je jeftina i nikad ne škodi, a često će umanjiti učinke naručivanja podataka.

Ganesh
2017-11-01 23:28:26 UTC
view on stackexchange narkive permalink

Zamislite da vaših posljednjih nekoliko naljepnica minibatcha doista ima više buke.Tada će ove serije povući konačne naučene utege u pogrešnom smjeru.Ako promiješate svaki put, šanse da posljednjih nekoliko serija bude nesrazmjerno bučna opadaju.

PRCube
2017-04-27 07:36:47 UTC
view on stackexchange narkive permalink

Kada trenirate mrežu koristeći fiksni skup podataka, što znači podatke koje nikada ne miješate tijekom treninga.Vrlo vjerojatno ćete dobiti utege koji su vrlo visoki i vrlo niski, poput 40,70, -101,200 ... itd.To jednostavno znači da vaša mreža nije naučila podatke o treningu, ali je naučila buku vaših podataka o treningu.Klasični slučaj modela overfit.S takvom mrežom dobit ćete uvid u predviđanja podataka koje ste koristili za trening.Ako za testiranje upotrijebite bilo koji drugi ulaz, vaš će se model raspasti.Sada, kada promiješate podatke o treningu nakon svake epohe (iteracija ukupnog skupa), jednostavno unosite različite ulaze u neurone u svakoj epohi, a to jednostavno regulira težine, što znači da ćete vjerojatnije dobiti "niže" težine koje su bliže nuli, a to znači da vaša mreža može bolje generalizirati.

Nadam se da je to bilo jasno.

golden8212312
2019-04-06 12:27:32 UTC
view on stackexchange narkive permalink

Evo intuitivnijeg objašnjenja:

Kada koristimo gradijentsko spuštanje, želimo da se gubici smanje u smjeru gradijenta. Gradijent se izračunava podacima iz pojedine mini serije za svaki krug ažuriranja težine. Ono što želimo da se dogodi je da je ovaj gradijent temeljen na mini serijama otprilike gradijent stanovništva, jer se očekuje da će to proizvesti bržu konvergenciju. (Zamislite ako u jednu mini seriju unesete mrežu 100 podataka class1, a u drugu 100 podataka class2, mreža će lebdjeti. Bolji način je hraniti je s 50 klase1 + 50 klase2 u svakoj mini seriji.)

Kako to postići jer ne možemo koristiti podatke o populaciji u mini šarži? Umijeće statistike govori nam: promiješajte populaciju, a prvi podaci veličine batch_size mogu predstavljati populaciju. Zbog toga trebamo preusmjeriti stanovništvo.

Moram reći da miješanje nije potrebno ako imate drugu metodu za uzorkovanje podataka iz populacije i osiguravanje da uzorci mogu proizvesti razuman gradijent.

To je moje razumijevanje. Nadam se da pomaže.



Ova pitanja su automatski prevedena s engleskog jezika.Izvorni sadržaj dostupan je na stackexchange-u, što zahvaljujemo na cc by-sa 3.0 licenci pod kojom se distribuira.
Loading...