Come configurare smartphone e PC. Portale informativo
  • casa
  • Windows 7, XP
  • Le reti neurali funzionano. In parole semplici sul complesso: cosa sono le reti neurali

Le reti neurali funzionano. In parole semplici sul complesso: cosa sono le reti neurali

Intelligenza artificiale, reti neurali, apprendimento automatico: cosa significano veramente tutti questi concetti popolari? Per la maggior parte delle persone non iniziate, come me stesso, sono sempre sembrate qualcosa di fantastico, ma in realtà la loro essenza sta in superficie. Per molto tempo ho avuto l'idea di scrivere in un linguaggio semplice sulle reti neurali artificiali. Impara tu stesso e racconta agli altri cos'è questa tecnologia, come funziona, considera la sua storia e le sue prospettive. In questo articolo, ho cercato di non entrare nella giungla, ma di raccontare in modo semplice e popolare questa promettente direzione nel mondo delle alte tecnologie.

Intelligenza artificiale, reti neurali, apprendimento automatico: cosa significano veramente tutti questi concetti popolari? Per la maggior parte delle persone non iniziate, come me stesso, sono sempre sembrate qualcosa di fantastico, ma in realtà la loro essenza sta in superficie. Per molto tempo ho avuto l'idea di scrivere in un linguaggio semplice sulle reti neurali artificiali. Impara tu stesso e racconta agli altri cos'è questa tecnologia, come funziona, considera la sua storia e le sue prospettive. In questo articolo, ho cercato di non entrare nella giungla, ma di raccontare in modo semplice e popolare questa promettente direzione nel mondo delle alte tecnologie.

Un po' di storia

Per la prima volta, il concetto di reti neurali artificiali (ANN) è sorto durante il tentativo di simulare i processi del cervello. La prima grande svolta in questo settore può essere considerata la creazione del modello di rete neurale McCulloch-Pitts nel 1943. Gli scienziati hanno prima sviluppato un modello di neurone artificiale. Hanno anche proposto la costruzione di una rete di questi elementi per eseguire operazioni logiche. Ma soprattutto, gli scienziati hanno dimostrato che una rete del genere è in grado di apprendere.

Il successivo importante passo fu lo sviluppo da parte di Donald Hebb del primo algoritmo per il calcolo della ANN nel 1949, che divenne fondamentale per i decenni successivi. Nel 1958, Frank Rosenblatt sviluppò il parceptron, un sistema che imita i processi del cervello. Un tempo la tecnologia non aveva analoghi ed è ancora fondamentale nelle reti neurali. Nel 1986, praticamente contemporaneamente, indipendentemente l'uno dall'altro, scienziati americani e sovietici migliorarono significativamente il metodo fondamentale di insegnamento del perceptron multistrato. Nel 2007, le reti neurali hanno subito una rinascita. L'informatico britannico Jeffrey Hinton ha aperto la strada a un algoritmo di deep learning per reti neurali multistrato, che ora è, ad esempio, utilizzato per far funzionare le auto a guida autonoma.

Brevemente sulla cosa principale

Nel senso generale della parola, le reti neurali sono modelli matematici che funzionano secondo il principio delle reti di cellule nervose in un organismo animale. Le ANN possono essere implementate sia in soluzioni programmabili che hardware. Per facilità di percezione, un neurone può essere immaginato come una determinata cellula, che ha molti fori di input e un foro di output. Il numero di segnali in entrata che vengono formati in quelli in uscita determina l'algoritmo di calcolo. Ad ogni input di un neurone vengono forniti valori effettivi, che vengono poi propagati lungo le connessioni interneuronali (sinossi). Le sinapsi hanno un parametro: il peso, a causa del quale le informazioni di input cambiano quando si spostano da un neurone all'altro. Il modo più semplice per immaginare come funzionano le reti neurali può essere rappresentato dall'esempio della miscelazione dei colori. I neuroni blu, verde e rosso hanno pesi diversi. L'informazione di quel neurone, il cui peso sarà più dominante nel neurone successivo.

La stessa rete neurale è un sistema di molti di questi neuroni (processori). Individualmente, questi processori sono abbastanza semplici (molto più semplici di un processore per personal computer), ma quando sono collegati a un sistema di grandi dimensioni, i neuroni sono in grado di eseguire compiti molto complessi.

A seconda dell'area di applicazione, una rete neurale può essere interpretata in modi diversi. Ad esempio, dal punto di vista del machine learning, una ANN è un metodo di riconoscimento di pattern. Da un punto di vista matematico, questo è un problema multiparametrico. Dal punto di vista della cibernetica, è un modello di controllo adattivo della robotica. Per l'intelligenza artificiale, la ANN è un componente fondamentale per modellare l'intelligenza naturale utilizzando algoritmi di calcolo.

Il principale vantaggio delle reti neurali rispetto agli algoritmi di calcolo convenzionali è la loro capacità di apprendere. Nel senso generale del termine, l'apprendimento consiste nel trovare i corretti coefficienti di accoppiamento tra neuroni, nonché nel generalizzare i dati e nell'identificare complesse dipendenze tra segnali di ingresso e di uscita. Infatti, un training di successo di una rete neurale significa che il sistema sarà in grado di identificare il risultato corretto sulla base di dati non presenti nel training set.

La situazione di oggi

E non importa quanto promettente sarebbe questa tecnologia, finora le ANN sono ancora molto lontane dalle capacità del cervello e del pensiero umani. Tuttavia, le reti neurali sono già utilizzate in molte aree dell'attività umana. Finora, non sono in grado di prendere decisioni altamente intellettuali, ma sono in grado di sostituire una persona dove prima era necessaria. Tra le numerose aree di applicazione delle ANN si possono notare: la creazione di sistemi di autoapprendimento dei processi produttivi, veicoli senza pilota, sistemi di riconoscimento delle immagini, sistemi di sicurezza intelligenti, robotica, sistemi di monitoraggio della qualità, interfacce di interazione vocale, sistemi di analisi e molto altro. L'uso così diffuso delle reti neurali è, tra le altre cose, dovuto all'emergere di vari modi per accelerare l'apprendimento delle RNA.

Oggi il mercato delle reti neurali è enorme: miliardi e miliardi di dollari. Come dimostra la pratica, la maggior parte delle tecnologie delle reti neurali in tutto il mondo differiscono poco l'una dall'altra. Tuttavia, l'uso delle reti neurali è un esercizio molto costoso, che nella maggior parte dei casi può essere consentito solo dalle grandi aziende. Per lo sviluppo, la formazione e il test delle reti neurali è necessaria una grande potenza di calcolo, è ovvio che i grandi attori del mercato IT ne hanno abbastanza. Tra le principali aziende che guidano lo sviluppo in questo settore ci sono Google DeepMind, Microsoft Research, IBM, Facebook e Baidu.

Certo, tutto questo va bene: le reti neurali si stanno sviluppando, il mercato è in crescita, ma finora il compito principale non è stato risolto. L'umanità non è riuscita a creare una tecnologia che sia anche vicina alle capacità del cervello umano. Diamo un'occhiata alle principali differenze tra il cervello umano e le reti neurali artificiali.

Perché le reti neurali sono ancora lontane dal cervello umano?

La differenza più importante che cambia radicalmente il principio e l'efficienza del sistema è la diversa trasmissione del segnale nelle reti neurali artificiali e nella rete biologica dei neuroni. Il fatto è che nella RNA i neuroni trasmettono valori che sono valori reali, cioè numeri. Nel cervello umano vengono trasmessi impulsi con un'ampiezza fissa e questi impulsi sono quasi istantanei. Quindi, ci sono una serie di vantaggi per la rete umana di neuroni.

Primo, le linee di comunicazione nel cervello sono molto più efficienti ed economiche rispetto alle RNA. In secondo luogo, il circuito a impulsi garantisce la semplicità dell'implementazione della tecnologia: è sufficiente utilizzare circuiti analogici invece di complessi meccanismi computazionali. Infine, le reti di impulsi sono protette dalle interferenze acustiche. I numeri validi sono soggetti a disturbi, il che aumenta la probabilità di errori.

Risultato

Naturalmente, nell'ultimo decennio, c'è stato un vero e proprio boom nello sviluppo delle reti neurali. Ciò è dovuto principalmente al fatto che il processo di apprendimento della ANN è diventato molto più rapido e semplice. Inoltre, le cosiddette reti neurali "pre-addestrate" hanno iniziato a essere sviluppate attivamente, il che può accelerare significativamente il processo di implementazione della tecnologia. E se è troppo presto per dire se un giorno le reti neurali saranno in grado di riprodurre pienamente le capacità del cervello umano, la probabilità che nel prossimo decennio le RNA saranno in grado di sostituire gli umani in un quarto delle professioni esistenti sta diventando sempre più come la verità.

Per chi vuole saperne di più

  • La grande guerra neurale: cosa sta davvero facendo Google?
  • Come i computer cognitivi possono cambiare il nostro futuro
Algoritmi, apprendimento automatico

