Pitanje:
Kako odabrati broj skrivenih slojeva i čvorova u prosljeđivanju neuronske mreže?
Rob Hyndman
2010-07-20 05:15:03 UTC
view on stackexchange narkive permalink

Postoji li standardna i prihvaćena metoda za odabir broja slojeva i broja čvorova u svakom sloju u neuronskoj mreži koja se prosljeđuje unaprijed? Zanimaju me automatizirani načini izgradnje neuronskih mreža.

Među svim sjajnim odgovorima ovaj mi je članak bio koristan http://dstath.users.uth.gr/papers/IJRS2009_Stathakis.pdf
@DebpriyaSeal nije * toliko * korisno ...
Jedanaest odgovori:
#1
+532
doug
2010-08-02 07:20:30 UTC
view on stackexchange narkive permalink

Shvaćam da je na ovo pitanje odgovoreno, ali mislim da postojeći odgovor zapravo ne uključuje pitanje osim ukazivanja na vezu koja je općenito povezana s temom pitanja. Veza posebno opisuje jednu tehniku ​​za programsku konfiguraciju mreže, ali koja nije " [a] standardna i prihvaćena metoda " za konfiguraciju mreže.

Slijedeći mali skup jasnih pravila, programski se može postaviti kompetentna mrežna arhitektura (tj. broj i vrsta neuronskih slojeva i broj neurona koji čine svaki sloj). Slijedom ove sheme dobit ćete kompetentnu arhitekturu, ali vjerojatno ne i optimalnu.

Ali kad se ova mreža inicijalizira, možete iterativno podesiti konfiguraciju tijekom treninga koristeći brojne pomoćne algoritme; jedna obitelj ovih djela obrezivanjem čvorova temelji se na (malim) vrijednostima vektora težine nakon određenog broja epoha treninga - drugim riječima, uklanjanjem nepotrebnih / suvišnih čvorova (više o tome u nastavku).

Dakle, svaka NN ima tri vrste slojeva: input , hidden i output .


Stvaranje NN arhitekture stoga znači donošenje vrijednosti za broj slojeva svake vrste i broj čvorova u svakom od tih slojeva.

Ulazni sloj

Jednostavno - svaki NN ima točno jedan od njih - bez iznimki koje su mi poznate.

Što se tiče broja neurona koji čine ovaj sloj, ovaj je parametar u potpunosti i jedinstveno se određuje nakon što saznate oblik podataka o treningu. Točnije, broj neurona koji sadrže taj sloj jednak je broju značajki (stupaca) u vašim podacima . Neke NN konfiguracije dodaju jedan dodatni čvor za pojam pristranosti.


Izlazni sloj

Kao i ulazni sloj, svaki NN ima točno jedan izlazni sloj. Odrediti njegovu veličinu (broj neurona) jednostavno je; to je u potpunosti određeno odabranom konfiguracijom modela.

Hoće li vaša NN raditi u Machine načinu ili Regresija načinu (ML konvencija o korištenju izraza koji se također koristi u statistici, ali dodjeljuje drugačiji što znači da je vrlo zbunjujuće). Strojni način rada: vraća oznaku klase (npr. "Premium račun" / "Osnovni račun"). Način regresije vraća vrijednost (npr. Cijenu).

Ako je NN regresor, izlazni sloj ima jedan čvor.

Ako je NN klasifikator, tada ima i jedan čvor osim ako se ne koristi softmax u tom slučaju izlazni sloj ima jedan čvor po oznaci klase u vašem modelu.

Skriveni slojevi

Dakle, tih nekoliko pravila postavljaju broj slojeva i veličinu (neuroni / sloj) i za ulazni i za izlazni sloj. To ostavlja skrivene slojeve.

Koliko skrivenih slojeva? Pa, ako su vaši podaci linearno odvojivi (što često znate kad započnete s kodiranjem NN-a), tada vam uopće ne trebaju nikakvi skriveni slojevi. Naravno, za rješavanje podataka ne treba vam NN, ali svejedno će obaviti posao.

Osim toga, kao što vjerojatno znate, postoji brdo komentara na pitanje konfiguracije skrivenog sloja u NN-ima (pogledajte suludo temeljitu i pronicljivu NN FAQ za izvrstan sažetak tog komentara). Jedno pitanje unutar ove teme oko kojeg postoji konsenzus je razlika u izvedbi od dodavanja dodatnih skrivenih slojeva: situacija u kojima se izvedba poboljšava s drugim (ili trećim, itd.) Skrivenim slojem vrlo je malo. Jedan skriveni sloj dovoljan je za veliku većinu problema.

