ANN Flashcards

1
Q

Cos’è una ANN?

A

Le ANN (Artificial Neural Networks), traducibili in italiano come reti neurali artificiali, sono un tipo di modello di apprendimento automatico ispirato al funzionamento del cervello umano. Le ANN sono composte da unità di calcolo chiamate neuroni artificiali o nodi, che sono collegati tra loro per formare una rete interconnessa.

Ogni neurone artificiale riceve input da altri neuroni attraverso i collegamenti, esegue un calcolo sui suoi input e produce un output. Questo calcolo spesso coinvolge una funzione di attivazione che introduce una non linearità nel modello. I collegamenti tra i neuroni hanno associati dei pesi che indicano l’importanza e l’influenza dell’input su un neurone specifico.

Le reti neurali artificiali sono in grado di apprendere dai dati attraverso un processo di addestramento. Durante l’addestramento, i pesi dei collegamenti vengono aggiornati in base all’errore tra l’output prodotto dalla rete e l’output desiderato. L’obiettivo dell’addestramento è quello di minimizzare l’errore attraverso un algoritmo di ottimizzazione come la discesa del gradiente.

Le ANN sono ampiamente utilizzate in diversi ambiti dell’apprendimento automatico e dell’intelligenza artificiale. Possono essere applicate a problemi di classificazione, regressione, riconoscimento di pattern, elaborazione del linguaggio naturale, visione artificiale e molti altri.

Alcune delle architetture di reti neurali artificiali più comuni includono:

Feedforward Neural Networks (Reti neurali feedforward): Questa è la forma più semplice di rete neurale, in cui l'informazione fluisce solo in una direzione, in avanti, senza cicli o feedback. Queste reti sono composte da uno o più strati di neuroni, inclusi un input layer, uno o più hidden layer e un output layer.

Convolutional Neural Networks (Reti neurali convoluzionali): Queste reti sono specializzate nell'elaborazione di dati strutturati in forma di griglia, come immagini o dati bidimensionali. Sono caratterizzate dall'utilizzo di strati convoluzionali che applicano filtri spaziali per estrarre caratteristiche dalle immagini.

Recurrent Neural Networks (Reti neurali ricorrenti): Queste reti sono progettate per elaborare dati sequenziali, come testo o serie temporali, in cui l'output di un neurone può tornare come input a neuroni precedenti. Questo feedback permette alle reti neurali ricorrenti di catturare dipendenze temporali e modelli a lungo termine.

Long Short-Term Memory (LSTM): Le LSTM sono un tipo di rete neurale ricorrente che sono in grado di gestire efficacemente problemi in cui si presentano dipendenze temporali a lungo termine. Le LSTM sono progettate per prevenire il problema della scomparsa o esplosione del gradiente, che può verificarsi durante la retropropagazione dell'errore nelle reti neurali tradizionali.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Cos’è un percettrone?

A

Il percettrone è una delle architetture più semplici di una ANN.
Gli input sono numero piuttosto che binari on/off
Viene effettuata una somma pesata in cui ogni input è moltiplicato con il peso della corrispondente
connessione, ed a questa somma viene aggiunto il termine chiamato bias.
Il risultato viene passato ad una funzione di attivazione che lascia passare o meno il segnali agli strati successivi.

In termini più tecnici, dato un vettore di input x=[x1,x2,…,xn] e un vettore di pesi w=[w1,w2,…,wn], la somma pesata degli input è z=w1⋅x1+w2⋅x2+…+wn⋅xn​.
La funzione di attivazione, spesso una funzione a gradino, determina se il percettrone deve “scattare” (cioè produrre un’uscita) in risposta alla somma pesata z.

Un percettrone può essere addestrato per imparare i pesi che massimizzano la sua capacità di eseguire una classificazione binaria. Ad esempio, può imparare a distinguere tra due categorie diverse in base alle caratteristiche degli input. Tuttavia, i percettroni hanno limitazioni nella loro capacità di apprendere relazioni complesse, e non sono adatti per problemi più sofisticati come la rappresentazione di funzioni booleane complesse o l’apprendimento di modelli non lineari.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Cos’è la funzione sigmoid?

A

La funzione di attivazione sigmoide, spesso indicata come sigmoide o funzione logistica, è una delle funzioni di attivazione più comuni utilizzate nelle reti neurali. La sua forma caratteristica è una curva a forma di “S” che mappa un input numerico in un intervallo compreso tra 0 e 1.

La formula matematica della funzione di attivazione sigmoide è:

