Una prima rete neurale
In questo esercizio, addestreremo la nostra prima piccola rete neurale.
Le reti neurali ci forniranno un modo per imparare i modelli non lineari senza l'uso di incroci di funzionalità esplicite.
Attività 1: il modello fornito fornisce le nostre due funzionalità di input in un singolo neurone. Questo modello apprenderà eventuali non linearità? Eseguila per confermare la tua incertezza.
Attività 2: prova ad aumentare il numero di neuroni nel livello nascosto da 1 a 2 e prova anche a passare da un'attivazione lineare a un'attivazione non lineare come ReLU. Riesci a creare un modello in grado di apprendere le non linearità? Può modellare i dati in modo efficace?
Attività 3: prova ad aumentare il numero di neuroni nel livello nascosto da 2 a 3, utilizzando un'attivazione non lineare come ReLU. È in grado di modellare i dati in modo efficace? In che modo la qualità del modello varia da esecuzione a esecuzione?
Attività 4: continua la sperimentazione aggiungendo o rimuovendo livelli e neuroni nascosti per livello. Puoi anche modificare i tassi di apprendimento, la regolazione e altre impostazioni di apprendimento. Qual è il numero più basso
di neuroni e livelli che puoi utilizzare per ottenere una perdita di test
di 0,177 o inferiore?
L'aumento delle dimensioni del modello migliora l'adattamento o la velocità di convergenza?
Questa modifica cambia la frequenza con cui converge verso un modello efficace? Ad esempio, prova la seguente architettura:
- Primo strato nascosto con 3 neuroni.
- Secondo strato nascosto con 3 neuroni.
- Terzo strato nascosto con 2 neuroni.
(Le risposte vengono visualizzate appena sotto l'esercizio.)
Fai clic sull'icona Più per rispondere a un'attività 1.
L'attivazione è impostata su Lineare, quindi questo modello non può apprendere eventuali non linearità. La perdita è molto alta e noi diciamo che il modello esaurisce i dati.
Fai clic sull'icona Più per rispondere a un'attività 2.
La funzione di attivazione non lineare può apprendere modelli non lineari. Tuttavia, un singolo strato nascosto con 2 neuroni non può riflettere tutte le non linearità in questo set di dati e avrà un'elevata perdita anche senza rumore: non soddisfa i dati. Questi allenamenti non sono deterministici, quindi alcune esecuzioni non apprenderanno un modello efficace, mentre altre faranno un ottimo lavoro.
Il modello migliore potrebbe non avere la forma prevista.
Fai clic sull'icona Più per rispondere a un'attività 3.
Questo esercizio fa emergere la natura non deterministica di Playground. Un singolo strato nascosto con 3 neuroni è sufficiente per modellare il set di dati (assenza di rumore), ma non tutte le esecuzioni convergono a un buon modello.
3 neuroni sono sufficienti perché la funzione XOR può essere espressa come una combinazione di 3 semipiani (attivazione ReLU). Puoi vedere le immagini dei neuroni, che mostrano l'output dei singoli neuroni. In un buon modello
con 3 neuroni e attivazione ReLU, ci sarà 1 immagine con una linea quasi
verticale, che rileva che X1 è positivo (o negativo; il segno può
essere cambiato), 1 immagine con una linea quasi orizzontale, rileva il segno di X2 e 1 immagine con una linea diagonale, rilevando la loro
interazione.
Tuttavia, non tutte le esecuzioni convergono a un buon modello. Alcune esecuzioni non sono migliori di un modello con due neuroni e in questi casi puoi vedere neuroni duplicati.
Fai clic sull'icona Più per rispondere a un'attività 4.
Un singolo livello nascosto con 3 neuroni può modellare i dati, ma non vi è ridondanza, quindi su molte esecuzioni perderà effettivamente un neurone e non apprenderà un modello valido. Un singolo livello con più di 3 neuroni ha una ridondanza maggiore e, pertanto, è più probabile che converga in un buon modello.
Come abbiamo visto, un singolo livello nascosto con soli 2 neuroni non è in grado di modellare bene i dati. Se provi a farlo, puoi vedere che tutti gli elementi nel livello di output possono essere solo forme composte dalle righe di questi due nodi. In questo caso, una rete più profonda può modellare il set di dati meglio del primo strato nascosto: i singoli neuroni nel secondo strato possono modellare forme più complesse, come il quadrante in alto a destra, combinando i neuroni nel primo strato. Sebbene l'aggiunta del secondo livello nascosto possa ancora modellare il set di dati meglio del primo livello nascosto, potrebbe avere più senso aggiungere altri nodi al primo livello per consentire a più righe di far parte del kit da cui il secondo livello crea le sue forme.
Tuttavia, un modello con 1 neurone nel primo strato nascosto non può imparare un buon modello indipendentemente dalla profondità. Questo perché l'output del primo strato varia solo lungo una dimensione (di solito una linea diagonale), il che non è sufficiente per modellare bene questo set di dati. I livelli successivi non possono compensare questo, non importa quanto complesso; le informazioni nei dati di input sono perdute in modo irreversibile.
E se invece di provare a creare una rete di piccole dimensioni, avessimo molti livelli con molti neuroni per un problema semplice come questo? Ebbene, come abbiamo visto, il primo strato avrà la possibilità di provare molti pendii di linea diversi. Il secondo livello avrà la capacità di accumularli in molte forme diverse, con molte forme in basso attraverso i livelli successivi.
Se consenti al modello di prendere in considerazione così tante forme diverse attraverso così tanti neuroni nascosti differenti, hai creato spazio a sufficienza per consentire al modello di iniziare facilmente a sovradimensionare il rumore nel set di addestramento, permettendo a queste forme complesse di corrispondere alle fobie dei dati di addestramento piuttosto che alla verità di base generalizzata. In questo esempio, i modelli più grandi possono avere confini complicati da corrispondere ai punti dati esatti. In casi estremi, un modello di grandi dimensioni potrebbe apprendere un'isola intorno a un singolo punto di rumore, denominato memorizzazione dei dati. Consentendo a questo modello di essere molto più grande, noterai che il rendimento è spesso peggiore rispetto a quello del modello più semplice con un numero sufficiente di neuroni per risolvere il problema.
Inizializzazione delle reti neurali
Questo esercizio utilizza di nuovo i dati XOR, ma tiene conto della ripetibilità dell'addestramento di Neural Nets e dell'importanza dell'inizializzazione.
Attività 1: esegui il modello come indicato quattro o cinque volte. Prima di ogni prova, premi il pulsante Reimposta la rete per ricevere una nuova inizializzazione casuale.
Il pulsante Reimposta la rete è la freccia circolare di reimpostazione a sinistra del pulsante Gioca. Lascia eseguire ogni prova per almeno 500 passaggi
per garantire la convergenza. In quale forma converge ogni output del modello?
Che cosa dice riguardo al ruolo di inizializzazione nell'ottimizzazione non conv.?
Attività 2: prova a rendere il modello un po' più complesso aggiungendo un livello e un paio di nodi in più. Ripeti le prove dall'attività 1. Questo migliora la stabilità dei risultati?
(Le risposte vengono visualizzate appena sotto l'esercizio.)
Fai clic sull'icona Più per rispondere a un'attività 1.
Il modello appreso aveva forme diverse a ogni esecuzione. La perdita di test convergente variava quasi il doppio rispetto al più basso.
Fai clic sull'icona Più per rispondere a un'attività 2.
L'aggiunta del livello e dei nodi extra ha prodotto risultati più ripetibili.
A ogni esecuzione, il modello risultante era più o meno uguale. Inoltre,
la perdita di test convergente ha mostrato una minore varianza tra le esecuzioni.
Spirale a rete neurale
Questo set di dati è una spirale rumorosa. Ovviamente, in questo caso non è possibile creare un modello lineare, ma anche le intersezioni delle caratteristiche definite manualmente possono essere difficili da costruire.
Attività 1: addestra il miglior modello possibile utilizzando solo X1 e
X2. Puoi aggiungere o rimuovere livelli e neuroni, modificare le impostazioni di apprendimento, come la frequenza di apprendimento, la frequenza di regolarizzazione e le dimensioni del batch. Qual è la migliore perdita di test che puoi ricevere? Quanto è fluida la superficie di output del modello?
Attività 2: anche con Neural Nets, alcune risorse tecniche sono spesso necessarie per ottenere prestazioni ottimali. Prova ad aggiungere ulteriori funzionalità cross-product o altre trasformazioni come sin(X1) e sin(X2). Puoi scegliere un modello migliore? La superficie di output del modello è più uniforme?
(Le risposte vengono visualizzate appena sotto l'esercizio.)
Fai clic sull'icona Più per possibili risposte.
Il seguente video illustra come scegliere gli iperparametri in Playground per addestrare un modello per i dati a spirale che riduce al minimo la perdita di test.
Soluzione a spirale per rete neurale