Pa što je s veličinom skrivenih slojeva - koliko neurona? Postoje neka empirijski izvedena pravila, od kojih se najčešće oslanja na ' optimalna veličina skrivenog sloja je obično između veličine ulaznog i veličine izlaznih slojeva '. Jeff Heaton, autor knjige Uvod u neuronske mreže u Javi nudi nekoliko više.

Ukratko, za većinu problema vjerojatno bi se mogle postići pristojne performanse (čak i bez drugog koraka optimizacije ) postavljanjem konfiguracije skrivenog sloja koristeći samo dva pravila: (i) broj skrivenih slojeva jednak je jednom; i (ii) broj neurona u tom sloju je srednja vrijednost neurona u ulaznom i izlaznom sloju.


Optimizacija mrežne konfiguracije

Rezidba opisuje niz tehnika za obrezati veličinu mreže (čvorovima, a ne slojevima) radi poboljšanja računalnih performansi, a ponekad i rezolucije. Suština ovih tehnika je uklanjanje čvorova iz mreže tijekom treninga identificiranjem onih čvorova koji, ako se uklone iz mreže, ne bi osjetno utjecali na performanse mreže (tj. Na razlučivost podataka). (Čak i bez korištenja formalne tehnike obrezivanja, možete okvirno shvatiti koji čvorovi nisu važni gledajući matricu težine nakon treninga; težine gledajte vrlo blizu nuli - čvorovi na oba kraja tegova često su uklanja se tijekom obrezivanja.) Očito je, ako tijekom treninga upotrebljavate algoritam obrezivanja, započnite s mrežnom konfiguracijom za koju je vjerojatnije da ima višak (tj. „prunable“) čvorova - drugim riječima, kada se odlučujete o mrežnoj arhitekturi, pogriješite na strani više neurona, ako dodate korak obrezivanja.

Drugim riječima, primjenom algoritma obrezivanja na mreži tijekom treninga, možete pristupiti optimalnoj mrežnoj konfiguraciji; mogu li to učiniti u jednom "unaprijed" (kao što je algoritam zasnovan na genetskom algoritmu), ne znam, iako znam da je za sada ova optimizacija u dva koraka češća.

Gdje se nalaze poznata NN FAQ? :)
Navodite da za većinu problema treba samo jedan skriveni sloj. Možda je bolje reći da je mreže s više skrivenih slojeva izuzetno teško trenirati (ako želite znati kako, provjerite publikacije Hintonove grupe u Uof Torontu, "duboko učenje"), a time i one probleme koji zahtijevaju više od skrivenog sloj neuronske mreže smatraju "nerješivim".
@bayerj, koja je dodatna korist od mreža 'dubokog učenja'?
Iste funkcije mogu se predstaviti s eksponencijalno manje parametara, što dovodi do bolje generalizacije.
Napišete * Ako je NN regresor, tada izlazni sloj ima jedan čvor. *. Zašto samo jedan čvor? Zašto ne mogu imati više kontinuiranih izlaza?
@gerrit Definitivno možete imati više kontinuiranih izlaza ako je vaš ciljni izlaz vektorski vrijedan. Definiranje odgovarajuće funkcije gubitka za vektorski vrijedne izlaze može biti malo zamršenije nego s jednim izlazom.
Tamo što je lukavije: u osnovi zbrajate pojedinačne pogreške. Ipak, možda će ih trebati ponderirati, inače jedna greška dominira nad svim ostalim (npr. Jer ima puno veći raspon). ZS bodovi na rezultatima treninga jedan su od očitih načina da se to učini, ali možda nije ono što želite.
Mislio sam da je suprotno od ovog: _Ako je NN klasifikator, tada ima i jedan čvor, osim ako se ne koristi softmax, u tom slučaju izlazni sloj ima jedan čvor po oznaci klase u vašem modelu._
Mogli biste konstruirati neuronsku mrežu s više ulaznih slojeva ako želite.Prvi sloj trebao bi biti ulazni sloj, ali uzastopni slojevi mogli bi se sastojati i od skrivenih neurona i od ulaznih neurona, ili, ako želite, možete imati dodatni ulazni sloj na istoj razini kao i skriveni sloj.
@doug Hvala na ovom predivnom odgovoru.To mi je omogućilo da smanjim ANN s 3 skrivena sloja na 1 i postignem istu točnost klasifikacije postavljanjem pravog broja skrivenih neurona ... Upravo sam koristio prosjek ulaznih i izlaznih zbrojeva.Hvala!
@davips Ne, ovdje je ispravno napisano.[Softmax] (https://en.wikipedia.org/wiki/Softmax_function) djeluje slično sigmoidu ili drugoj mapi u prostor [-1,1], osim što se preslikava na više dimenzija / izlaza, baš kao što Doug spominje.
@MikeWilliamson Sumnjam da je riječ o "problemu" s terminologijom / uporabom s puno uobičajenih okvira ML.Čini se uobičajenim da imate hrpu "izlaznih" neurona, zatim ih softmaxirate, a zatim odaberete najviši kao pojedinačni izlaz;a ljudi pogrešno stavljaju "najviši izbor" u softmax.
"Jednostavno - svaka NN ima točno jednog od njih - bez iznimki kojih sam svjestan."Nije točno, evo primjera u Kerasovoj dokumentaciji dva ulazna (i dva izlazna) sloja: https://keras.io/getting-started/functional-api-guide/#multi-input-and-multi-output-models
Mijenja li se odgovor na bilo koji način ako je MLP za aproksimaciju Q funkcije u RL zadatku?
Jesu li "testovi ablacije" oblik obrezivanja?
Ima li netko papir ili knjigu, pri čemu je činjenica da je "Jedan skriveni sloj dovoljan za veliku većinu problema."može se dokazati?Ili citirano?Hvala vam!
Ovaj rad tvrdi da ako nemate skriveni sloj širi od ulaznog sloja, nećete moći oblikovati nepovezana područja odlučivanja u ulaznom prostoru.Dakle, mislim da bi trebalo biti korisno eksperimentirati s tim umjesto sa prosjekom između ulaznog i izlaznog sloja.https://arxiv.org/abs/1803.00094
Hvala na ovom lijepom odgovoru !!Pa razmotrimo sljedeći primjer: Model1) 500 ulaznih jedinica, 100 skrivenih jedinica, 200 izlaznih jedinica;Model2) 500 ulaznih jedinica, 100 skrivenih jedinica, 5 skrivenih jedinica (drugi skriveni sloj), 200 izlaznih jedinica.Prednost modela A u usporedbi s modelom B je: brži trening, niža pogreška generaliziranja (?) I prednost modela B u usporedbi s modelom A: zbog velike razlike u broju jedinica, pomalo sam nesigurna kakostavi efekt u riječi.Možete li se sjetiti prednosti ovog modela (u usporedbi s modelom A)?
#2
+158
hobs
2015-02-06 13:22:32 UTC
view on stackexchange narkive permalink