f(x) = 1 / (1 + e^(-x))

dove x è l’input per la funzione. L’esponenziale negativo dell’input viene elevato alla base di Nepero (e) e il risultato viene utilizzato come denominatore nel calcolo del valore della funzione. Il valore della funzione sigmoide è quindi ottenuto dividendo 1 per il denominatore calcolato.

La funzione sigmoide ha diverse proprietà interessanti che la rendono utile nelle reti neurali:

Range compreso tra 0 e 1: La funzione sigmoide limita l'output nell'intervallo tra 0 e 1, il che può essere interpretato come una probabilità o una misura di attivazione del neurone. Questa caratteristica è utile in problemi di classificazione binaria in cui l'output rappresenta la probabilità di appartenenza a una determinata classe.

Funzione continua e differenziabile: La funzione sigmoide è continua e differenziabile in tutto il suo intervallo di definizione. Questa proprietà è importante per l'addestramento delle reti neurali utilizzando algoritmi di discesa del gradiente, che richiedono il calcolo delle derivate per aggiornare i pesi.

Non linearità: La funzione sigmoide introduce una non linearità nella rete neurale, consentendo di modellare relazioni complesse tra gli input e gli output. Questa non linearità è cruciale per l'apprendimento di modelli non lineari da parte delle reti neurali.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Classificatore Multioutput (ANN)

A

In un contesto di percettrone, un classificatore multioutput si riferisce a un percettrone che è in grado di effettuare previsioni su più classi contemporaneamente. In generale, i percettroni sono modelli di rete neurale che sono in grado di eseguire solo una classificazione binaria, cioè distinguere tra due classi. Tuttavia, è possibile estendere il percettrone per gestire problemi di classificazione multioutput.

Una delle tecniche per implementare un classificatore multioutput in un percettrone è l’utilizzo della codifica one-hot. La codifica one-hot rappresenta le classi come vettori binari di dimensione pari al numero totale di classi. In questo caso, ogni neurone di output nel percettrone rappresenta una classe specifica. Ad esempio, se ci sono tre classi possibili, il vettore di output sarà composto da tre neuroni, ciascuno dei quali rappresenta una classe. Durante l’addestramento, il percettrone imparerà a produrre l’output corretto per ogni classe.

Il processo di addestramento di un percettrone multioutput è simile a quello di un percettrone binario, ma coinvolge più neuroni di output e richiede un’adeguata formulazione dell’errore da minimizzare. Durante l’addestramento, l’errore viene propagato all’indietro attraverso la rete neurale e i pesi dei collegamenti vengono aggiornati in base all’errore commesso per ogni classe.

Un esempio di applicazione di un percettrone multioutput potrebbe essere il riconoscimento di caratteri o cifre scritte a mano. In questo caso, il percettrone avrebbe un neurone di output per ciascuna classe possibile, ad esempio da 0 a 9, e il suo compito sarebbe quello di identificare correttamente il carattere rappresentato da un’immagine in input.

Tuttavia, va notato che il percettrone, come modello di rete neurale molto semplice, potrebbe non essere adeguato per problemi di classificazione multioutput complessi o con dati ad alta dimensionalità. Per affrontare problemi più complessi, sono spesso necessari modelli di rete neurale più avanzati, come le reti neurali multistrato o le reti neurali convoluzionali, che possono gestire con maggiore flessibilità classificazioni multioutput.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Regola di Hebb

A

La regola di Hebb afferma che “se due neuroni sono attivi contemporaneamente, la connessione sinaptica tra di essi viene rafforzata”. In termini delle reti neurali artificiali, ciò significa che se l’output di un neurone è correlato all’attivazione di un altro neurone, il peso della connessione tra i due neuroni viene aumentato.

La regola di Hebbian può essere formalmente espressa come:

Δw = η * xi * yj

dove Δw rappresenta la variazione del peso della connessione, η è il tasso di apprendimento (un parametro che controlla la velocità di apprendimento), xi è l’attivazione del neurone di input e yj è l’attivazione del neurone di output.

In pratica, l’apprendimento di una rete neurale mediante la regola di Hebbian avviene iterativamente durante l’addestramento. Durante ogni iterazione, i pesi sinaptici vengono aggiornati in base alla correlazione tra le attivazioni dei neuroni di input e di output. Ciò consente alla rete neurale di apprendere i modelli o le regolarità presenti nei dati di addestramento.