Benvenuti nella seconda parte del tutorial sulla rete neurale. Voglio solo scusarmi con tutti quelli che hanno aspettato la seconda parte molto prima. Per qualche ragione, ho dovuto rimandare la scrittura. In effetti, non mi aspettavo che il primo articolo avrebbe avuto una tale richiesta e che così tante persone sarebbero state interessate a questo argomento. Tenendo conto dei tuoi commenti, cercherò di fornirti quante più informazioni possibili e allo stesso tempo di mantenere il modo in cui vengono presentate il più chiaramente possibile. In questo articolo parlerò dei modi per addestrare/addestrare le reti neurali (in particolare, il metodo di backpropagation) e se, per qualche motivo, non hai letto la prima parte, ti consiglio vivamente di iniziare da essa. Nel processo di scrittura di questo articolo, volevo parlare anche di altri tipi di reti neurali e metodi di allenamento, tuttavia, iniziando a scriverne, mi sono reso conto che ciò sarebbe andato contro il mio metodo di presentazione. Capisco che sei desideroso di ottenere quante più informazioni possibili, ma questi argomenti sono molto estesi e richiedono un'analisi dettagliata, e il mio compito principale non è scrivere un altro articolo con una spiegazione superficiale, ma trasmetterti ogni aspetto dell'argomento sollevato e rendere l'articolo il più semplice possibile. Mi affretto a turbare coloro a cui piace "codificare", poiché ancora non ricorrerò all'uso del linguaggio di programmazione e spiegherò tutto sulle mie dita. Basta con l'introduzione, continuiamo ora il nostro studio delle reti neurali.

Che cos'è un neurone di spostamento?


Prima di iniziare il nostro argomento principale, dobbiamo introdurre il concetto di un altro tipo di neurone: il neurone di spostamento. Il neurone bias o neurone bias è il terzo tipo di neurone utilizzato nella maggior parte delle reti neurali. La particolarità di questo tipo di neurone è che il suo input e output sono sempre uguali a 1 e non hanno mai sinapsi in input. I neuroni di spostamento possono essere presenti nella rete neurale uno per uno su uno strato, oppure essere completamente assenti, il 50/50 non può esserlo (pesi e neuroni che non possono essere posizionati sono mostrati in rosso nel diagramma). Le connessioni per i neuroni di spostamento sono le stesse dei neuroni ordinari - con tutti i neuroni del livello successivo, tranne per il fatto che non possono esserci sinapsi tra due neuroni di bias. Pertanto, possono essere posizionati sul livello di input e su tutti i livelli nascosti, ma non sul livello di output, poiché semplicemente non hanno nulla con cui formare una connessione.

A cosa serve un neurone bias?



Il neurone di spostamento è necessario per poter ottenere un risultato di output spostando il grafico della funzione di attivazione a destra oa sinistra. Se questo suona confuso, diamo un'occhiata a un semplice esempio in cui c'è un neurone di input e un neurone di output. Quindi si può stabilire che l'uscita O2 sarà uguale all'ingresso H1 moltiplicata per il suo peso, e passata attraverso la funzione di attivazione (formula nella foto a sinistra). Nel nostro caso particolare, useremo un sigmoide.

