Ci sono una serie di domande da porre:
- hai il numero appropriato di neuroni in ogni strato?
- stai usando i tipi appropriati di funzioni di trasferimento?
- stai usando il tipo appropriato di algoritmo di apprendimento
- hai una dimensione del campione abbastanza grande?
- puoi confermare che i tuoi campioni hanno i giusti rapporti tra loro per essere informativi? (non ridondante, di dimensione pertinente, ecc ...)
Cosa puoi dare in termini di effemeridi? Puoi dirci qualcosa sulla natura dei dati?
Potresti creare un albero a gradiente di reti neurali.
Hai chiesto cosa succede se ti fermi presto.
Puoi provare te stesso. Esegui 300x dove inizi con pesi inizializzati casuali, quindi fermati a un numero specificato di iterazioni, diciamo 100. A quel punto calcola l'errore dell'insieme, l'errore del sottoinsieme di addestramento e l'errore del set di test. Ripetere. Dopo che hai 300 valori per dirti qual è l'errore, puoi avere un'idea della distribuzione dell'errore dati 100 iterazioni di apprendimento. Se lo desideri, puoi quindi campionare quella distribuzione su diversi altri valori dell'apprendimento. Suggerisco 200, 500 e 1000 iterazioni. Questo ti darà un'idea di come il tuo SNR cambi nel tempo. Un diagramma del conteggio SNR vs iterazione può darti un'idea di "scogliere" o "abbastanza buono". A volte ci sono scogliere in cui l'errore collassa. A volte l'errore è accettabile a quel punto.
Ci vogliono dati "relativamente semplici" o fortuna "abbastanza buona" perché il tuo sistema converga costantemente in meno di 100 iterazioni. Entrambi non riguardano la ripetibilità né sono generalizzabili.
Perché stai pensando in termini di pesi convergenti e non errore al di sotto di una determinata soglia. Hai mai sentito parlare di un paradosso del voto? ( link ) Quando hai interazioni cicliche nel tuo sistema (come il feedback nelle reti neurali), allora puoi avere paradossi di voto - cambiamenti accoppiati. Non so se i pesi da soli siano un indicatore sufficiente per la convergenza della rete.
Puoi pensare ai pesi come a uno spazio. Ha più di 3 dimensioni, ma è ancora uno spazio. Nel "centroide" di quello spazio c'è la tua regione "più adatta". Lontano dal centroide è una misura meno adatta. Puoi pensare all'attuale impostazione dei tuoi pesi come a un singolo punto in quello spazio.
Ora non sai dove sia effettivamente il "buono". Quello che hai è una "pendenza" locale. È possibile eseguire la discesa gradiente verso il "migliore" locale dato dove si trova il punto in questo momento. Non ti dice "universale" meglio, ma locale è meglio di niente.
Quindi inizi a iterare, camminando in discesa verso quella valle di bellezza. Iterate fino a quando pensate di aver finito. Forse il valore dei tuoi pesi è grande. Forse rimbalzano dappertutto. Forse il calcolo sta "impiegando troppo tempo". Vuoi essere fatto.
Quindi, come fai a sapere se dove sei è "abbastanza buono"?
Ecco un breve test che potresti fare:
Prendi 30 sottoinsiemi casuali uniformi di dati (come una percentuale di dati ciascuno) e riqualifica la rete su di essi. Dovrebbe essere molto più veloce. Osserva quanto tempo impiegano a convergere e confrontarlo con la storia di convergenza del grande set. Testare l'errore della rete per tutti i dati su questi sottoinsiemi e vedere come quella distribuzione di errori si confronta con il tuo grande errore. Ora aumenta le dimensioni del sottoinsieme fino a forse il 5% dei tuoi dati e ripeti. Guarda cosa ti insegna.
Questa è una variazione sull'ottimizzazione dello sciame di particelle (vedi riferimento) modellata su come le api mellifere prendono decisioni basate sullo scouting.
Hai chiesto cosa succede se i pesi non convergono.
Le reti neurali sono uno strumento. Non sono l'unico strumento. Ce ne sono altri Vorrei usare uno di loro.
Lavoro in termini di criteri informativi, quindi guardo sia i pesi (conteggio dei parametri) sia l'errore. Potresti provare uno di quelli.
Esistono alcuni tipi di preelaborazione che possono essere utili. Centra e scala. Ruota usando i componenti principali. Se osservi gli autovalori nei componenti principali, puoi utilizzare le regole del diagramma skree per stimare la dimensione dei tuoi dati. Ridurre la dimensione può migliorare la convergenza. Se conosci qualcosa sulla "fisica sottostante", puoi lisciare o filtrare i dati per rimuovere il rumore. A volte la convergenza riguarda il rumore nel sistema.
Trovo interessante l'idea del rilevamento compresso . Può consentire un sottocampionamento radicale di alcuni sistemi senza perdita di generalizzazione. Vorrei esaminare alcune statistiche ricampionate bootstrap e le distribuzioni dei tuoi dati per determinare se ea quale livello di sottocampionamento l'insieme di addestramento diventa rappresentativo. Questo ti dà una misura della "salute" dei tuoi dati.
A volte è una buona cosa non convergere
Hai mai sentito parlare di un paradosso del voto? Potresti pensarlo come un cugino di grado superiore in un vicolo cieco a due vie. È un ciclo. In un paradosso del voto di 2 persone la prima persona vuole il candidato "A" mentre la seconda vuole il candidato "B" (o non-A o simile). La parte importante è che puoi pensarlo come un ciclo.
I loop sono importanti nelle reti neurali. Risposta. Ricorsione. Ha reso il percettrone in grado di risolvere problemi simili a XOR. Crea loop e, a volte, i loop possono agire come il paradosso del voto, dove continueranno a cambiare peso se avessi infinite iterazioni. Non sono destinati a convergere perché non è il peso individuale che conta, ma l'interazione dei pesi nel circuito.
Nota:
L'uso di solo 500 iterazioni può essere un problema. Ho avuto NN in cui 10.000 iterazioni erano a malapena sufficienti. Il numero di iterazioni da "abbastanza" dipende, come ho già indicato, da dati, topologia NN, funzioni di trasferimento dei nodi, funzione di apprendimento / addestramento e persino hardware del computer. Devi avere una buona comprensione di come interagiscono tutti con il conteggio delle iterazioni prima di dire che ci sono state "abbastanza" o "troppe" iterazioni. Altre considerazioni come il tempo, il budget e cosa vuoi fare con la NN quando hai finito la formazione dovrebbero essere prese in considerazione.
Chen, RB, Chang, SP, Wang, W., & Wong, WK, (2011, settembre). Disegni sperimentali ottimali tramite i metodi di ottimizzazione dello sciame di particelle (prestampa), recuperati il 25 marzo 2012 da http://www.math.ntu.edu.tw/~mathlib/preprint/2011-03.pdf