@ dougov odgovor mi je uspio. Postoji jedno dodatno pravilo koje pomaže kod problema s učenjem pod nadzorom. Obično možete spriječiti prekomjerno uklapanje ako svoj broj neurona zadržite ispod:

$$ N_h = \ frac {N_s} {(\ alpha * (N_i + N_o))} $$

$ N_i $ = broj ulaznih neurona.
$ N_o $ = broj izlaznih neurona.
$ N_s $ = broj uzoraka u skupu podataka o obuci.
$ \ alpha $ = proizvoljan faktor skaliranja obično 2-10.

Ostali preporučuju postavljanje $ alpha $ na vrijednost između 5 i 10, ali smatram da će vrijednost 2 često rade bez pretjerane opreme. Možete smatrati alfu efektivnim faktorom grananja ili brojem ne-nula težina za svaki neuron. Ispuštajući slojevi donijet će "učinkoviti" faktor grananja od stvarnog srednjeg faktora grananja za vašu mrežu.

Kao što je objašnjeno ovim izvrsnim tekstom NN dizajna, želite ograničiti broj besplatnih parametara u vašem modelu (njegov stupanj ili broj nula težina) do malog dijela stupnjeva slobode u vašim podacima. Stupnjevi slobode u vašim podacima su broj uzoraka * stupnjevi slobode (dimenzije) u svakom uzorku ili $ N_s * (N_i + N_o) $ (pod pretpostavkom da jesu svi neovisni). Dakle, $ \ alpha $ je način da naznačite koliko općenito želite da vaš model bude ili koliko želite spriječiti prekomjernu opremu.

Za automatizirani postupak koji biste započeli s alfa vrijednosti 2 (dvostruko više stupnjeva slobode u podacima o vježbanju od vašeg modela) i usmjerite se do 10 ako je pogreška (gubitak) za vaš set podataka o treningu znatno manja nego za vaš testni skup podataka.