Dal corso di matematica della scuola, sappiamo che se prendiamo la funzione y = ax + b e cambiamo i suoi valori "a", allora cambierà la pendenza della funzione (i colori delle linee sul grafico a sinistra) , e se cambiamo "b", allora sposteremo la funzione a destra oa sinistra (i colori delle linee sul grafico a destra). Quindi "a" è il peso di H1 e "b" è il peso del neurone bias B1. Questo è un esempio approssimativo, ma è così che funziona (se guardi la funzione di attivazione a destra nell'immagine, noterai una somiglianza molto forte tra le formule). Cioè, quando, durante l'allenamento, regoliamo i pesi dei neuroni nascosti e di uscita, cambiamo la pendenza della funzione di attivazione. Tuttavia, la regolazione del peso dei neuroni bias può darci l'opportunità di spostare la funzione di attivazione lungo l'asse X e catturare nuove aree. In altre parole, se il punto responsabile della tua soluzione si trova, come mostrato nel grafico a sinistra, la tua rete neurale non sarà mai in grado di risolvere il problema senza utilizzare i neuroni di bias. Pertanto, è raro trovare reti neurali prive di neuroni bias.

Inoltre, i neuroni di bias aiutano nel caso in cui tutti i neuroni di input ricevano 0 come input e indipendentemente dal loro peso, trasferiranno tutto al livello 0 successivo, ma non nel caso della presenza di un neurone di bias. La presenza o l'assenza di neuroni bias è un iperparametro (ne parleremo più avanti). In breve, devi decidere tu stesso se devi utilizzare o meno i neuroni di bias eseguendo la rete neurale con e senza mescolare i neuroni e confrontando i risultati.

IMPORTANTE tieni presente che a volte sui diagrammi non indicano neuroni di bias, ma semplicemente tengono conto dei loro pesi nel calcolo del valore di input, ad esempio:

Ingresso = H1 * w1 + H2 * w2 + b3
b3 = distorsione * w3

Poiché il suo output è sempre 1, possiamo semplicemente immaginare di avere una sinapsi aggiuntiva con un peso e aggiungere questo peso alla somma senza menzionare il neurone stesso.

Come fare in modo che l'Assemblea Nazionale dia risposte corrette?

La risposta è semplice: devi addestrarla. Tuttavia, per quanto semplice sia la risposta, la sua implementazione in termini di semplicità lascia molto a desiderare. Esistono diversi metodi per insegnare le reti neurali e ne indicherò 3, secondo me, i più interessanti:
  • Metodo di retropropagazione
  • Propagazione resiliente (Rprop)
  • Algoritmo genetico
Rprop e GA saranno discussi in altri articoli, ma ora daremo un'occhiata alle basi di base: il metodo di backpropagation, che utilizza l'algoritmo di discesa del gradiente.

Che cos'è la discesa graduale?

Questo è un modo per trovare il minimo o il massimo locale di una funzione spostandosi lungo il gradiente. Una volta compresa l'essenza della discesa del gradiente, non dovresti avere domande durante l'utilizzo del metodo di retropropagazione. Per prima cosa, scopriamo cos'è un gradiente e dove è presente nella nostra rete neurale. Costruiamo un grafico dove l'asse x saranno i valori del peso del neurone (w) e l'asse y sarà l'errore corrispondente a questo peso (e).


Guardando questo grafico, capiremo che il grafico della funzione f (w) è la dipendenza dell'errore dal peso selezionato. In questo grafico, siamo interessati al minimo globale - il punto (w2, e2) o, in altre parole, il luogo in cui il grafico si avvicina di più all'asse x. Questo punto significherà che scegliendo il peso w2 otterremo l'errore più piccolo - e2 e, di conseguenza, il miglior risultato possibile. Il metodo di discesa del gradiente ci aiuterà a trovare questo punto (il gradiente è mostrato in giallo sul grafico). Di conseguenza, ogni peso nella rete neurale avrà il proprio grafico e gradiente e ciascuno deve trovare un minimo globale.

Allora, qual è questo gradiente? Un gradiente è un vettore che definisce la pendenza di una pendenza e ne indica la direzione rispetto a uno qualsiasi dei punti sulla superficie o sul grafico. Per trovare il gradiente, devi prendere la derivata del grafico in un dato punto (come mostrato nel grafico). Spostandoci nella direzione di questo gradiente, scivoleremo dolcemente nelle pianure. Ora, immagina che l'errore sia uno sciatore e il grafico della funzione sia una montagna. Di conseguenza, se l'errore è del 100%, lo sciatore è in cima alla montagna e se l'errore è dello 0%, allora in pianura. Come tutti gli sciatori, il bug tende a scendere il più velocemente possibile ea diminuire il suo valore. Alla fine dovremmo ottenere il seguente risultato:


Immagina che uno sciatore venga lanciato, da un elicottero, su una montagna. Quanto alto o basso dipende dal caso (simile a come in una rete neurale, durante l'inizializzazione, i pesi vengono assegnati casualmente). Diciamo che l'errore è del 90% e questo è il nostro punto di partenza. Ora lo sciatore deve scendere usando un gradiente. Durante la discesa, ad ogni punto calcoleremo una pendenza che ci indicherà la direzione di discesa e, al variare della pendenza, la adegueremo. Se la pendenza è diritta, dopo l'n-esimo numero di tali azioni arriveremo alla pianura. Ma nella maggior parte dei casi la pendenza (grafico della funzione) sarà ondulata e il nostro sciatore dovrà affrontare un problema molto serio: un minimo locale. Penso che tutti sappiano qual è il minimo locale e globale di una funzione, ecco un esempio per rinfrescarti la memoria. Entrare in un minimo locale è irto del fatto che il nostro sciatore rimarrà per sempre in questa pianura e non scivolerà mai giù per la montagna, quindi non saremo mai in grado di ottenere la risposta corretta. Ma possiamo evitarlo dotando il nostro sciatore di un jetpack chiamato slancio. Ecco una rapida illustrazione del momento:

Come probabilmente hai già intuito, questo zaino darà allo sciatore l'accelerazione necessaria per superare la collina che ci tiene al minimo locale, ma ce n'è uno MA. Immaginiamo di impostare un certo valore per il parametro momento e di poter facilmente superare tutti i minimi locali e arrivare al minimo globale. Dal momento che non possiamo semplicemente spegnere il jetpack, possiamo scivolare oltre il minimo globale se ci sono ancora pianure accanto ad esso. Nel caso finale, questo non è così importante, poiché prima o poi torneremo ancora al minimo globale, ma vale la pena ricordare che maggiore è il momento, maggiore è l'oscillazione con cui lo sciatore cavalcherà in pianura. Insieme al momento, il metodo di backpropagation utilizza anche un parametro come il tasso di apprendimento. Come molti probabilmente penseranno, maggiore è il tasso di apprendimento, più velocemente addestreremo la rete neurale. No. Il tasso di apprendimento, come il momento, è un iperparametro, un valore che viene selezionato attraverso tentativi ed errori. La velocità di apprendimento può essere direttamente correlata alla velocità dello sciatore ed è sicuro dire che andrai avanti più tranquillamente. Tuttavia, ci sono anche alcuni aspetti qui, poiché se non diamo affatto la velocità allo sciatore, allora non andrà affatto da nessuna parte, e se diamo una bassa velocità, il tempo di percorrenza può allungarsi molto, molto lungo periodo di tempo. Cosa succede allora se diamo troppa velocità?


Come puoi vedere, niente di buono. Lo sciatore inizierà a scivolare lungo il sentiero sbagliato e forse anche nella direzione opposta, il che, come capisci, non farà altro che allontanarci dal trovare la risposta giusta. Pertanto, in tutti questi parametri è necessario trovare una media aurea per evitare la non convergenza di NN (ne parleremo più avanti).

Che cos'è un metodo di propagazione all'indietro (MPA)?

Quindi siamo arrivati ​​al punto in cui possiamo discutere su come assicurarci che la tua rete neurale possa apprendere correttamente e prendere le giuste decisioni. Il MOP è reso molto bene su questa GIF:


Ora diamo un'occhiata più da vicino a ciascuna fase. Se ricordi che nell'articolo precedente abbiamo considerato l'uscita dell'Assemblea nazionale. In un altro modo, questo è chiamato forward pass, cioè trasmettiamo in sequenza informazioni dai neuroni di input ai neuroni di output. Successivamente, calcoliamo l'errore e in base ad esso effettuiamo un postback, che consiste nel modificare in sequenza i pesi della rete neurale, partendo dai pesi del neurone di output. I pesi cambieranno nella direzione che ci darà il miglior risultato. Nei miei calcoli, userò il metodo per trovare il delta, poiché questo è il modo più semplice e comprensibile. Userò anche il metodo stocastico per aggiornare i pesi (ne parleremo più avanti).

Ora continuiamo da dove abbiamo interrotto i calcoli nell'articolo precedente.

Questi compiti dall'articolo precedente


Dati: I1 = 1, I2 = 0, w1 = 0,45, w2 = 0,78, w3 = -0,12, w4 = 0,13, w5 = 1,5, w6 = -2,3.

Ingresso H1 = 1 * 0,45 + 0 * -0,12 = 0,45
Uscita H1 = sigmoide (0,45) = 0,61

Ingresso H2 = 1 * 0,78 + 0 * 0,13 = 0,78
Uscita H2 = sigmoide (0,78) = 0,69

Ingresso O1 = 0,61 * 1,5 + 0,69 * -2,3 = -0,672
Uscita O1 = sigmoide (-0,672) = 0,33

O1 ideale = 1 (0xor1 = 1)

Errore = ((1-0,33) ^ 2) /1=0,45

Il risultato è 0,33, l'errore è del 45%.


Poiché abbiamo già calcolato il risultato di NN e il suo errore, possiamo procedere immediatamente all'MPA. Come ho detto prima, l'algoritmo inizia sempre con il neurone di output. In tal caso, calcoliamo il valore per esso? (delta) dalla formula 1.

Poiché il neurone di output non ha sinapsi in uscita, utilizzeremo la prima formula (? Output), quindi, per i neuroni nascosti, utilizzeremo già la seconda formula (? Hidden). Qui tutto è abbastanza semplice: calcoliamo la differenza tra il risultato desiderato e quello ottenuto e moltiplichiamo per la derivata della funzione di attivazione dal valore di input del dato neurone. Prima di iniziare i calcoli, voglio attirare la tua attenzione sulla derivata. In primo luogo, come probabilmente è già apparso chiaro, con i MOP dovrebbero essere utilizzate solo le funzioni di attivazione che possono essere differenziate. In secondo luogo, per non fare calcoli inutili, la formula derivata può essere sostituita con una formula più amichevole e semplice della forma:


Pertanto, i nostri calcoli per il punto O1 saranno simili a questo.

Soluzione

Uscita O1 = 0,33
O1 ideale = 1
Errore = 0,45

O1 = (1 - 0,33) * ((1 - 0,33) * 0,33) = 0,148


Questo completa i calcoli per il neurone O1. Ricorda che dopo aver calcolato il delta di un neurone, dobbiamo immediatamente aggiornare i pesi di tutte le sinapsi in uscita da questo neurone. Poiché sono assenti nel caso di O1, andiamo ai neuroni a livello latente e facciamo lo stesso, tranne che ora abbiamo la seconda formula per calcolare il delta e la sua essenza è moltiplicare la derivata della funzione di attivazione dall'input valore per la somma dei prodotti di tutti i pesi in uscita e delta del neurone con cui questa sinapsi è connessa. Ma perché le formule sono diverse? Il punto è che lo scopo del MOR è propagare l'errore dei neuroni di uscita a tutti i pesi della rete neurale. L'errore può essere calcolato solo a livello di output, come abbiamo già fatto, abbiamo calcolato anche il delta in cui questo errore esiste già. Di conseguenza, ora invece di un errore, utilizzeremo un delta che verrà trasmesso da neurone a neurone. In tal caso, troviamo il delta per H1:

Soluzione

Uscita H1 = 0,61
w5 = 1.5
?O1 = 0,148

H1 = ((1 - 0,61) * 0,61) * (1,5 * 0,148) = 0,053


Ora dobbiamo trovare il gradiente per ogni sinapsi in uscita. Qui, di solito inseriscono una frazione di 3 piani con un mucchio di derivati ​​e altri inferni matematici, ma questa è la bellezza dell'uso del metodo di conteggio delta, perché alla fine la tua formula per trovare il gradiente sarà simile a questa:

Qui il punto A è il punto all'inizio della sinapsi e il punto B è alla fine della sinapsi. Quindi, possiamo calcolare il gradiente w5 come segue:

Soluzione

Uscita H1 = 0,61
?O1 = 0,148

GRADw5 = 0,61 * 0,148 = 0,09


Ora abbiamo tutti i dati necessari per aggiornare il peso w5 e lo faremo grazie alla funzione MOP, che calcola l'importo di cui uno o l'altro peso deve essere modificato e si presenta così:


Consiglio vivamente di non ignorare la seconda parte dell'espressione e di utilizzare il momento in quanto ciò consentirà di evitare problemi con il minimo locale.

Qui vediamo 2 costanti di cui abbiamo già parlato quando abbiamo considerato l'algoritmo di discesa del gradiente: E (epsilon) - tasso di apprendimento,? (alfa) - momento. Traducendo la formula in parole, otteniamo: la variazione del peso della sinapsi è uguale al coefficiente di velocità di apprendimento moltiplicato per il gradiente di questo peso, aggiungiamo il momento moltiplicato per la precedente variazione di questo peso (alla 1a iterazione è uguale a 0). In questo caso calcoliamo la variazione di peso w5 e aggiorniamo il suo valore sommandovi ?W5.

Soluzione

E = 0,7
? = 0.3
w5 = 1.5
GRADw5 = 0.09
?w5 (i-1) = 0

W5 = 0,7 * 0,09 + 0 * 0,3 = 0,063
w5 = w5 +?w5 = 1.563


Quindi, dopo aver applicato l'algoritmo, il nostro peso è aumentato di 0,063. Ora ti suggerisco di fare lo stesso per H2.

Soluzione

Uscita H2 = 0,69
w6 = -2.3
?O1 = 0,148
E = 0,7
? = 0.3
?w6 (i-1) = 0

H2 = ((1 - 0,69) * 0,69) * (-2,3 * 0,148) = -0,07

GRADw6 = 0,69 * 0,148 = 0,1

W6 = 0,7 * 0,1 + 0 * 0,3 = 0,07

W6 = w6 +?W6 = -2,2


E, naturalmente, non dimenticare I1 e I2, perché hanno anche sinapsi di peso che dobbiamo anche aggiornare. Tuttavia, ricorda che non abbiamo bisogno di trovare delta per i neuroni di input, poiché non hanno sinapsi di input.

Soluzione

w1 = 0,45,?w1 (i-1) = 0
w2 = 0,78,?w2 (i-1) = 0
w3 = -0,12,?w3 (i-1) = 0
w4 = 0,13,?w4 (i-1) = 0
?H1 = 0,053
?H2 = -0.07
E = 0,7
? = 0.3

GRADw1 = 1 * 0,053 = 0,053
GRADw2 = 1 * -0.07 = -0.07
GRADw3 = 0 * 0,053 = 0
GRADw4 = 0 * -0.07 = 0

W1 = 0,7 * 0,053 + 0 * 0,3 = 0,04
?w2 = 0,7 * -0,07 + 0 * 0,3 = -0,05
w3 = 0,7 * 0 + 0 * 0,3 = 0
?w4 = 0,7 * 0 + 0 * 0,3 = 0

W1 = w1 +?W1 = 0,5
w2 = w2 +?w2 = 0,73
w3 = w3 +?w3 = -0,12
w4 = w4 +? w4 = 0,13


Ora assicuriamoci di aver fatto tutto correttamente e di nuovo calcoliamo l'output della rete neurale solo con i pesi aggiornati.

Soluzione

I1 = 1
I2 = 0
w1 = 0,5
w2 = 0,73
w3 = -0,12
w4 = 0,13
w5 = 1.563
w6 = -2.2

Ingresso H1 = 1 * 0,5 + 0 * -0,12 = 0,5
Uscita H1 = sigmoide (0,5) = 0,62

Ingresso H2 = 1 * 0,73 + 0 * 0,124 = 0,73
Uscita H2 = sigmoide (0.73) = 0.675

Ingresso O1 = 0,62 * 1,563 + 0,675 * -2,2 = -0,51
Uscita O1 = sigmoide (-0,51) = 0,37

O1 ideale = 1 (0xor1 = 1)

Errore = ((1-0,37) ^ 2) /1=0,39

Il risultato è 0,37, l'errore è 39%.


Come possiamo vedere dopo un'iterazione dell'MPA, siamo riusciti a ridurre l'errore di 0,04 (6%). Ora devi ripeterlo più e più volte finché il tuo errore non è abbastanza piccolo.

Cos'altro hai bisogno di sapere sul processo di apprendimento?

Una rete neurale può essere insegnata con o senza un insegnante (apprendimento supervisionato, non supervisionato).

Apprendimento supervisionato- Questo è il tipo di allenamento inerente a problemi come la regressione e la classificazione (lo abbiamo usato nell'esempio sopra). In altre parole, qui tu agisci come insegnante e il NS come studente. Fornisci i dati di input e il risultato desiderato, ovvero lo studente, guardando i dati di input, capirà che deve lottare per il risultato che gli hai fornito.

Imparare senza un insegnante- questo tipo di formazione non è così comune. Non c'è nessun insegnante qui, quindi la rete non ottiene il risultato desiderato o il loro numero è molto piccolo. Fondamentalmente, questo tipo di addestramento è inerente alle reti neurali in cui il compito è raggruppare i dati secondo determinati parametri. Supponiamo di inviare 10.000 articoli a Habré e, dopo aver analizzato tutti questi articoli, l'Assemblea nazionale sarà in grado di classificarli in base, ad esempio, a parole ricorrenti. Articoli che menzionano linguaggi di programmazione, programmazione e dove parole come Photoshop, design.

C'è anche un metodo così interessante come insegnamento rafforzativo(insegnamento rafforzativo). Questo metodo merita un articolo a parte, ma cercherò di descriverne brevemente l'essenza. Questo metodo è applicabile quando possiamo, sulla base dei risultati ricevuti dall'Assemblea nazionale, dargli una valutazione. Ad esempio, vogliamo insegnare all'Assemblea nazionale a giocare a PAC-MAN, quindi ogni volta che l'Assemblea nazionale guadagnerà molti punti, la incoraggeremo. In altre parole, diamo al NS il diritto di trovare qualsiasi modo per raggiungere l'obiettivo, purché dia un buon risultato. In questo modo, la rete inizierà a capire cosa vuole ottenere da essa e cercherà di trovare il modo migliore per raggiungere questo obiettivo senza il costante conferimento di dati da parte del "maestro".

Inoltre, la formazione può essere eseguita utilizzando tre metodi: metodo stocastico, metodo batch e metodo mini-batch. Ci sono così tanti articoli e studi là fuori su quale metodo è il migliore e nessuno può fornire una risposta generale. Sono un sostenitore del metodo stocastico, ma non nego il fatto che ogni metodo abbia i suoi pro e i suoi contro.

Brevemente su ciascun metodo:

Stocastico(a volte viene anche chiamato online) il metodo funziona secondo il seguente principio: trovato?w, aggiorna immediatamente il peso corrispondente.

Metodo batch funziona diversamente. Riassumiamo W di tutti i pesi all'iterazione corrente e solo dopo aggiorniamo tutti i pesi utilizzando questa somma. Uno dei vantaggi più importanti di questo approccio è il notevole risparmio di tempo di calcolo, mentre in questo caso l'accuratezza può essere gravemente compromessa.

Metodo mini batchè la media aurea e cerca di combinare i vantaggi di entrambi i metodi. Qui il principio è il seguente: distribuiamo liberamente i pesi tra i gruppi e cambiamo i loro pesi per la somma?W di tutti i pesi in uno o nell'altro gruppo.

Cosa sono gli iperparametri?

Gli iperparametri sono valori che devono essere selezionati manualmente e spesso per tentativi ed errori. Tra questi valori ci sono:
  • Momento e velocità di apprendimento
  • Numero di livelli nascosti
  • Numero di neuroni in ogni strato
  • Presenza o assenza di neuroni di spostamento
In altri tipi di reti neurali ci sono iperparametri aggiuntivi, ma non ne parleremo. La scelta degli iperparametri giusti è molto importante e influenzerà direttamente la convergenza della tua rete neurale. Capire se usare o meno i neuroni bias è abbastanza facile. Il numero di strati nascosti e neuroni in essi contenuti può essere calcolato con la forza bruta in base a una semplice regola: più neuroni, più accurato è il risultato e esponenzialmente più tempo che impiegherai per addestrarlo. Tuttavia, vale la pena ricordare che non dovresti creare una rete neurale con 1000 neuroni per risolvere problemi semplici. Ma con la scelta del momento e la velocità di apprendimento, tutto è un po' più complicato. Questi iperparametri variano a seconda del compito e dell'architettura della rete neurale. Ad esempio, per la soluzione XOR, il tasso di apprendimento può essere compreso tra 0,3 e 0,7, ma in una rete neurale che analizza e prevede il prezzo delle azioni, un tasso di apprendimento superiore a 0,00001 porta a una scarsa convergenza della rete neurale. Non dovresti concentrarti sugli iperparametri ora e cercare di capire a fondo come sceglierli. Questo verrà con l'esperienza, ma per ora ti consiglio di sperimentare e cercare esempi di risoluzione di un particolare problema sulla rete.

Che cos'è la convergenza?



La convergenza indica se l'architettura della rete neurale è corretta e se gli iperparametri sono stati selezionati correttamente in base al compito da svolgere. Diciamo che il nostro programma emette un errore NS ad ogni iterazione del log. Se l'errore diminuisce ad ogni iterazione, allora siamo sulla strada giusta e la nostra rete neurale sta convergendo. Se l'errore sale e scende o si blocca a un certo livello, allora NN non converge. Nel 99% dei casi, questo si risolve modificando gli iperparametri. Il restante 1% significa che hai un errore nell'architettura della rete neurale. Succede anche che la convergenza sia influenzata dalla riqualificazione della rete neurale.

Che cos'è la riqualificazione?

L'overfitting, come suggerisce il nome, è lo stato di una rete neurale quando è sovrasaturata di dati. Questo problema si verifica se impiega troppo tempo per addestrare la rete sugli stessi dati. In altre parole, la rete comincerà a non imparare dai dati, ma a memorizzarli e a “stiparli”. Di conseguenza, quando si inviano già nuovi dati all'input di questa rete neurale, nei dati ricevuti potrebbe apparire del rumore, che influirà sull'accuratezza del risultato. Ad esempio, se mostriamo al NA diverse foto di mele (solo quelle rosse) e diciamo che questa è una mela. Quindi, quando il NS vede una mela gialla o verde, non sarà in grado di determinare che si tratta di una mela, poiché ha ricordato che tutte le mele devono essere rosse. Al contrario, quando il NS vede qualcosa di rosso e la forma di una mela, come una pesca, dirà che è una mela. Questo è rumore. Sul grafico, il rumore sarà simile a questo.


Si può notare che il grafico della funzione fluttua molto da punto a punto, che sono l'output (risultato) della nostra rete neurale. Idealmente, questo grafico dovrebbe essere meno ondulato e meno dritto. Per evitare il sovradattamento, non dovresti allenare NN per molto tempo sugli stessi dati o su dati molto simili. Inoltre, l'overfitting può essere causato da un gran numero di parametri che si forniscono all'input della rete neurale o da un'architettura troppo complessa. Pertanto, quando si notano errori (rumore) nell'output dopo la fase di formazione, è necessario utilizzare uno dei metodi di regolarizzazione, ma nella maggior parte dei casi ciò non sarà necessario.

Conclusione

Spero che questo articolo sia stato in grado di chiarire i punti chiave di un argomento così difficile come le Reti Neurali. Tuttavia, credo che non importa quanti articoli leggi, è impossibile padroneggiare un argomento così complesso senza pratica. Pertanto, se sei solo all'inizio del viaggio e vuoi studiare questo settore promettente e in via di sviluppo, allora ti consiglio di iniziare a esercitarti scrivendo la tua rete neurale e solo dopo ricorrere all'utilizzo di vari framework e librerie. Inoltre, se sei interessato al mio metodo di presentazione delle informazioni e vuoi che scriva articoli su altri argomenti relativi al Machine Learning, vota nel sondaggio sottostante per l'argomento che ti interessa. Ci vediamo nei prossimi articoli :)

Di conseguenza, la rete neurale accetta due numeri come input e deve fornire un altro numero in uscita: la risposta. Ora sulle reti neurali stesse.

Che cos'è una rete neurale?


Una rete neurale è una sequenza di neuroni collegati da sinapsi. La struttura della rete neurale è arrivata nel mondo della programmazione direttamente dalla biologia. Grazie a questa struttura, la macchina acquisisce la capacità di analizzare e persino memorizzare varie informazioni. Le reti neurali sono anche in grado non solo di analizzare le informazioni in arrivo, ma anche di riprodurle dalla loro memoria. Per chi fosse interessato, assicurati di guardare 2 video da TED Talks: Video 1 , Video 2). In altre parole, una rete neurale è un'interpretazione meccanica del cervello umano, che contiene milioni di neuroni che trasmettono informazioni sotto forma di impulsi elettrici.

Cosa sono le reti neurali?

Per ora, prenderemo in considerazione esempi sul tipo più elementare di reti neurali: questa è una rete feedforward (di seguito denominata FNS). Inoltre negli articoli successivi introdurrò più concetti e ti parlerò delle reti neurali ricorrenti. DSS, come suggerisce il nome, è una rete con una connessione seriale di strati neurali, in cui le informazioni vanno sempre in una sola direzione.

A cosa servono le reti neurali?

Le reti neurali vengono utilizzate per risolvere problemi complessi che richiedono calcoli analitici simili a quelli del cervello umano. Gli usi più comuni delle reti neurali sono:

Classificazione- distribuzione dei dati per parametri. Ad esempio, all'ingresso viene dato un insieme di persone ed è necessario decidere a chi di loro concedere un prestito e chi no. Questo lavoro può essere svolto da una rete neurale che analizza informazioni come età, solvibilità, storia creditizia, ecc.

Predizione- la capacità di prevedere il passo successivo. Ad esempio, il rialzo o il ribasso di un titolo in base alla situazione del mercato azionario.

Riconoscimento- attualmente, l'uso più diffuso delle reti neurali. Utilizzato su Google quando cerchi una foto o nelle fotocamere del telefono quando rileva la posizione del tuo viso e lo fa risaltare e molto altro ancora.

Ora, per capire come funzionano le reti neurali, diamo un'occhiata ai suoi componenti e ai loro parametri.

Cos'è un neurone?

Un neurone è un'unità computazionale che riceve informazioni, esegue semplici calcoli su di essa e le trasmette ulteriormente. Si dividono in tre tipi principali: ingresso (blu), nascosto (rosso) e uscita (verde). C'è anche un neurone bias e un neurone contesto, di cui parleremo nel prossimo articolo. Nel caso in cui una rete neurale sia costituita da un gran numero di neuroni, viene introdotto il termine strato. Di conseguenza, esiste un livello di input che riceve informazioni, n livelli nascosti (di solito non più di 3) che le elaborano e un livello di output che emette il risultato. Ciascuno dei neuroni ha 2 parametri principali: dati di input e dati di output. Nel caso di un neurone di input: input = output. Nel resto, l'informazione totale di tutti i neuroni dal livello precedente entra nel campo di input, dopo di che viene normalizzata usando la funzione di attivazione (per ora, rappresenta solo f (x)) e arriva nel campo di output.


Importante da ricordare che i neuroni operano con numeri nell'intervallo o [-1,1]. Ma cosa, chiedi, quindi gestire i numeri che escono da questo intervallo? A questo punto, la risposta più semplice è dividere 1 per quel numero. Questo processo è chiamato normalizzazione ed è molto spesso utilizzato nelle reti neurali. Più su questo più tardi.

Che cos'è una sinapsi?


Una sinapsi è una connessione tra due neuroni. Le sinapsi hanno 1 parametro: peso. Grazie a lui, le informazioni in ingresso cambiano quando vengono trasmesse da un neurone all'altro. Diciamo che ci sono 3 neuroni che trasmettono informazioni a quello successivo. Quindi abbiamo 3 pesi corrispondenti a ciascuno di questi neuroni. Per il neurone con il peso maggiore, tale informazione sarà dominante nel neurone successivo (ad esempio, la miscelazione dei colori). In effetti, l'insieme dei pesi di una rete neurale o di una matrice di pesi è una sorta di cervello dell'intero sistema. È grazie a questi pesi che le informazioni di input vengono elaborate e convertite in un risultato.

Importante da ricordare che durante l'inizializzazione della rete neurale, i pesi vengono assegnati casualmente.

Come funziona una rete neurale?


In questo esempio è raffigurata una parte di una rete neurale, dove le lettere I indicano i neuroni di input, la lettera H indica il neurone nascosto e la lettera w indica i pesi. Si può vedere dalla formula che le informazioni di input sono la somma di tutti i dati di input moltiplicati per i pesi corrispondenti. Quindi diamo l'input 1 e 0. Sia w1 = 0.4 e w2 = 0.7 I dati di input del neurone H1 saranno i seguenti: 1 * 0.4 + 0 * 0.7 = 0.4. Ora che abbiamo l'input, possiamo ottenere l'output collegando l'input alla funzione di attivazione (ne parleremo più avanti). Ora che abbiamo l'output, lo passiamo. E così, ripetiamo per tutti i livelli finché non arriviamo al neurone di uscita. Avviando una rete del genere per la prima volta, vedremo che la risposta è tutt'altro che corretta, perché la rete non è addestrata. La formeremo per migliorare i suoi risultati. Ma prima di imparare a farlo, introduciamo alcuni termini e proprietà di una rete neurale.

Funzione di attivazione

Una funzione di attivazione è un modo per normalizzare i dati di input (ne abbiamo parlato prima). Cioè, se hai un numero grande all'input, dopo averlo passato attraverso la funzione di attivazione, otterrai un output nell'intervallo di cui hai bisogno. Esistono molte funzioni di attivazione, quindi prenderemo in considerazione le più elementari: tangente lineare, sigmoide (logistica) e iperbolica. La loro principale differenza è l'intervallo di valori.

Funzione lineare


Questa funzione non viene quasi mai utilizzata, tranne quando è necessario testare una rete neurale o trasferire un valore senza trasformazioni.

Sigmoide


Questa è la funzione di attivazione più comune e il suo intervallo di valori. È su di esso che viene mostrata la maggior parte degli esempi sul web, a volte viene anche chiamata funzione logistica. Di conseguenza, se nel tuo caso ci sono valori negativi (ad esempio, le azioni possono non solo aumentare, ma anche diminuire), allora avrai bisogno di una funzione che catturi anche valori negativi.

tangente iperbolica


Ha senso usare la tangente iperbolica solo quando i tuoi valori possono essere sia negativi che positivi, poiché l'intervallo della funzione è [-1,1]. Non è opportuno utilizzare questa funzione solo con valori positivi, poiché peggiorerebbe significativamente i risultati della rete neurale.

Set di allenamento

Un training set è una sequenza di dati su cui opera una rete neurale. Nel nostro caso eccezionale o (xor) abbiamo solo 4 esiti diversi, cioè avremo 4 training set: 0xor0 = 0, 0xor1 = 1, 1xor0 = 1.1xor1 = 0.

Iterazione

Questo è un tipo di contatore che aumenta ogni volta che la rete neurale passa attraverso un training set. In altre parole, questo è il numero totale di set di training attraversati dalla rete neurale.

Epoca

Quando si inizializza la rete neurale, questo valore è impostato su 0 e ha un limite massimo impostato manualmente. Più grande è l'epoca, migliore è la formazione della rete e, di conseguenza, il suo risultato. L'epoca aumenta ogni volta che passiamo attraverso l'intero set di training set, nel nostro caso 4 set o 4 iterazioni.


Importante non confondere l'iterazione con l'epoca e comprendere la sequenza del loro incremento. primo no
una volta che l'iterazione aumenta, e poi l'epoca e non viceversa. In altre parole, non puoi prima addestrare una rete neurale solo su un set, poi su un altro, ecc. Devi allenare ogni set una volta per epoca. In questo modo, puoi evitare errori nei calcoli.

Errore

L'errore è una percentuale che rappresenta la discrepanza tra le risposte previste e ricevute. L'errore si forma ad ogni epoca e dovrebbe declinare. Se ciò non accade, stai facendo qualcosa di sbagliato. L'errore può essere calcolato in diversi modi, ma considereremo solo tre modi principali: Mean Squared Error (di seguito MSE), Root MSE e Arctan. Non ci sono restrizioni sull'uso come nella funzione di attivazione e sei libero di scegliere il metodo che ti dà i migliori risultati. Basta considerare che ogni metodo conta gli errori in modi diversi. In Arctan, l'errore, quasi sempre, sarà maggiore, poiché funziona secondo il principio: maggiore è la differenza, maggiore è l'errore. Root MSE avrà l'errore più piccolo, quindi molto spesso viene utilizzato MSE, che mantiene un equilibrio nel calcolo dell'errore.


MSE radice



Il principio di calcolo dell'errore è lo stesso in tutti i casi. Per ogni insieme contiamo l'errore sottraendolo alla risposta ideale. Inoltre, o lo eleviamo al quadrato o calcoliamo la tangente al quadrato da questa differenza, dopo di che dividiamo il numero risultante per il numero di insiemi.

Compito

Ora, per metterti alla prova, calcola il risultato di una determinata rete neurale usando un sigmoide e il suo errore usando MSE.

Dati: I1 = 1, I2 = 0, w1 = 0,45, w2 = 0,78, w3 = -0,12, w4 = 0,13, w5 = 1,5, w6 = -2,3.

Reti neurali

Schema di una semplice rete neurale. Contrassegnato in verde ingresso elementi, in giallo - giorno libero elemento

Reti neurali artificiali(ANN) - modelli matematici, nonché le loro implementazioni software o hardware, costruiti sul principio dell'organizzazione e del funzionamento delle reti neurali biologiche - reti di cellule nervose di un organismo vivente. Questo concetto è sorto quando si studiano i processi che si verificano nel cervello durante il pensiero e quando si cerca di modellare questi processi. Il primo modello del cervello di questo tipo è stato il perceptron. Successivamente, questi modelli iniziarono ad essere utilizzati per scopi pratici, solitamente nella previsione dei problemi.

Le reti neurali non sono programmate nel senso comune del termine, ma... sono addestrati... L'apprendimento è uno dei principali vantaggi delle reti neurali rispetto agli algoritmi tradizionali. Tecnicamente, l'allenamento consiste nel trovare i coefficienti di connessione tra i neuroni. Durante l'addestramento, la rete neurale è in grado di identificare complesse dipendenze tra dati di input e output, nonché eseguire la generalizzazione. Ciò significa che, in caso di training riuscito, la rete sarà in grado di restituire il risultato corretto in base ai dati che erano assenti nel training set.

Cronologia

Applicazioni conosciute

Raggruppamento

Per clustering si intende la suddivisione dell'insieme dei segnali di ingresso in classi, mentre né il numero né le caratteristiche delle classi sono noti in anticipo. Dopo l'addestramento, tale rete è in grado di determinare a quale classe appartiene il segnale di ingresso. La rete può anche segnalare che il segnale di ingresso non appartiene a nessuna delle classi selezionate: questo è un segno di nuovi dati che sono assenti nel campione di addestramento. Quindi, una rete simile può identificare nuove classi di segnale precedentemente sconosciute... La corrispondenza tra le classi allocate dalla rete e le classi esistenti nel dominio è stabilita da una persona. Il clustering viene effettuato, ad esempio, dalle reti neurali Kohonen.

Selezione sperimentale delle caratteristiche della rete

Dopo aver scelto la struttura generale, è necessario selezionare sperimentalmente i parametri di rete. Per reti come un perceptron, questo sarà il numero di livelli, il numero di blocchi nei livelli nascosti (per le reti Word), la presenza o l'assenza di connessioni di bypass, le funzioni di trasferimento dei neuroni. Quando si sceglie il numero di strati e neuroni in essi, si dovrebbe partire dal fatto che la capacità di generalizzazione della rete è tanto maggiore quanto maggiore è il numero totale di connessioni tra neuroni... D'altra parte, il numero di collegamenti è limitato dall'alto dal numero di record nei dati di addestramento.

Selezione sperimentale dei parametri di allenamento

Dopo aver scelto una topologia specifica, è necessario selezionare i parametri per l'addestramento della rete neurale. Questa fase è particolarmente importante per le reti supervisionate. La scelta corretta dei parametri dipende non solo dalla rapidità con cui le risposte della rete convergeranno verso le risposte corrette. Ad esempio, la scelta di un tasso di apprendimento basso aumenterà il tempo di convergenza, ma a volte evita la paralisi della rete. Un aumento del momento di apprendimento può portare sia ad un aumento che ad una diminuzione del tempo di convergenza, a seconda della forma della superficie di errore. Sulla base di un'influenza così contraddittoria dei parametri, possiamo concludere che i loro valori dovrebbero essere scelti sperimentalmente, guidati dal criterio del completamento dell'allenamento (ad esempio, riducendo al minimo l'errore o limitando il tempo di allenamento).

La formazione vera e propria della rete

Durante l'addestramento, la rete esegue la scansione del campione di addestramento in un determinato ordine. L'ordine di scansione può essere sequenziale, casuale, ecc. Alcune reti non supervisionate, ad esempio le reti Hopfield, scansionano il campione solo una volta. Altri, come le reti Kohonen e le reti supervisionate, scansionano il campione più volte, con un passaggio completo attraverso il campione chiamato l'era dell'apprendimento... Quando si insegna con un insegnante, l'insieme di dati iniziali è diviso in due parti: il campione di allenamento stesso e i dati del test; il principio di separazione può essere arbitrario. I dati di addestramento vengono inviati alla rete per l'addestramento e i dati di convalida vengono utilizzati per calcolare l'errore di rete (i dati di convalida non vengono mai utilizzati per addestrare la rete). Pertanto, se l'errore sui dati di test diminuisce, la rete generalizza. Se l'errore sui dati di training continua a diminuire e l'errore sui dati di test aumenta, la rete ha smesso di generalizzare e si limita a "ricordare" i dati di training. Questo fenomeno è chiamato overfitting di rete o overfitting. In tali casi, la formazione viene generalmente interrotta. Durante il processo di apprendimento, possono comparire altri problemi, come la paralisi o la rete che colpisce un minimo locale della superficie di errore. È impossibile prevedere in anticipo la manifestazione di un particolare problema, nonché fornire raccomandazioni univoche per la loro soluzione.

Verifica dell'adeguatezza della formazione

Anche in caso di apprendimento di successo, a prima vista, la rete non sempre apprende esattamente ciò che il creatore voleva da essa. C'è un caso noto in cui la rete è stata addestrata a riconoscere le immagini dei carri armati dalle fotografie, ma in seguito si è scoperto che tutti i carri armati sono stati fotografati sullo stesso sfondo. Di conseguenza, la rete ha "imparato" a riconoscere questo tipo di terreno, invece di "imparare" a riconoscere i carri armati. Pertanto, la rete "capisce" non ciò che le viene richiesto, ma ciò che è più facile da generalizzare.

Classificazione per tipo di informazioni di input

  • Reti neurali analogiche (utilizzano informazioni sotto forma di numeri reali);
  • Reti neurali binarie (operano con informazioni presentate in forma binaria).

Classificazione in base alla natura dell'apprendimento

  • Apprendimento supervisionato: lo spazio di output delle soluzioni di rete neurale è noto;
  • Apprendimento non supervisionato: una rete neurale costituisce lo spazio di output di soluzioni basate solo sull'input. Tali reti sono chiamate auto-organizzanti;
  • Reinforcement Learning è un sistema per assegnare penalità e ricompense dall'ambiente.

Classificazione in base alla natura dell'accordatura delle sinapsi

Classificazione del tempo di trasmissione del segnale

In un certo numero di reti neurali, la funzione di attivazione può dipendere non solo dai coefficienti di ponderazione delle connessioni w ioJ, ma anche sull'istante di trasmissione di un impulso (segnale) attraverso i canali di comunicazione τ ioJ... Pertanto, in generale, la funzione di comunicazione di attivazione (trasmissione) C ioJ dall'elemento tu io all'elemento tu J sembra:. Poi rete sincrona ioJ ogni legame è uguale a zero oa una costante fissa . asincronoè una rete per cui il tempo di trasmissione τ ioJ per ogni collegamento tra elementi tu io e tu J proprio, ma anche costante.

Classificazione in base alla natura dei legami

Reti feedforward

Tutte le connessioni sono dirette rigorosamente dai neuroni di input ai neuroni di output. Esempi di tali reti sono perceptron di Rosenblatt, perceptron multistrato, reti di Word.

Reti neurali ricorrenti

Il segnale dai neuroni di output o dai neuroni dello strato nascosto viene parzialmente ritrasmesso agli input dei neuroni dello strato di input (feedback). Rete ricorrente La rete Hopfield "filtra" i dati in ingresso, riportandoli ad uno stato stazionario e, quindi, permette di risolvere problemi di compressione dei dati e di costruzione di memoria associativa. Le reti bidirezionali sono un caso speciale di reti ricorrenti. In tali reti, esistono connessioni tra i livelli sia nella direzione dal livello di input allo strato di output, sia nella direzione opposta. L'esempio classico è la rete neurale di Kosko.

Funzioni a base radiale

Reti neurali artificiali che utilizzano reti a base radiale come funzioni di attivazione (tali reti sono abbreviate come reti RBF). Vista generale della funzione base radiale:

, Per esempio,

dove Xè il vettore dei segnali di ingresso del neurone, è la larghezza della finestra della funzione, φ ( ) è una funzione decrescente (il più delle volte uguale a zero al di fuori di un certo segmento).

La rete radiale-baseline è caratterizzata da tre caratteristiche:

1. L'unico livello nascosto

2. Solo i neuroni dello strato nascosto hanno una funzione di attivazione non lineare

3. I pesi sinaptici delle connessioni degli strati di input e nascosti sono uguali a uno

Informazioni sulla procedura di formazione - vedere la letteratura

Carte auto-organizzanti

Tali reti rappresentano una rete neurale competitiva con apprendimento non supervisionato, che svolge il compito di visualizzazione e clustering. È un metodo per proiettare uno spazio multidimensionale in uno spazio con una dimensione inferiore (il più delle volte bidimensionale), è anche usato per risolvere problemi di modellazione, previsione, ecc. È una delle versioni delle reti neurali di Kohonen. Le mappe Kohonen auto-organizzanti vengono utilizzate principalmente per la visualizzazione e l'analisi iniziale ("esplorativa") dei dati.

Il segnale alla rete Kohonen va a tutti i neuroni contemporaneamente, i pesi delle sinapsi corrispondenti sono interpretati come coordinate della posizione del nodo e il segnale di uscita è formato secondo il principio di "il vincitore prende tutto" - cioè il neurone più vicino (nel senso dei pesi sinapsi) al segnale di ingresso ha un oggetto segnale di uscita diverso da zero. Nel processo di addestramento, i pesi delle sinapsi sono regolati in modo tale che i nodi del reticolo siano "localizzati" nei luoghi di condensazione dei dati locali, ovvero descrivono la struttura a cluster della nuvola di dati, d'altra parte, il le connessioni tra i neuroni corrispondono alle relazioni di vicinato tra i cluster corrispondenti nello spazio delle caratteristiche.

È conveniente considerare tali mappe come griglie bidimensionali di nodi situati nello spazio multidimensionale. Inizialmente, una mappa auto-organizzata è una griglia di nodi, collegati da collegamenti. Kohonen ha considerato due opzioni per connettere i nodi - in una griglia rettangolare ed esagonale - la differenza è che in una griglia rettangolare, ogni nodo è collegato a 4 nodi vicini e in una griglia esagonale - a 6 nodi più vicini. Per due di tali griglie, il processo di costruzione della rete Kohonen differisce solo nel luogo in cui vengono spostati i vicini più vicini al dato nodo.

L'annidamento iniziale della mesh nello spazio dati è arbitrario. Il pacchetto dell'autore SOM_PAK offre opzioni per una disposizione iniziale casuale dei nodi nello spazio e un'opzione per una disposizione dei nodi in un piano. Successivamente, i nodi iniziano a muoversi nello spazio secondo il seguente algoritmo:

  1. Il punto dati è selezionato casualmente X .
  2. Il più vicino a X nodo carta (BMU - Best Matching Unit).
  3. Questo nodo viene spostato di un dato passo verso x. Tuttavia, non si muove da solo, ma porta con sé un certo numero di nodi più vicini da un certo quartiere sulla mappa. Di tutti i nodi in movimento, il nodo centrale - quello più vicino al punto dati - è spostato più fortemente, e il resto sperimenta gli spostamenti più piccoli, più sono lontani dal BMU. Ci sono due fasi nella messa a punto della mappa: la fase di ordinazione e la fase di messa a punto. Nella prima fase vengono selezionati grandi valori del quartiere e il movimento dei nodi è di natura collettiva - di conseguenza, la mappa "si raddrizza" e riflette approssimativamente la struttura dei dati; nella fase di messa a punto, il raggio dell'intorno è 1–2 e le singole posizioni dei nodi vengono regolate. Inoltre, il valore dello spostamento decade uniformemente nel tempo, cioè è grande all'inizio di ciascuna delle fasi di addestramento e vicino allo zero alla fine.
  4. L'algoritmo ripete un certo numero di epoche (è chiaro che il numero di passaggi può variare notevolmente a seconda dell'attività).

