Per vedere in che modo le reti neurali possono aiutare con i problemi non lineari, iniziamo rappresentando un modello lineare sotto forma di grafico:
Figura 3. Modello lineare come grafico.
Ogni cerchio blu rappresenta una caratteristica di input, mentre il cerchio verde rappresenta la somma ponderata degli input.
Come possiamo modificare questo modello per migliorarne la capacità di gestire gli errori non lineari? problemi generici?
Strati nascosti
Nel modello rappresentato dal grafico seguente, abbiamo aggiunto uno "strato nascosto" di valori intermedi. Ogni nodo giallo nello strato nascosto è una somma ponderata dei valori blu dei nodi di input. L'output è una somma ponderata del nodi.
Figura 4. Grafico di un modello a due livelli.
Questo modello è lineare? Sì, il suo output è ancora una combinazione lineare di i suoi input.
Nel modello rappresentato dal grafico seguente, abbiamo aggiunto un secondo livello di somme ponderate.
Figura 5. Grafico di un modello a tre livelli.
Questo modello è ancora lineare? Sì. Quando esprimi l'output come funzione dell'input e semplificare, si ottiene solo un'altra somma ponderata gli input. Questa somma non modella in modo efficace il problema non lineare nella Figura 2.
Funzioni di attivazione
Per modellare un problema non lineare, possiamo introdurre direttamente una non linearità. Possiamo invia tramite una pipeline ogni nodo di strato nascosto attraverso una funzione non lineare.
Nel modello rappresentato dal grafico seguente, il valore di ciascun nodo Lo strato nascosto 1 viene trasformato da una funzione non lineare prima di essere passato alle somme ponderate del livello successivo. Questa funzione non lineare è chiamata di attivazione/disattivazione.
Figura 6. Grafico di un modello a tre livelli con funzione di attivazione.
Ora che abbiamo aggiunto una funzione di attivazione, l'aggiunta di livelli ha un impatto maggiore. Sovrapporre le non linearità sulle non lineari ci consente di creare un modello molto complicato relazioni tra gli input e gli output previsti. In breve, ogni di livello superiore apprenderà in modo efficace una funzione più complessa e di livello superiore rispetto come input non elaborati. Se vuoi avere un'idea più chiara di come funziona, vedi Ottimo post del blog di Chris Olah.
Funzioni di attivazione comuni
La seguente funzione di attivazione sigmoid converte la somma ponderata in un valore compreso tra 0 e 1.
Ecco un grafico:
Figura 7. Funzione di attivazione sigmoidea.
La seguente funzione di attivazione dell'unità lineare rettificata (o ReLU, per brevi) spesso funziona un po' meglio di una funzione fluido come la funzione sigmoidea, semplificando al contempo il calcolo.
La superiorità della funzione ReLU si basa su risultati empirici, probabilmente basati sulla tecnologia con un intervallo di reattività più utile. La reattività di una sigmoidea diminuisce rapidamente su entrambi i lati.
Figura 8. Funzione di attivazione ReLU.
Di fatto, qualsiasi funzione matematica può svolgere una funzione di attivazione. Supponiamo che \(\sigma\) rappresenta la nostra funzione di attivazione (Relu, funzione sigmoidea o altro). Di conseguenza, il valore di un nodo nella rete è dato dal seguente formula:
Riepilogo
Ora il nostro modello ha tutti i componenti standard di ciò che le persone quando dicono "rete neurale":
- Un insieme di nodi, analoghi ai neuroni, organizzati in strati.
- Un insieme di pesi che rappresentano le connessioni tra ciascuna rete neurale e il livello sottostante. Il livello sottostante può essere un altro strato della rete neurale o qualche altro tipo di strato.
- Un insieme di bias, uno per ogni nodo.
- Una funzione di attivazione che trasforma l'output di ciascun nodo in un livello. Livelli diversi possono avere funzioni di attivazione diverse.
Attenzione: le reti neurali non sono necessariamente sempre migliori di gli incroci di caratteristiche, ma le reti neurali offrono un'alternativa flessibile che funziona bene in molti casi.