Ova je formula vrlo zanimljiva i korisna.Postoji li referenca za ovu formulu?Bilo bi korisnije.
@prashanth Kombinirao sam nekoliko tvrdnji i formula u gore navedenom tekstu NN dizajna.Ali mislim da to nije izričito prozvano u obliku koji pokazujem.A moja verzija je vrlo gruba aproksimacija s puno pojednostavljujućih pretpostavki.Dakle YMMV.
Ne vidim koliko je veličina skupa treninga relevantna za ovo.Što ako se vaš testni skup kasnije poveća?Osim toga, želite nešto što generalizira, a ne nešto što može odgovarati vašim podacima o treningu.
@konpsych Ako vaš set treninga raste, a vaš model ne odgovara dobro tim novim primjerima, to je prilika da povećate broj neurona.Međutim, u pravu ste, teoretski.Ako ste razvili vrlo učinkovit pristup regularizaciji (npr. Slučajno napuštanje) i možete generalizirati od nekoliko primjera do mnogih primjera ispitivanja, tada DOF set treninga može biti puno manji od vašeg NN DOF-a.Ali nisam mogao sam implementirati tako učinkovit "mehanizam generalizacije".Najniža vrijednost koju sam mogao dobiti na "alfi" bila je vrijednost 2.
Prvo sam htio napisati trening set umjesto testnog u prethodnom komentaru.Možda ova formula ima smisla ako je želimo čitati kao "treba vam barem toliko neurona da biste naučili dovoljno značajki (DOF koji ste spomenuli) iz skupa podataka".Ako su značajke skupa podataka reprezentativne za populaciju i koliko dobro model može generalizirati, možda je to drugo pitanje (ali važno).
Da @konpsych.Pretpostavio sam reprezentativni skup obuke i testa, pa da, moje spominjanje generalizacije nema smisla za diskretne ulaze, ali ima smisla za stvarne vrijednosti unosa i izlaza (regresija) gdje se generalizacija može dogoditi u prostoru između reprezentativnih uzoraka.Vaša je formulacija bolja.Kao približno "osnovno pravilo", ova je formula za mene radila na mojim problemima s regresijom, osiguravajući da moji modeli nisu "pamtili" ulazno / izlaznu korespondenciju.
@hobs Što se događa kada imate veliki trening set, otprilike 5 milijuna redova?
@Cyberguille Dogodi se ** puno **;) Počnite s onoliko stupnjeva slobode koliko mislite da fenomen koji modelirate zahtijeva.Napravite svoj put do "limita" u ovoj formuli.Možete proširiti svoj "model" ili stupnjeve slobode dodavanjem dodatnih neurona, slojeva, težina (veza) kako biste poboljšali performanse.Nastavite "regulirati" svoj model slučajnim ispadanjem, stohastičkim funkcijama aktivacije, troškovima težine itd., Posebno dok se približavate ili premašujete "ograničenje" iz ovog osnovnog pravila.
@hobs Ali vremenska složenost se povećava kad dodate još neurona, možda ovo trebam izvršiti u dobrom računalu i mnogo vremena.Dakle, vremenska složenost ovisi o ulazu (duljini skupa treninga), to nije dobro.Možda to uspije za ne tako velik set treninga.
@Cyberguille Da.Ne možete istovremeno optimizirati i za točnost i za složenost.** Gornja ** granica ne pretpostavlja ništa o ograničenjima resursa.Obavijestite me ako pronađete dobro pravilo koje uravnotežuje računalna ograničenja i preciznost za vas.
Ova formula podrazumijeva da ako je broj uzoraka treninga stvarno velik, na pr.Milijun, tada bi broj skrivenih čvorova bio reda stotina tisuća.Je li to zaista uputno?
Pozdrav, formula je zanimljiva, što ako imam više mreža i više ulaza, ali pojedinačne izlaze.Na primjer mreža BiDAF ili sijamska mreža.Skriveni slojevi trebaju se izračunati zasebno za svaku mrežu ili se jedna veličina treba primijeniti na sve mreže uzimajući srednje vrijednosti.
@Wazzzy definitivno izračunava za pojedine mreže.A ova je formula samo vrlo grubo polazište.Stvarni NN-ovi s vrhunskim performansama mogu proširiti svoje stupnjeve slobode (broj ne-nulte težine) na puno veće od onoga što bi njihov skup podataka obično podržavao (s ovom formulom) koristeći druge pristupe regularizaciji, poput "slučajnog napuštanja"", za širenje učenja po mreži.
Jeste li sigurni da je ovo dobra procjena za mreže s više skrivenih slojeva?Nije li slučaj da je za više skrivenih slojeva broj parametara puno veći od $ N_h \ cdot (N_i + N_o) $?
Da, @mateus, morali biste iterativno primijeniti ovo pravilo na svaki skriveni sloj ako želite bolju procjenu.No, možda međuovisnost težina u svakom sloju smanjuje brzinu rasta u raznolikosti / složenosti modela dodavanjem slojeva.Čak i ako se iterativno primijeni na svaki sloj, ovo je pravilo manje korisno dok dodajete više slojeva.
@mateus, je možda malo bolje pravilo za više slojeva rješenje `N_h` (prosječni broj skrivenih neurona po sloju) za ovo` N_s = (N_i + N_o) * N_h ^ N_hidden_layers`.Ali svejedno ne bih koristio ovu formulu.To je samo za vrlo osnovne probleme (probleme s igračkama) kada ne planirate primijeniti bilo koji drugi pristup regularizaciji.
@hobs, ako dobro razumijem vašu formulu za 400.000 uzoraka u skupu treninga, koji imaju 4 značajke za binarnu klasifikaciju, trebao bih: `400000 / (10 * (4 + 1)) == 8000` ~ 8000 neurona u skrivenom sloju- je li ovo ispravna procjena?
@MaxU Da, tako je.To je dobar broj za početak, ali to je puno neurona i puno težina za samo 4 stupnja slobode u svakom uzorku.Dakle, ako vaši podaci sadrže puno suvišnih uzoraka, možda ćete otkriti da je ovo previše neurona.PCA možete koristiti na podskupovima podataka (tretirajući svaki uzorak kao novu dimenziju u vašem PCA) za procjenu linearne suvišnosti podataka.Javite nam kako vam ide.
@hobs mislite li sa "skrivenim neuronima", ukupnim skrivenim neuronima u svim skrivenim slojevima NN-a ili samo u jednom skrivenom sloju?Mislim, recimo da imam 2 skrivena sloja i Nh = 50 za mene.Znači li to da bih mogao (trebao) imati 50 skrivenih neurona u prvom skrivenom sloju, i 50 skrivenih neurona u drugom, ili bi zajedno trebali biti 50?poput 25 u prvoj i 25 u drugoj?
@ZelelB Ovo je osnovno pravilo užasno netočno.Ovu formulu više ne koristim ni za što osim za jedan potpuno povezani skriveni sloj.Dakle, ako imate višeslojnu mrežu ili koristite CNN ili RNN, morate ograničiti ukupan broj neurona i težina na temelju intuicije ili tuđih smjernica.Najbolje je da putem scholar.google.com saznate broj neurona i slojeva (i težine ili DOF) koje drugi uspješno koriste.
@HammanSamuel Ne znam.Ovisi o tome koliko slučajnog osipanja koristite, te o prirodi temeljne "fizike" odnosa između vaših podataka i vaše ciljne varijable te o tome koliko ste proračunskih konjskih snaga i vremena spremni potrošiti na problem.Uvijek započnite s najjednostavnijom mogućom mrežom za koju možete zamisliti da ikad radi na vašem problemu.Ovo je vrlo sirova gornja granica, a ne preporučljivo polazište za veličinu mreže ili arhitekturu (iako znam da je to ono što je zatražio OP).
Vježbam mrežu za snimanje slike veličine 50 x 50 piksela i predviđanje granica oblika koji se na njoj pojavljuje.S 6000 primjera u mom treningu i vrijednošću od samo 2, N_h = 6000 / (2 * (2500 + 4)) = 1,20.Dakle, mogao bih imati 1,20 neurona u svojoj mreži?Ili mi nešto nedostaje ili ovo ne važi dobro.
@spaarky21 da, to je za potpuno povezane (Guste) ANN-ove, a ne CNN-ove.Guste mreže ne rade dobro za većinu CV problema.1 neuron može biti prikladan za vaš problem ako mislite da ga gusti NN može riješiti.To je sigurno dobro mjesto za početak.1 neuron je ekvivalentan logističkoj regresiji.
#3
+68
jj_
2015-11-04 04:20:40 UTC
view on stackexchange narkive permalink