Tipi di rete conosciuti

  • rete Hamming;
  • Neocognitron;
  • Rete neurale caotica;
  • Rete di diffusione del contatore;
  • Rete di funzioni a base radiale (rete RBF);
  • Rete di regressione generalizzata;
  • Rete probabilistica;
  • rete neurale siamese;
  • Reti di risonanza adattativa.

Differenze dalle macchine con architettura von Neumann

Un lungo periodo di evoluzione ha conferito al cervello umano molte qualità che sono assenti nelle macchine con architettura di von Neumann:

  • concorrenza di massa;
  • Presentazione distribuita di informazioni e calcoli;
  • Capacità di apprendere e generalizzare;
  • Adattabilità;
  • Proprietà di elaborazione delle informazioni contestuali;
  • Tolleranza agli errori;
  • Basso consumo energetico.

Reti neurali - approssimatori universali

Le reti neurali sono dispositivi di approssimazione universali e possono simulare qualsiasi automa continuo con qualsiasi precisione. Viene dimostrato un teorema di approssimazione generalizzata: utilizzando operazioni lineari e una connessione in cascata, si può ottenere un dispositivo da un elemento non lineare arbitrario che calcola qualsiasi funzione continua con qualsiasi accuratezza predeterminata. Ciò significa che la caratteristica non lineare di un neurone può essere arbitraria: da sigmoidale a pacchetto d'onda arbitrario o wavelet, seno o polinomio. La complessità di una particolare rete può dipendere dalla scelta di una funzione non lineare, ma con qualsiasi non linearità, la rete rimane un approssimatore universale e, con la giusta scelta della struttura, può approssimare il funzionamento di qualsiasi automa continuo con la precisione desiderata.

