User Tools

Site Tools


neurali:introduzione

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
neurali:introduzione [2016/02/20 18:42] – aggiunto indice profproneurali:introduzione [2023/06/09 09:04] (current) profpro
Line 1: Line 1:
 +^ [[neurali:indice|{{:neurali:indice.png?60}}]] ^ [[neurali:indice]] ^
 +====== Reti neurali (o neuronali) ======
  
 +Un sistema nervoso biologico è composto da un insieme di cellule nervose ([[neurali:neuroni]]) collegate tra di loro.
 +Le reti neurali cercano di simulare, con un modello matematico, il comportamento di un sistema biologico.
 +Le reti neurali di prima generazione riescono a realizzare solo delle funzioni matematiche.
 +
 +
 +
 +===== Reti neurali Artificiali (ANN) =====
 +In biologia i neuroni si possono classificare in //sensitivi// e //motori//.
 +Analogamente anche nelle reti neurali artificiali si ricevono dati di ingresso e producono dati di uscita.
 +Nella seguente figura i neuroni sensitivi che ricevono dati in ingresso sono colorati in azzurro, e i neuroni motori, che producono dati in output, in arancio.
 +Tuttavia, invece del termine //neurone//, si usa il termine //percettrone//.
 +
 +{{ :neurali:rete.png?200 |}}
 +
 +====Dimensioni====
 +Il numero di neuroni in input determina la dimensione dello spazio dei dati di input. Serve una ulteriore dimensione per ogni ulteriore grado di libertà dello spazio di input.
 +Lo stesso si può dire per la dimensione dell'output e dello spazio di output.
 +Per comprendere perché una rete può produrre in output un vettore invece che uno scalare, si veda come si risolvono i [[neurali:pybrain_classificazioni_con_ffn|problemi di classificazione]]
 +
 +
 +Semplificando un po' la realtà, si può dire che un neurone è una cellula composta da:
 +  * un corpo centrale (detto **soma**)
 +  * più linee (dette **dendriti**) che conducono i segnali elettrochimici verso il neurone 
 +  * una sola linea (detta **assone**) che conduce un segnale in uscita 
 +
 +{{ :neurali:neuron.png?200 |}}
 +
 +Il neurone ha limitate capacità di elaborazione, ma il //sistema// rete neurale può elaborare dati grazie all'**elevato numero di neuroni** e di **interconnessioni** tra neuroni.
 +Analogamente anche il percettrone ha diverse linee di input. L'output prodotto dal percettrone è il risultato di una [[neurali:percettrone#funzione di attivazione]] (lineare oppure non lineare)
 +
 +====Utilizzi====
 +Attualmente le reti neurali possono fornire soluzioni a problemi come il riconoscimento di forme, o simili, come il raggruppamento in categorie di oggetti. Quindi riescono ad applicare regole semplici anche per i problemi complessi, senza il bisogno di dover fornire esplicitamente queste regole, utilizzando solo un addestramento iniziale.
 +In breve, si usano quando non esiste un algoritmo noto.
 +
 +Alcune delle caratteristiche distintive delle reti neurali (artificiali) rispetto ai tradizionali sistemi di elaborazione automatica dei dati sono:
 +  * hanno una fase di **apprendimento** con dati di input appositamente preparati, diversa dalla fase di **produzione**
 +  * possono fornire un adeguato output anche quando si forniscono in input dati diversi da quelli della fase di apprendimento
 +
 +Possono risolvere diversi tipi di [[neurali:problemi e applicazioni]]
 +===== Apprendimento oppure Ottimizzazione? =====
 +
 +Durante la fase di [[neurali:addestramento|apprendimento (o addestramento)]] vengono sistemati sulle connessioni tra i neuroni ([[neurali:neuroni#sinapsi]]) dei pesi (numerici) che determinano e modificano l'output.
 +L'addestramento iniziale (con input prestabiliti) può essere ripetuto così a lungo da ottenere per questi input esattamente le risposte attese per input di cui sono noti gli output, ma questo potrebbe portare ad ottenere risposte errate per altri input ([[neurali:parametri di progettazione ann|overfitting]]).
 +
 +Per questo motivo, durante l'addestramento, si svolge una specie di **problema di ottimizzazione**: non si desidera fissare dei pesi che producono tutti i risultati attesi, ma quelli che minimizzano l'[[neurali:errore quadratico medio]] considerando l'intero gruppo di dati.
 +
 +==== Approfondimento ====
 +
 +metodi risolutivi del precedente problema di ottimizzazione:
 +  - standard optimization heuristics
 +    - simulated annealing
 +    - [[neurali:Algoritmo genetico]] [[http://en.wikipedia.org/wiki/Genetic_algorithms|Genetic algorithms]]
 +  - gradient descent algorithms
 +    - backpropagation (richiede di conoscere gli output desiderati) > apprendimento supervisionato
 +     - RPROP
 +    - quickprop
 +  - metodo dei minimi quadrati
 +  - regressione lineare