Iz Uvod u neuronske mreže za Javu (drugo izdanje) autora Jeffa Heatona - pregled je dostupan na Google Knjige i ranije na web mjestu autora:

Broj skrivenih slojeva

U vezi sa skrivenim slojevima moraju se donijeti dvije odluke: koliko skrivenih slojeva zapravo treba imati u neuronskoj mreži i koliko će neurona biti u svakom od tih slojeva. Prvo ćemo ispitati kako odrediti broj skrivenih slojeva koji će se koristiti s neuronskom mrežom.

Rijetko se susreću problemi koji zahtijevaju dva skrivena sloja. Međutim, neuronske mreže s dva skrivena sloja mogu predstavljati funkcije bilo koje vrste. Trenutno nema teoretskog razloga za upotrebu neuronskih mreža s više od dva skrivena sloja. Zapravo, za mnoge praktične probleme nema razloga koristiti više od jednog skrivenog sloja. Tablica 5.1 sažima mogućnosti arhitektura neuronske mreže s raznim skrivenim slojevima.

Tablica 5.1: Određivanje broja skrivenih slojeva

 | Broj skrivenih slojeva | Rezultat | 0 - Sposoban predstavljati samo linearne odvojive funkcije ili odluke. 1 - Može aproksimirati bilo koju funkciju koja sadrži kontinuirano preslikavanje iz jednog konačnog prostora u drugi. 2 - Može predstavljati proizvoljnu granicu odluke proizvoljne točnosti s racionalnim aktivacijskim funkcijama i može približiti svako ujednačavanje bilo kojoj točnosti. 