Esempi di applicazioni

Previsione delle serie temporali finanziarie

Dati di input - prezzo delle azioni per l'anno. Il compito è determinare la rotta di domani. È in corso la seguente trasformazione: il corso per oggi, ieri, per l'altro ieri, per l'altro ieri è allineato. La riga successiva viene spostata di un giorno in base alla data e così via. Sul set risultante viene addestrata una rete con 3 input e un output, ovvero un output: tasso per una data, input: tasso per una data meno 1 giorno, meno 2 giorni, meno 3 giorni. Per la rete formata, sottoponiamo il corso per oggi, ieri, l'altro ieri e riceviamo una risposta per domani. È facile vedere che in questo caso la rete visualizzerà semplicemente la dipendenza di un parametro sui tre precedenti. Se è desiderabile prendere in considerazione qualche altro parametro (ad esempio, l'indice generale per l'industria), allora deve essere aggiunto come input (e incluso negli esempi), la rete deve essere riqualificata e nuovi risultati ottenuti. Per la formazione più accurata, vale la pena utilizzare il metodo ORO, in quanto è il più prevedibile e più semplice da implementare.

Psicodiagnostica

Una serie di lavori di M. G. Dorrer et al. è dedicata allo studio della questione della possibilità di sviluppare l'intuizione psicologica nei sistemi esperti di reti neurali. I risultati ottenuti forniscono un approccio alla divulgazione del meccanismo di intuizione delle reti neurali, che si manifesta quando risolvono compiti psicodiagnostici. Creato non standard per le tecniche informatiche intuitivo approccio alla psicodiagnostica, che consiste nell'esclusione della costruzione la realtà descritta... Consente di abbreviare e semplificare il lavoro sulle tecniche psicodiagnostiche.

