Capitolo 1 : Rete neurale artificiale
I sistemi informatici modellati sulle reti neurali biologiche che compongono i cervelli degli animali sono noti come reti neurali artificiali, o ANN in breve. Queste reti sono più spesso indicate come reti neurali o semplicemente NN.
Una ANN è costruita su una rete di unità o nodi interconnessi che vengono indicati come neuroni artificiali. Questi neuroni hanno lo scopo di imitare approssimativamente i neuroni che si trovano in un cervello biologico. Ogni connessione, simile alle sinapsi che si trovano nei cervelli reali, ha la capacità di inviare un segnale ad altri neuroni. Un neurone artificiale è quello che prima riceve segnali, poi analizza quei segnali e poi invia messaggi ad altri neuroni a cui è collegato. Il "segnale" di una connessione è un numero reale, e l'output di ogni neurone è calcolato da una funzione non lineare della somma dei suoi input. Il "segnale" in corrispondenza di una connessione viene definito "segnale" in corrispondenza della connessione. Gli spigoli sono un altro nome per le connessioni. Il peso dei dendriti neuronali e delle connessioni dei bordi spesso cambia in funzione dell'apprendimento continuo. L'intensità del segnale in corrispondenza di una connessione può essere aumentata o diminuita a seconda del peso. È possibile che i neuroni abbiano una soglia e che solo quando il segnale totale supera quella soglia il neurone invii un segnale. Nella maggior parte dei casi, i gruppi di neuroni sono organizzati in strati. È possibile per ogni livello apportare modifiche univoche ai dati che riceve. I segnali si fanno strada dal primo strato, noto come livello di input, allo strato finale, noto come livello di output, forse dopo aver viaggiato attraverso gli strati più di una volta.
L'elaborazione delle istanze, ognuna delle quali ha un "input" e un "output" noti, consente alle reti neurali di apprendere (o essere addestrate) creando connessioni ponderate in base alla probabilità tra i due, che vengono poi memorizzate all'interno della struttura dati della rete stessa. È così che le reti neurali imparano. Il processo di addestramento di una rete neurale utilizzando un esempio esistente spesso comporta il calcolo della differenza tra l'output elaborato della rete (in genere una previsione) e un output di destinazione. Questa operazione viene eseguita per determinare il livello di apprendimento della rete dall'esempio. Questa distinzione è dove sta l'errore. La rete apporterà quindi le modifiche necessarie alle sue associazioni ponderate in conformità con una regola di apprendimento e utilizzando questo valore di errore. L'output generato dalla rete neurale a seguito di modifiche successive diventerà progressivamente simile all'output previsto. Dopo un numero sufficiente di queste modifiche, la formazione può essere terminata a seconda delle condizioni specificate dopo essere stata completata. Questo tipo di apprendimento è indicato come apprendimento supervisionato.
Questo tipo di sistemi "impara" a svolgere compiti pensando a degli esempi, nella maggior parte dei casi senza essere programmati con regole pertinenti alle attività stesse. Ad esempio, nel riconoscimento delle immagini, potrebbero imparare a riconoscere le immagini che contengono gatti analizzando immagini di esempio che sono state etichettate manualmente come "gatto" o "nessun gatto" e quindi utilizzando i risultati per riconoscere i gatti in altre immagini. In questo modo, imparerebbero a identificare le immagini che contengono gatti analizzando le immagini che sono state etichettate manualmente come "gatto" o "nessun gatto". Riescono a farlo nonostante non abbiano alcuna conoscenza precedente sui gatti, come il fatto che i gatti abbiano capelli, code, baffi e facce simili ai gatti. Invece, sviluppano tratti identificativi in modo completamente automatizzato dalle istanze che analizzano.
Furono Warren McCulloch e Walter Pitts a scoprire che i percettroni di base non erano in grado di elaborare il circuito esclusivo-or e che i computer non avevano la capacità di elaborare le reti neurali che erano utili.
Il 1970 vide la pubblicazione dell'approccio generale per la differenziazione automatizzata (AD) di reti concatenate discrete di funzioni differenziabili nidificate che era stato sviluppato da Seppo Linnainmaa. in termini di criteri quali l'identificazione dei segnali stradali (IJCNN 2012).
Le ANN sono state inizialmente concepite come uno sforzo per imitare la struttura del cervello umano al fine di risolvere problemi difficili da risolvere per gli approcci algoritmici tradizionali. Hanno rapidamente spostato la loro attenzione sul miglioramento dei risultati empirici, rinunciando in gran parte agli sforzi per rimanere fedeli alle origini biologiche dei loro prodotti. I neuroni sono collegati tra loro in una varietà di configurazioni diverse, il che consente all'output di alcuni neuroni di diventare l'input di altri neuroni. La rete ha la forma di un grafo diretto e ponderato.
Le reti neurali artificiali (ANN) sono costituite da neuroni artificiali, che sono essenzialmente tratti da reti neuronali biologiche. Ogni neurone artificiale riceve input e genera un singolo output che è in grado di essere distribuito a diversi neuroni aggiuntivi. I valori delle caratteristiche di un campione di dati esterni, ad esempio foto o documenti, possono fungere da input. In alternativa, gli output di altri neuroni possono servire in questa capacità. Il lavoro, come l'identificazione di un elemento in un'immagine, è completato dagli output degli ultimi neuroni di output della rete neurale.
Per determinare qual è l'output del neurone, dobbiamo prima calcolare la somma ponderata di tutti gli input del neurone. Questa somma deve essere calcolata tenendo conto dei pesi delle connessioni che vanno dagli input al neurone. Aggiungeremo un termine di distorsione a questo totale.
Nell'apprendimento profondo, i neuroni sono spesso disposti in numerosi strati, poiché questo tipo di apprendimento enfatizza la complessità. I neuroni in uno strato possono stabilire connessioni solo con altri neuroni nello strato immediatamente precedente e nello strato immediatamente successivo. Il livello che raccoglie i dati dall'esterno è chiamato livello di input. Il livello di output è quello che genera il prodotto completato nella sua interezza. Ci sono almeno uno e forse più strati segreti tra di loro. Esistono anche reti con un singolo livello e reti senza livelli. C'è la possibilità che esistano numerosi modelli di connessione tra i due livelli. Sono in grado di essere "completamente collegati", il che significa che ogni neurone in uno strato è in grado di connettersi a ogni neurone nello strato sopra di esso. Possono essere raggruppati, ovvero quando un gruppo di neuroni in uno strato si collega a un singolo neurone nello strato successivo, riducendo così il numero di neuroni in quello strato. Il pooling è uno dei modi in cui i neuroni possono comunicare tra loro.
Un iperparametro è un tipo di parametro costante, il cui valore è determinato prima dell'inizio del processo di apprendimento. Il processo di apprendimento viene utilizzato per ottenere i valori dei parametri. La velocità di apprendimento, il numero di livelli nascosti e la dimensione del batch sono tutti esempi di iperparametri. È possibile che i valori di alcuni iperparametri siano contingenti ai valori di altri iperparametri. Ad esempio, lo spessore di alcuni strati potrebbe cambiare a seconda della quantità totale di strati.
L'apprendimento è il processo di adattamento della rete per affrontare al meglio un lavoro prendendo in considerazione osservazioni campionarie. L'apprendimento comporta l'apportare modifiche ai pesi (e, in alcuni casi, alle soglie) della rete al fine di ottenere una previsione più accurata. A tal fine, gli errori osservati devono essere ridotti il più possibile. L'apprendimento è considerato completo quando l'esame di ulteriori dati non aiuta a ridurre il tasso di errore in modo significativo. Anche dopo essere stato insegnato, il tasso di errore di solito non diventa completamente zero. Nella maggior parte dei casi, la rete dovrà essere modificata se si determina, dopo aver appreso, che il tasso di errore è troppo alto. Nella pratica effettiva, ciò si ottiene creando una funzione di costo che viene poi valutata a intervalli regolari mentre il sistema sta imparando. Il processo di apprendimento procederà fino a quando l'output del sistema continuerà a diminuire. Il costo è tipicamente caratterizzato come una statistica il cui valore può essere solo indovinato piuttosto che essere determinato con precisione. Poiché gli output sono numeri, il margine di errore tra l'output, che è quasi sicuramente un gatto, e la risposta giusta, che è anche un gatto, è piuttosto piccolo quando il tasso di errore è basso. L'obiettivo dell'apprendimento è quello di ridurre il più possibile il numero totale di discrepanze tra le osservazioni. La stragrande maggioranza dei modelli di apprendimento può essere intesa come un'applicazione diretta della teoria dell'ottimizzazione e della stima statistica.
Il tasso di apprendimento è il fattore che determina l'entità delle azioni correttive che il modello deve eseguire per compensare gli errori in ogni osservazione. L'idea della quantità di moto rende possibile ponderare l'equilibrio tra il gradiente e la variazione precedente in modo tale che la regolazione del peso dipenda, almeno in una certa misura, dalla variazione precedente. Quando la quantità di moto è vicina allo zero, l'enfasi è sul gradiente, mentre quando è vicina a uno, l'enfasi è sul cambiamento più recente.
Sebbene sia possibile definire una funzione di costo in base alle necessità, la selezione di una funzione di costo è tipicamente guidata dalle...