Odlučivanje broja skrivenih slojeva neurona samo je mali dio problema. Također morate odrediti koliko će neurona biti u svakom od ovih skrivenih slojeva. Ovaj je postupak opisan u sljedećem odjeljku.

Broj neurona u skrivenim slojevima

Odlučivanje broja neurona u skrivenim slojevima vrlo je važno važan dio odluke o vašoj cjelokupnoj arhitekturi neuronske mreže. Iako ovi slojevi ne izravno komuniciraju s vanjskim okolišem, imaju ogroman utjecaj na konačni izlaz. Moramo pažljivo razmotriti i broj skrivenih slojeva i broj neurona u svakom od tih skrivenih slojeva.

Korištenje premalog broja neurona u skrivenim slojevima rezultirat će nečim što se naziva nedovoljno prilagođavanje. Nedovoljno prilagođavanje događa se kada u skrivenim slojevima ima premalo neurona da bi se na odgovarajući način otkrili signali u složenom skupu podataka.

Korištenje previše neurona u skrivenim slojevima može rezultirati nekoliko problema. Prvo, previše neurona u skrivenim slojevima može rezultirati pretjeranom opremom. Prekomjerno prilagođavanje događa se kada neuronska mreža ima toliko kapaciteta za obradu informacija da ograničena količina informacija sadržanih u skupu treninga nije dovoljna za treniranje svih neurona u skrivenim slojevima. Drugi se problem može pojaviti čak i kada su podaci o treningu dovoljni. Neizmjerno velik broj neurona u skrivenim slojevima može povećati vrijeme potrebno za treniranje mreže. Količina vremena za trening može se povećati do te mjere da je nemoguće adekvatno trenirati neuronsku mrežu. Očito je da se mora postići određeni kompromis između previše i premalo neurona u skrivenim slojevima.

Postoje mnoge metode uobičajenog određivanja točnog broja neurona u skrivenim slojevima, poput kao sljedeće:

  • Broj skrivenih neurona trebao bi biti između veličine ulaznog sloja i veličine izlaznog sloja.
  • Broj skrivenih neurona trebao bi biti 2/3 veličine ulaznog sloja, plus veličina izlaznog sloja.
  • Broj skrivenih neurona trebao bi biti manji od dvostruke veličine ulaznog sloja.

Ova tri pravila pružaju vam polazište za razmatranje. U konačnici, odabir arhitekture za vašu neuronsku mrežu svest će se na pokušaje i pogreške. Ali što je točno pod pojmom pokušaja i pogrešaka? Ne želite početi bacati slučajni broj slojeva i neurona na svoju mrežu. To bi bilo vrlo dugotrajno. Poglavlje 8, „Izrezivanje neuronske mreže“ istražit će razne načine za određivanje optimalne strukture za neuronsku mrežu.


Također mi se sviđa sljedeći isječak iz odgovora koji sam pronašao na researchgate.net , a koji u samo nekoliko riječi prenosi puno:

Steffen B Petersen · Sveučilište u Aalborgu

[...]

Da bi se osigurala sposobnost mreže da generalizira broj čvorova mora biti što niži. Ako imate velik višak čvorova, vaša mreža postaje memorijska banka koja može do savršenstva opozvati set treninga, ali nema dobru izvedbu na uzorcima koji nisu bili dio skupa treninga.

Znate li slučajno izvor citata Steffen B Petersen?
Žao mi je što ne znam.Pokušao sam ga potražiti, ali nisam ga mogao pronaći ... Mislim da je članak uklonjen s weba.Možda ga možete izravno kontaktirati?
Ne bi li se trebala uzeti u obzir veličina kompleta treninga?Imam tabelarni skup podataka s ~ 300 000 jedinstvenih uzoraka (cijene automobila).Ulazni sloj ima 89 čvorova.Trenirajući mrežu bez regularizacije i samo 89 čvorova u jednom skrivenom sloju, gubitak treninga dolazim na plato nakon nekoliko epoha.RMSE visoravni na ~ 1.800 USD (jedan izlazni čvor je cijena u ovom problemu regresije).
Mislim da je izvor citata Steffena B Petersena bio ovdje: https://www.researchgate.net/post/How_to_decide_the_number_of_hidden_layers_and_nodes_in_a_hidden_layer
Iako je ovaj odgovor uglavnom kopirao stvari iz knjige čija je referenca data u odgovoru, ali nekako odgovara na pitanje.
#4
+46
Dikran Marsupial
2010-09-03 13:40:44 UTC
view on stackexchange narkive permalink