Chemioinformatica

Le reti neurali sono ampiamente utilizzate nella ricerca chimica e biochimica.Attualmente, le reti neurali sono uno dei metodi più diffusi della chemioinformatica per trovare relazioni quantitative struttura-proprietà, grazie alle quali vengono utilizzate attivamente sia per prevedere le proprietà fisico-chimiche che l'attività biologica delle sostanze chimiche composti, e per la progettazione direzionale di composti chimici e materiali con proprietà predeterminate, anche nello sviluppo di nuovi farmaci.

Note (modifica)

  1. McCulloch W.S., Pitts W., Calcolo logico delle idee relative all'attività nervosa // In raccolta: "Automata" ed. C.E. Shannon e J. McCarthy. - M.: Casa editrice di stranieri. lett., 1956 .-- pagine 363-384. (Traduzione di un articolo inglese del 1943)
  2. Riconoscimento di modelli e controllo adattivo. BERNARD WIDROW
  3. Vedova B., Stearns S., Elaborazione adattiva del segnale. - M .: Radio e comunicazione, 1989 .-- 440 p.
  4. Werbos P.J., Oltre la regressione: nuovi strumenti per la previsione e l'analisi nelle scienze comportamentali. dottorato di ricerca tesi, Università di Harvard, Cambridge, MA, 1974.
  5. Galuskin A.I. Sintesi di sistemi di riconoscimento di pattern multistrato. - M.: "Energia", 1974.
  6. Rumelhart D.E., Hinton G.E., Williams R.J., Apprendimento delle rappresentazioni interne mediante la propagazione degli errori. In: Elaborazione distribuita parallela, vol. 1, pagg. 318-362. Cambridge, MA, MIT Press. 1986.
  7. Bartsev S.I., Okhonin V.A. Reti adattative di elaborazione delle informazioni. Krasnoyarsk: Istituto di fisica, ramo siberiano dell'Accademia delle scienze dell'URSS, 1986. Preprint N 59B. - 20 pag.
  8. BaseGroup Labs - Applicazione pratica delle reti neurali nei problemi di classificazione
  9. Questo tipo di codifica è talvolta indicato come codice "1 di N".
  10. Sistemi aperti: introduzione alle reti neurali
  11. Mirkes E.M., Reti neurali logicamente trasparenti e produzione di conoscenza esplicita dai dati, Nel libro: Neuroinformatica / A. N. Gorban, V. L. Dunin-Barkovsky, A. N. Kirdin e altri - Novosibirsk: Scienza. Siberian Enterprise RAS, 1998 .-- 296 con ISBN 5020314102
  12. Menzione di questa storia nella rivista Popular Mechanics
  13. http://www.intuit.ru/department/expert/neuro/10/ INTUIT.ru - Reti ricorrenti come dispositivi di archiviazione associativa]
  14. Kohonen, T. (1989/1997/2001), Mappe auto-organizzanti, Berlino - New York: Springer-Verlag. Prima edizione 1989, seconda edizione 1997, terza edizione ampliata 2001, ISBN 0-387-51387-6, ISBN 3-540-67921-9
  15. A. Yu. Zinoviev Visualizzazione di dati multidimensionali. - Krasnojarsk: Ed. Università tecnica statale di Krasnoyarsk, 2000 .-- 180 p.
  16. Gorban A.N., Teorema di approssimazione generalizzata e capacità computazionali delle reti neurali, Siberian Journal of Computational Mathematics, 1998. Vol. 1, No. 1. P. 12-24.
  17. Gorban A.N., Rossiyev D.A., Dorrer M.G., MultiNeuron - Simulatore di reti neurali per applicazioni mediche, fisiologiche e psicologiche, Wcnn'95, Washington, DC: Congresso mondiale sulle reti neurali 1995 Riunione annuale dell'International Neural Network Society: Renaissance Hotel, Washington, DC, USA, 17-21 luglio, 1995.
  18. Dorrer M.G., Intuizione psicologica delle reti neurali artificiali, Diss. ... 1998. Altre copie online:,
  19. Baskin I.I., Palyulin V.A., Zefirov N.S., Applicazione delle reti neurali artificiali nella ricerca chimica e biochimica, Vestn. Mosca Un-Ta. Ser. 2. Chimica. 1999. Vol. 40. n. 5.
  20. Galberstam N.M., Baskin I.I., Palyulin V.A., Zefirov N.S. Reti neurali come metodo per trovare la struttura delle dipendenze - proprietà dei composti organici // I progressi della chimica... - 2003. - T. 72. - N. 7. - S. 706-727.
  21. Baskin I.I., Palyulin V.A., Zefirov N.S. Perceptron multistrato nello studio delle relazioni struttura-proprietà per i composti organici // Russian Chemical Journal (Rivista della Società Chimica Russa intitolata a D.I. Mendeleev)... - 2006. - T. 50. - S. 86-96.

