Le reti neurali sembrano piuttosto fantasiose. Il neurale ti fa pensare al cervello. Che sono complicati. Ma se hai familiarità con la regressione lineare, hai gli elementi necessari per capire cosa fa una rete neurale.
Le reti neurali (NN) sono generalmente classificate in Apprendimento automatico supervisionato (sebbene esistano tipi di NN che possono fare cose straordinarie senza dati etichettati e #AutoEncoder). Prendono una serie di input (un insieme di variabili che desideri utilizzare per prevedere qualcosa) e prevedono un risultato.
Il che... assomiglia molto alla regressione lineare.
Nella regressione lineare, prendiamo uno o più input e prevediamo un output continuo utilizzando la formula
Dove Y è ciò che vuoi prevedere e il
sono i tuoi input. Ad esempio, potremmo voler prevedere la quantità di denaro che spendi ogni anno per i videogiochi in base a età, sesso, stipendio e affitto.

Poi lasciamo la regressione Imparare i valori dei coefficienti (potrebbe sembrare un modo stupido per dirlo, ma restate con me).
Noi no raccontare la regressione quali sono i coefficienti, invece le diciamo noi come fare Imparare loro. Nel caso semplice, spesso chiediamo alla regressione di utilizzare il metodo dei minimi quadrati Imparare quali sono i coefficienti ottimali.
In sostanza diamo la regressione a struttura per il modello e a metodo per apprendere i valori nel modello. Quindi, lo mettiamo sulla buona strada per imparare.
Quando costruiremo una rete neurale, sceglieremo anche a struttura e un metodo per l'apprendimento, ma spesso avranno un aspetto leggermente diverso dalla struttura e dal metodo che utilizziamo per la regressione.
Un esempio di regressione
STRUTTURA
Nodi. Utilizzo delle reti neurali nodi come contenitori per contenere valori. Questi nodi hanno connessioni fra loro. Quando sono disegnati graficamente, sembrano un mazzo di lecca-lecca affiancati.
Le connessioni rappresentano calcoli matematici applicati ai valori di un nodo mentre utilizzano la connessione per viaggiare al successivo.
Se volessimo costruire la regressione dei nostri videogiochi come una rete neurale, potremmo assolutamente farlo! La sua struttura sarebbe simile a questa:
Strati. Il nostro videogioco NN ha due livelli: an ingresso livello in cui diamo alla NN le nostre variabili predittive età, sesso, stipendio e affitto e un produzione strato in cui otteniamo la nostra previsione dal NN.
Le connessioni tra i due strati contengono dei pesi, possiamo chiamarli così M , n, pag E K , che applicheremo a ciascuna variabile mentre passa dal livello di input al livello di output. Quindi l'età verrà moltiplicata per M , sesso di N e così via, e tutti questi prodotti verranno aggiunti insieme nel nodo di output.
Anche le reti neurali aggiungono a pregiudizio (B) al valore nel nodo di output. Il bias è semplicemente uno scalare (un numero regolare come 1, -7 o 42).
In base alla struttura della rete neurale che abbiamo costruito, il nodo di output ci darebbe un risultato basato su questa formula:
Che è la stessa della formula di regressione che abbiamo visto sopra.
METODO DI APPRENDIMENTO
Quando eseguiamo una regressione lineare, dobbiamo trovare/calcolare i valori dei nostri coefficienti (b,m,n,p, E K ) dopo aver specificato la struttura del modello. Spesso utilizziamo il metodo dei minimi quadrati per trovare i nostri coefficienti.
In breve, i minimi quadrati trovano i coefficienti che minimizzano la somma degli errori quadrati tra la previsione del modello e i dati effettivi.
In termini matematici, minimizziamo questa funzione:
Dove
è il valore effettivo di un punto dati e
è la previsione del modello per quel punto dati.
Perdita. Se ne avessimo voglia, potremmo chiamare questa funzione nostra funzione di perdita . Ed è esattamente così che si chiama quando si lavora con le reti neurali. Le funzioni di perdita ci forniscono una misura numerica di come BENE il nostro modello sta facendo. Se la perdita è piccola, le previsioni sono piuttosto accurate. Se è grande, non fa così caldo. Il nostro obiettivo nella costruzione di un buon modello è sempre quello di minimizzare la nostra funzione di perdita (e quindi massimizzare le prestazioni del modello).
E mentre l'errore quadratico medio (the ex) dai minimi quadrati) è una buona scelta per molti modelli, ci sono molte altre scelte. Le reti neurali possono avere tutti i tipi di strutture e diversi dati/strutture potrebbero trarre vantaggio da altri tipi di funzioni di perdita.
"Apprendimento." Sappiamo che vogliamo minimizzare la nostra funzione di perdita e disponiamo dei nostri dati e della struttura che abbiamo utilizzato per costruire la nostra rete neurale, ma in realtà dobbiamo *fare* la minimizzazione. È qui che la nostra rete neurale inizierà a deviare dal nostro modello di regressione.
Nelle regressioni più semplici esiste un modo matematico abbastanza semplice e veloce per risolvere i nostri coefficienti esatti utilizzando l'algebra lineare, la geometria e l'algebra regolare. Ma le reti neurali adottano un approccio leggermente diverso. Le reti neurali utilizzano spesso approcci iterativi per trovare valori che minimizzino la funzione di perdita (e ottimizzino il nostro modello). In sostanza, cerchiamo di fare un passo avanti verso la risposta “migliore” in ogni fase della nostra iterazione.
Molti strumenti ed esercitazioni utilizzano una qualche forma di Discesa gradiente . Non spenderò molto tempo sui dettagli tecnici della tradizionale Gradient Descent perché non è ciò che utilizza JMP, ma l'idea generale è che esista un pendenza della funzione di perdita (si pensi a una mappa con montagne e valli) dove i punti più alti rappresentano prestazioni del modello inferiori e i punti più bassi rappresentano prestazioni del modello buone, anche ottimali.
Puoi immaginare la discesa in pendenza come un escursionista che si trova su questa mappa cercando di raggiungere il punto più basso possibile. Per ogni passo che fanno, si guardano intorno e capiscono quale direzione ha la discesa più ripida e fanno il passo in quella direzione. Alla fine, finiscono ad un punto basso. Ritornando alla nostra analogia con l’escursione, il punto più basso rappresenta un insieme di parametri (come i nostri coefficienti e bias) in cui la funzione di perdita è ridotta al minimo e quindi il nostro modello sta andando piuttosto bene!
In JMP , per ottimizzare una NN viene utilizzata una tecnica leggermente diversa. Invece di usare la tipica Discesa Gradiente metodi, JMP utilizza qualcosa chiamato GGG algoritmo (che non sta per B eg F amichevole G iant S , mi dispiace per i fan di Roald Dahl). L'algoritmo BFGS aiuta a adottare misure iterative per ottimizzare il modello, in modo simile a Gradient Descent, ma utilizza una matematica diversa per farlo.
Invece di aspettare che l'algoritmo trovi un punto minimo finale (una delle valli nel gradiente), JMP decide che un modello è ottimizzato esaminando un set di validazione (questo è il motivo per cui JMP ne richiederà uno o offrirà una parte di i tuoi dati per la convalida automatica, quando costruisci una NN). Il set di validazione è costituito da dati che NON vengono utilizzati per ottimizzare il modello.
JMP testerà il modello attuale sul set di convalida. Una volta che l'esecuzione di più "passi" verso il punto più basso non migliora in modo significativo le prestazioni del modello sul set di convalida, JMP considera il modello ottimizzato. Testare il modello su nuovi dati che non sono stati utilizzati per creare il modello ci aiuta a capire come il modello che stiamo creando potrebbe funzionare sui dati futuri. Questo metodo viene chiamato “Arresto anticipato” perché ci permette di smettere prima di compiere passi verso il punto più basso. Questo spesso ci consente di ottimizzare rapidamente il nostro modello.
Indipendentemente dal metodo utilizzato, una volta considerato sufficientemente ottimizzato il modello, ora disponiamo di tutte le stime per i parametri nella nostra rete neurale! Finalmente abbiamo un modello funzionante che possiamo utilizzare per prevedere qualcosa.
Una struttura più complessa
Ora conosci le basi su come sono le reti neurali strutturato , e come loro Imparare . Ma non tutte le reti neurali devono assomigliare a quella di regressione che abbiamo fatto sopra. Le reti neurali ci consentono di essere molto più flessibili quando costruiamo la loro struttura.
Strati multipli . Una cosa che possiamo fare con le reti neurali è aggiungere più livelli. Nel nostro esempio di regressione, avevamo un livello di input direttamente collegato al nostro livello di output. Ma possiamo inserire uno strato aggiuntivo tra di loro e collegare ogni strato a quello successivo.
Ciò significa che i dati di input passeranno attraverso più connessioni (e quindi più calcoli) prima di raggiungere lo strato di output. Più livelli e connessioni hai, più complessa è la funzione che puoi approssimare.
Quando costruiamo modelli, lo facciamo essenzialmente perché crediamo che ci sia una relazione tra i nostri input e i nostri output. C'è qualche funzione matematica, che può spiegare come trasformare tutti i valori di input in valori di output. Come indovinare la quantità di denaro spesa per i videogiochi in base a età, sesso, stipendio e affitto.
Ci auguriamo che i modelli che costruiamo (li chiameremo f*(x) ) sono molto vicini a (o approssimativi) f(x) . Ma f(x) potrebbe essere un modello piuttosto complicato. Potrebbe anche non essere lineare *gasp*! I livelli aggiuntivi (e alcuni altri trucchi di cui parleremo tra un secondo) consentono al modello che creiamo di essere più complesso. Se f*(x) è anche complesso, quindi abbiamo maggiori possibilità di creare un modello che si avvicini a f(x) .
Il numero di nodi nei livelli di input e output è predeterminato. Il livello di input ha un nodo per ogni variabile (o funzionalità, come spesso la chiamiamo nell'apprendimento automatico) e il livello di output ha un nodo per ogni numero che desideri prevedere. Ma quando inizi ad aggiungere più livelli, chiamati livelli nascosti, puoi scegliere un numero qualsiasi di nodi. A questo punto della storia delle reti neurali, è più un'arte che una scienza. Esistono buone regole pratiche su quanti nodi scegliere per ciascuno dei nostri livelli nascosti (come diminuire lentamente il numero di nodi in ciascun livello), ma non esiste una risposta esatta.
Funzioni di attivazione. OK, torniamo al mio commento su come alcuni modelli non sono lineari (*sussulto di nuovo*). Anche le reti neurali impiegano funzioni di attivazione in ciascuno dei loro nodi per consentire ai modelli che creiamo di essere non lineari.
JMP Pro offre tre opzioni per le funzioni di attivazione: TanH, Lineare e Gaussiana. Nel nostro modello di regressione, usavamo “segretamente” funzioni di attivazione lineare. Le funzioni di attivazione portano l'input nel nodo ed eseguono qualche tipo di trasformazione su di esso prima di passarlo al livello successivo. UN lineare l'attivazione (in rosso) prende un valore e lo restituisce invariato, che è esattamente ciò che stavamo facendo nella nostra semplice regressione NN sopra.
Ma non dobbiamo lasciarlo invariato. IL TanH l'attivazione (in blu) è un tipo di attivazione sigmoidea (il che significa che la sua funzione assomiglia a una S allungata). È utile perché accetta qualsiasi input e lo mappa su un valore compreso tra -1 e 1. I grandi valori negativi verranno trasformati in valori vicini a -1 e i grandi valori positivi vicini a 1. Spesso è molto utile quando il tuo modello prevede categorie (ad esempio se qualcuno andrà in default o meno su un prestito) piuttosto che un output continuo.
UN gaussiano la funzione di attivazione (verde) accetta valori estremi (alto o basso) e restituisce valori vicini a 0. Per valori meno estremi, restituirà valori vicini a uno.
Se utilizziamo solo attivazioni lineari, il modello che creiamo non potrà che essere lineare. Ma, se utilizziamo funzioni di attivazione non lineari, ora possiamo creare modelli non lineari!
JMP Pro ti consente di creare reti neurali con un massimo di 2 livelli e ti consente di scegliere diverse funzioni di attivazione per ciascun livello. Utilizzando diversi numeri di strati, nodi e diverse funzioni di attivazione possiamo creare un numero enorme di strutture per una rete neurale. Puoi anche utilizzare le reti neurali per prevedere le categorie anziché un valore continuo.
JMP
Per creare una rete neurale in JMP, vai a Analizza>Modellazione predittiva>Neurale . Una volta aperta la piattaforma neurale, puoi scegliere gli input e gli output trascinandoli rispettivamente nelle caselle X e Y.
Si aprirà la finestra Lancio del modello in cui puoi specificare quanti nodi desideri nei due livelli nascosti e quali tipi di funzioni di attivazione desideri utilizzare.
Una volta fatto clic Andare , JMP costruirà la tua rete neurale e creerà una tabella di misure delle prestazioni del modello (come R^2 o RMSE per output continui). È inoltre possibile tracciare i valori effettivi in base ai valori previsti facendo clic sul triangolo rosso e selezionando Traccia il valore effettivo rispetto a quello previsto . Allo stesso modo, possiamo tracciare i nostri valori residui facendo clic sul triangolo rosso e selezionando Traccia residuo in base alla previsione . Puoi anche andare al menu del triangolo rosso e selezionare Profilatore per ottenere il Prediction Profiler, che ti mostrerà di più su ciò che sta realmente accadendo nella rete neurale. Niente più scatole nere!

Conclusione
Le reti neurali sono molto divertenti e sembra bello dire alle persone che ne stai utilizzando una. Ma se guardi alla loro vera natura, non lo sono COSÌ diverso dalla semplice regressione lineare. In entrambi i casi, dobbiamo specificare a struttura e un metodo di apprendimento per ottenere un modello funzionante e ottimizzato. Reti neurali Fare ci consentono di modellare strutture più complesse rispetto alla semplice regressione lineare, quindi sono spesso utili quando pensiamo che la relazione tra i nostri input e i nostri output sia complessa.
Livelli extra e funzioni di attivazione ci permettono di giocare con la struttura della nostra rete, e sono solo l'inizio! Possiamo prevedere risultati categorici, risultati multipli continui, potremmo avere cinque strati o 10! Ci sono funzionalità ancora più interessanti che possiamo applicare alle reti neurali (ad esempio, Dropout o altre funzioni di attivazione che non abbiamo trattato qui), ma ora che conosci le nozioni di base, puoi esplorare tutte queste cose con un po' più sicurezza.