Trenutno radim na empirijskoj studiji na ovome (odobravajući simulacije procesorskog stoljeća na našem HPC pogonu!). Moj bi savjet bio da koristite "veliku" mrežu i regularizaciju, ako koristite regularizaciju, mrežna arhitektura postaje manje važna (pod uvjetom da je dovoljno velika da predstavlja osnovnu funkciju koju želimo zauzeti), ali morate prilagoditi regularizaciju parametar ispravno.

Jedan od problema s odabirom arhitekture je taj što je to diskretna, a ne kontinuirana kontrola složenosti modela, pa stoga može biti pomalo tup instrument, posebno kada idealna je složenost niska.

Međutim, sve ovo podliježe teoremima "bez besplatnog ručka", iako je regularizacija učinkovita u većini slučajeva, uvijek će biti slučajeva kada odabir arhitekture funkcionira bolje i jedini način da biste saznali je li to istina o kojem se problemu radi, isprobati oba pristupa i unakrsno provjeriti.

Da bih izgradio automatizirani graditelj neuronskih mreža, koristio bih hibridni Monte Carlo (HMC) Radforda Neala ) Bayesov pristup na temelju uzorkovanja i koristite veliku mrežu rade i integriraju se preko težina, umjesto da optimiziraju težine jedne mreže. Međutim, to je računski skupo i pomalo "crna umjetnost", ali rezultati koje postiže prof. Neal sugeriraju da se isplati!

"Trenutno radim na empirijskoj studiji o ovome" - Postoji li ažuriranje?
ne, 'fraid not, još uvijek bih preporučio veliku (ish) mrežu i regularizaciju, ali ne postoji srebrni metak, neki problemi ne trebaju regularizaciju, ali neki skupovi podataka trebaju podešavanje skrivene veličine sloja kao i regularizaciju.Nažalost, recenzentima se članak nije svidio :-(
#5
+15
Vicente Cartas
2010-07-20 05:47:45 UTC
view on stackexchange narkive permalink

Koliko znam, ne postoji način da se automatski odabere broj slojeva i neurona u svakom sloju. Ali postoje mreže koje mogu automatski graditi svoju topologiju, poput EANN-a (Evolucijske umjetne neuronske mreže, koje koriste genetske algoritme da bi razvile topologiju).

Postoji nekoliko pristupa, više ili manje suvremeni za koji se činilo da dati dobre rezultate bio je NEAT (Neuro Evolucija proširenih topologija).

#6
+15
prashanth
2016-02-16 20:18:00 UTC
view on stackexchange narkive permalink

• Broj skrivenih čvorova: Ne postoji čarobna formula za odabir optimalnog broja skrivenih neurona. Međutim, dostupna su neka pravila palca za izračunavanje broja skrivenih neurona. Grubu aproksimaciju možemo dobiti pravilom geometrijske piramide koje je predložio Masters (1993). Za troslojnu mrežu s n ulaznih i m izlaznih neurona, skriveni bi sloj imao $ \ sqrt {n * m} $ neurona.

Ref:

1 Učitelji, Timothy. Praktični recepti za neuronske mreže na C ++. Morgan Kaufmann, 1993.

[2] http://www.iitbhu.ac.in/faaching/min/rajesh-rai/NMEICT-Slope/lecture/c14/ l1.html

Činilo se da ovo pravilo prilično dobro funkcionira s nizom različitih skupova podataka i tri skrivena sloja.Jedno je sigurno, koristeći ovo pravilo, broj neurona u skrivenim slojevima bit će manji od broja ulaznih značajki (veličina $ n $).
Ako koristim 15 ulaznih parametara koji će napokon vratiti jedan izlaz, prema vašoj formuli, skriveni kasnije neuroni bili bi samo 3-4 za ovaj model.Je li tako
@RahulJha da prema pravilu.Ali uzmite rezultat s malo soli.To je samo jedna od mnogih dostupnih opcija.Prođite i kroz druge odgovore.
za mene je to još uvijek misterij.
#7
+8
shuriken x blue
2015-12-14 11:43:53 UTC
view on stackexchange narkive permalink

Automatizirani načini izgradnje neuronskih mreža korištenjem globalnog pretraživanja hiper-parametara:

Ulazni i izlazni slojevi su fiksne veličine.

Što može varirati:

  • broj slojeva
  • broj neurona u svakom sloju
  • vrsta sloja

Za to se može koristiti više metoda problem diskretne optimizacije, s mrežnom pogreškom bez uzorka kao troškovnom funkcijom.

  • 1) Mreža / nasumično pretraživanje nad prostorom parametara, do krenite od malo boljeg položaja
  • 2) Dosta metoda koje bi se mogle koristiti za pronalaženje optimalne arhitekture. (Da, treba vremena).
  • 3) Napravite neko regulariziranje, isperite, ponovite.
#8
+8
Martin Thoma
2017-08-01 11:39:17 UTC
view on stackexchange narkive permalink

Naveo sam mnoge načine učenja topologije u magistarskom radu, poglavlje 3.Velike su kategorije:

  • Rastući pristupi
  • Pristupi obrezivanju
  • Genetski pristupi
  • Učenje za pojačanje
  • Konvolucijske neuronske tkanine
#9
+8
chainD
2017-10-13 12:06:46 UTC
view on stackexchange narkive permalink

Nažalost, još ne mogu objaviti komentar, pa vas molim da me podnesete.Svejedno, nabasao sam na ovu nit rasprave koja me podsjetila na papir koji sam vidio vrlo nedavno.Mislim da bi to moglo zanimati ljude koji ovdje sudjeluju:

AdaNet: Adaptivno strukturno učenje umjetnih neuronskih mreža

Corinna Cortes, Xavier Gonzalvo, Vitaly Kuznetsov, Mehryar Mohri, Scott Yang;Zbornik radova 34. međunarodne konferencije o Strojno učenje, PMLR 70: 874-883, 2017.

Sažetak Predstavljamo novi okvir za analizu i učenje umjetne neuronske mreže.Naš pristup istovremeno i prilagodljivo uči i strukturu mreže kao i njezine težine.The Metodologija se temelji i prati snažna ovisnost o podacima teorijsko učenje jamči, tako da konačna mreža arhitektura se dokazivo prilagođava složenosti bilo kojeg zadanog problema.

#10
+5
Dan Erez
2017-12-15 20:53:22 UTC
view on stackexchange narkive permalink

Htio bih predložiti manje uobičajenu, ali super učinkovitu metodu.

U osnovi možete iskoristiti niz algoritama koji se nazivaju "genetski algoritmi" koji isprobavaju mali podskup potencijalnih opcija (slučajni broj slojeva i čvorova po sloju). Tada ovu populaciju opcija tretira kao "roditelje" koji stvaraju djecu kombinirajući / mutirajući jednog ili više roditelja slično kao što se razvijaju organizmi. Najbolja djeca i neka slučajna ok djeca se čuvaju u svakoj generaciji i tijekom generacija, najsposobniji preživljavaju.

Za ~ 100 ili manje parametara (poput izbora broja slojeva, vrsta slojeva i broja neurona po sloju), ova je metoda super učinkovita. Koristite ga stvaranjem niza potencijalnih mrežnih arhitektura za svaku generaciju i djelomičnim osposobljavanjem dok se ne može procijeniti krivulja učenja (100-10 000 mini serija, obično ovisno o mnogim parametrima). Nakon nekoliko generacija, možda ćete htjeti uzeti u obzir točku u kojoj vlak i provjera valjanosti imaju značajno različitu stopu pogrešaka (prekomjerno prilagođavanje) kao svoju ciljnu funkciju pri odabiru djece. Možda bi bilo dobro koristiti vrlo mali podskup podataka (10-20%) dok ne odaberete konačni model da biste brže došli do zaključka. Također, upotrijebite jedno sjeme za inicijalizaciju mreže da biste pravilno usporedili rezultate.

10-50 generacija trebalo bi donijeti izvrsne rezultate za mrežu pristojne veličine.

Još jedan vrlo zanimljiv način je Bayesova optimizacija koja je također izuzetno učinkovita metoda optimizacije crne kutije za relativno mali broj parametara.https://arxiv.org/pdf/1206.2944.pdf
#11
+4
sapy
2018-05-28 09:02:25 UTC
view on stackexchange narkive permalink

Broj skrivenih slojeva i što mogu postići:

0 - Samo sposobni predstavljati linearne odvojive funkcije ili odluke.

1 - Može aproksimirati bilo koju funkciju koja sadrži kontinuirano preslikavanje iz jednog konačnog prostora u drugi.

2 - Može predstavljati proizvoljnu granicu odluke do proizvoljne točnosti s racionalnim funkcijama aktivacije i može približiti bilo koju glatko mapiranje s bilo kojom točnošću.

Više od 2 - Dodatni slojevi mogu naučiti složene prikaze (vrsta automatskog inženjerstva značajki) za slojeve slojeva.

Molimo izvor (e).- * Recenzent *


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