Link

  • Rete neurale artificiale per PHP 5.x - Progetto serio per lo sviluppo di reti neurali nel linguaggio di programmazione PHP 5.X
  • Forum su reti neurali e algoritmi genetici
  • Mirkes E.M., Neuroinformatica: libro di testo. un manuale per studenti con programmi per il lavoro di laboratorio.
  • Esempi passo passo dell'implementazione dei più famosi tipi di reti neurali in MATLAB, Neural Network Toolbox
  • Una selezione di materiali su reti neurali e analisi predittiva
  • applicazione avversaria delle reti neurali nella previsione dei prezzi delle azioni
Di conseguenza, la rete neurale accetta due numeri come input e deve fornire un altro numero in uscita: la risposta. Ora sulle reti neurali stesse.

Che cos'è una rete neurale?


Una rete neurale è una sequenza di neuroni collegati da sinapsi. La struttura della rete neurale è arrivata nel mondo della programmazione direttamente dalla biologia. Grazie a questa struttura, la macchina acquisisce la capacità di analizzare e persino memorizzare varie informazioni. Le reti neurali sono anche in grado non solo di analizzare le informazioni in arrivo, ma anche di riprodurle dalla loro memoria. Per chi fosse interessato, assicurati di guardare 2 video da TED Talks: Video 1 , Video 2). In altre parole, una rete neurale è un'interpretazione meccanica del cervello umano, che contiene milioni di neuroni che trasmettono informazioni sotto forma di impulsi elettrici.

Cosa sono le reti neurali?

Per ora, prenderemo in considerazione esempi sul tipo più elementare di reti neurali: questa è una rete feedforward (di seguito denominata FNS). Inoltre negli articoli successivi introdurrò più concetti e ti parlerò delle reti neurali ricorrenti. DSS, come suggerisce il nome, è una rete con una connessione seriale di strati neurali, in cui le informazioni vanno sempre in una sola direzione.

A cosa servono le reti neurali?

Le reti neurali vengono utilizzate per risolvere problemi complessi che richiedono calcoli analitici simili a quelli del cervello umano. Gli usi più comuni delle reti neurali sono:

Classificazione- distribuzione dei dati per parametri. Ad esempio, all'ingresso viene dato un insieme di persone ed è necessario decidere a chi di loro concedere un prestito e chi no. Questo lavoro può essere svolto da una rete neurale che analizza informazioni come età, solvibilità, storia creditizia, ecc.

Predizione- la capacità di prevedere il passo successivo. Ad esempio, il rialzo o il ribasso di un titolo in base alla situazione del mercato azionario.

Riconoscimento- attualmente, l'uso più diffuso delle reti neurali. Utilizzato su Google quando cerchi una foto o nelle fotocamere del telefono quando rileva la posizione del tuo viso e lo fa risaltare e molto altro ancora.

Ora, per capire come funzionano le reti neurali, diamo un'occhiata ai suoi componenti e ai loro parametri.

Cos'è un neurone?


Un neurone è un'unità computazionale che riceve informazioni, esegue semplici calcoli su di essa e le trasmette ulteriormente. Si dividono in tre tipi principali: ingresso (blu), nascosto (rosso) e uscita (verde). C'è anche un neurone bias e un neurone contesto, di cui parleremo nel prossimo articolo. Nel caso in cui una rete neurale sia costituita da un gran numero di neuroni, viene introdotto il termine strato. Di conseguenza, esiste un livello di input che riceve informazioni, n livelli nascosti (di solito non più di 3) che le elaborano e un livello di output che emette il risultato. Ciascuno dei neuroni ha 2 parametri principali: dati di input e dati di output. Nel caso di un neurone di input: input = output. Nel resto, l'informazione totale di tutti i neuroni dal livello precedente entra nel campo di input, dopo di che viene normalizzata usando la funzione di attivazione (per ora, rappresenta solo f (x)) e arriva nel campo di output.


Importante da ricordare che i neuroni operano con numeri nell'intervallo o [-1,1]. Ma cosa, chiedi, quindi gestire i numeri che escono da questo intervallo? A questo punto, la risposta più semplice è dividere 1 per quel numero. Questo processo è chiamato normalizzazione ed è molto spesso utilizzato nelle reti neurali. Più su questo più tardi.

Che cos'è una sinapsi?


Una sinapsi è una connessione tra due neuroni. Le sinapsi hanno 1 parametro: peso. Grazie a lui, le informazioni in ingresso cambiano quando vengono trasmesse da un neurone all'altro. Diciamo che ci sono 3 neuroni che trasmettono informazioni a quello successivo. Quindi abbiamo 3 pesi corrispondenti a ciascuno di questi neuroni. Per il neurone con il peso maggiore, tale informazione sarà dominante nel neurone successivo (ad esempio, la miscelazione dei colori). In effetti, l'insieme dei pesi di una rete neurale o di una matrice di pesi è una sorta di cervello dell'intero sistema. È grazie a questi pesi che le informazioni di input vengono elaborate e convertite in un risultato.

Importante da ricordare che durante l'inizializzazione della rete neurale, i pesi vengono assegnati casualmente.

Come funziona una rete neurale?


In questo esempio è raffigurata una parte di una rete neurale, dove le lettere I indicano i neuroni di input, la lettera H indica il neurone nascosto e la lettera w indica i pesi. Si può vedere dalla formula che le informazioni di input sono la somma di tutti i dati di input moltiplicati per i pesi corrispondenti. Quindi diamo l'input 1 e 0. Sia w1 = 0.4 e w2 = 0.7 I dati di input del neurone H1 saranno i seguenti: 1 * 0.4 + 0 * 0.7 = 0.4. Ora che abbiamo l'input, possiamo ottenere l'output collegando l'input alla funzione di attivazione (ne parleremo più avanti). Ora che abbiamo l'output, lo passiamo. E così, ripetiamo per tutti i livelli finché non arriviamo al neurone di uscita. Avviando una rete del genere per la prima volta, vedremo che la risposta è tutt'altro che corretta, perché la rete non è addestrata. La formeremo per migliorare i suoi risultati. Ma prima di imparare a farlo, introduciamo alcuni termini e proprietà di una rete neurale.

Funzione di attivazione

Una funzione di attivazione è un modo per normalizzare i dati di input (ne abbiamo parlato prima). Cioè, se hai un numero grande all'input, dopo averlo passato attraverso la funzione di attivazione, otterrai un output nell'intervallo di cui hai bisogno. Esistono molte funzioni di attivazione, quindi prenderemo in considerazione le più elementari: tangente lineare, sigmoide (logistica) e iperbolica. La loro principale differenza è l'intervallo di valori.

Funzione lineare


Questa funzione non viene quasi mai utilizzata, tranne quando è necessario testare una rete neurale o trasferire un valore senza trasformazioni.

Sigmoide


Questa è la funzione di attivazione più comune e il suo intervallo di valori. È su di esso che viene mostrata la maggior parte degli esempi sul web, a volte viene anche chiamata funzione logistica. Di conseguenza, se nel tuo caso ci sono valori negativi (ad esempio, le azioni possono non solo aumentare, ma anche diminuire), allora avrai bisogno di una funzione che catturi anche valori negativi.

tangente iperbolica


Ha senso usare la tangente iperbolica solo quando i tuoi valori possono essere sia negativi che positivi, poiché l'intervallo della funzione è [-1,1]. Non è opportuno utilizzare questa funzione solo con valori positivi, poiché peggiorerebbe significativamente i risultati della rete neurale.

Set di allenamento

Un training set è una sequenza di dati su cui opera una rete neurale. Nel nostro caso, l'esclusivo o (xor) abbiamo solo 4 esiti diversi, cioè avremo 4 set di allenamento: 0xor0 = 0, 0xor1 = 1, 1xor0 = 1.1xor1 = 0.

Iterazione

Questo è un tipo di contatore che aumenta ogni volta che la rete neurale passa attraverso un training set. In altre parole, questo è il numero totale di set di training attraversati dalla rete neurale.

Epoca

Quando si inizializza la rete neurale, questo valore è impostato su 0 e ha un limite massimo impostato manualmente. Più grande è l'epoca, migliore è la formazione della rete e, di conseguenza, il suo risultato. L'epoca aumenta ogni volta che passiamo attraverso l'intero set di training set, nel nostro caso 4 set o 4 iterazioni.


Importante non confondere l'iterazione con l'epoca e comprendere la sequenza del loro incremento. primo no
una volta che l'iterazione aumenta, e poi l'epoca e non viceversa. In altre parole, non puoi prima addestrare una rete neurale solo su un set, poi su un altro, ecc. Devi allenare ogni set una volta per epoca. In questo modo, puoi evitare errori nei calcoli.

Errore

L'errore è una percentuale che rappresenta la discrepanza tra le risposte previste e ricevute. L'errore si forma ad ogni epoca e dovrebbe declinare. Se ciò non accade, stai facendo qualcosa di sbagliato. L'errore può essere calcolato in diversi modi, ma considereremo solo tre modi principali: Mean Squared Error (di seguito MSE), Root MSE e Arctan. Non ci sono restrizioni sull'uso come nella funzione di attivazione e sei libero di scegliere il metodo che ti dà i migliori risultati. Basta considerare che ogni metodo conta gli errori in modi diversi. In Arctan, l'errore, quasi sempre, sarà maggiore, poiché funziona secondo il principio: maggiore è la differenza, maggiore è l'errore. Root MSE avrà l'errore più piccolo, quindi molto spesso viene utilizzato MSE, che mantiene un equilibrio nel calcolo dell'errore.

Principali articoli correlati