Tuttavia, va notato che la regola di Hebbian semplice può portare a problemi come l’instabilità o il sovrallenamento. Per affrontare queste problematiche, sono stati sviluppati algoritmi di apprendimento più sofisticati, come la retropropagazione dell’errore (backpropagation), che combinano principi di apprendimento basati sulla regola di Hebbian con il calcolo del gradiente per l’ottimizzazione dei pesi delle reti neurali.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Teorema di convergenza del percettrone

A

Il teorema di convergenza del percettrone afferma che se un insieme di dati di addestramento è linearmente separabile, cioè esiste un iperpiano che può separare completamente le istanze di una classe da quelle dell’altra classe, allora l’algoritmo di addestramento del percettrone terminerà in un numero finito di passi e troverà un vettore di pesi che definisce l’iperpiano di separazione.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Percettrone multi-layer

A

Un percettrone multistrato (Multi-Layer Perceptron, MLP) è un tipo di rete neurale artificiale (ANN) che consiste di uno o più strati intermedi, noti come strati nascosti, tra lo strato di input e lo strato di output. È chiamato “multistrato” perché ha una struttura a più livelli di neuroni interconnessi.

La struttura del percettrone multistrato è caratterizzata da neuroni artificiali organizzati in modo sequenziale, dove ogni neurone di uno strato è collegato a tutti i neuroni dello strato successivo tramite connessioni sinaptiche. L’input fluisce attraverso la rete neurale, passando attraverso gli strati nascosti, prima di produrre un’output finale nello strato di output.

I neuroni all’interno di un percettrone multistrato utilizzano una funzione di attivazione non lineare, come la funzione sigmoidale o la funzione ReLU (Rectified Linear Unit), per introdurre la non linearità nella rete. Questo permette al percettrone multistrato di approssimare funzioni complesse e affrontare problemi di classificazione o regressione non lineari.

L’apprendimento in un percettrone multistrato avviene mediante l’algoritmo di retropropagazione dell’errore (backpropagation). Durante il processo di addestramento, l’errore tra l’output previsto e l’output desiderato viene propagato all’indietro attraverso la rete, consentendo di calcolare l’errore commesso da ciascun neurone. I pesi delle connessioni sinaptiche vengono poi aggiornati in base all’errore calcolato, utilizzando una tecnica di ottimizzazione come la discesa del gradiente, al fine di minimizzare l’errore complessivo della rete.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Cos’è la BackPropagation nelle ANN?

A

La retropropagazione è un metodo di ottimizzazione iterativo che permette alla rete neurale di adattare i suoi pesi in base all’errore di previsione durante la fase di addestramento. Questo processo coinvolge diverse fasi:

Forward Pass (Passaggio in avanti): Durante questa fase, i dati di input vengono alimentati attraverso la rete neurale, passando attraverso le diverse unità di elaborazione (neuroni) e le loro connessioni pesate. Questo processo genera un'output previsto.

Calcolo dell'Errore: L'output previsto viene confrontato con l'output desiderato (etichetta corretta) per calcolare l'errore di previsione. Questo errore rappresenta la discrepanza tra ciò che la rete ha previsto e ciò che avrebbe dovuto prevedere.

Backward Pass (Passaggio all'indietro): Durante questa fase, l'errore calcolato viene propagato all'indietro attraverso la rete. L'obiettivo è calcolare l'effetto che ogni peso ha sull'errore totale. Questo viene fatto utilizzando la derivata parziale dell'errore rispetto a ciascun peso.

Aggiornamento dei Pesi: Dopo aver calcolato le derivate dei pesi, gli aggiornamenti vengono effettuati utilizzando un algoritmo di ottimizzazione come la discesa del gradiente. Questo algoritmo modifica i pesi in modo proporzionale alla derivata dell'errore rispetto a ciascun peso, cercando di minimizzare l'errore complessivo.

Iterazione: I passaggi 1-4 vengono ripetuti per diversi esempi di addestramento, in modo iterativo, fino a quando la rete non raggiunge un livello soddisfacente di prestazioni. In genere, questo richiede diverse iterazioni attraverso l'intero set di addestramento.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Classificazione nelle ANN

A

Ci sono due tipi di classificazione:
* Classificazione binaria: ogni output corrisponde ad una classe binaria differente;
* Classificazione generale: Quando le classi sono esclusive lo strato di output è tipicamente
modificato sostituendo le funzioni di attivazione con una funzione di attivazione softmax
La funzione Softmax è una funzione che prende come input un vettore di “K” numeri reali e lo normalizza in una distribuzione di probabilità costituita da “K” probabilità.
Scegliamo la classe con la probabilità più alta.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly