Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Reti RBF e addestramento
In una rete RBF, le attivazioni delle unità nascoste sono date da:
hi = exp(-γi * |wi - x|^2)
Se wi = x, allora hi = e = 1 (massimo valore per la funzione di attivazione), mentre più wi - x diventa grande, più hi tende a 0.
Il parametro γi serve a specificare la larghezza dei "dossi" gaussiani delle unità nascoste, centrati da una locazione data da wi. Se γi è grande, allora solo i dati che sono molto vicini a wi hanno attivazioni diverse da zero.
Addestrare una rete RBF implica trovare buoni valori di γi, ossia i centri dei dossi gaussiani, di wi e di v, ossia le connessioni tra i dossi gaussiani e l'unità di output. Questo viene fatto tramite back-propagation.
Per fissare i dossi gaussiani si può procedere in diversi modi:
- Applicare la back-propagation per tentare di fissare i centri
- Fissare i centri a priori: un approccio è quello di avere un'unità RBF per ogni dato
centrata sul punto del dato. Scegliendo con attenzione i valori di γ e v si può ottenere un comportamento molto simile a quello ottenuto con KNN.
Cosa sono le reti neurali convoluzionali?
Le reti neurali convoluzionali sono delle reti neurali che si basano sull'utilizzo di un kernel per eseguire delle operazioni su delle immagini.
Un kernel è una griglia di pesi che viene sovrapposta a una immagine, centrata su un pixel.
Ogni peso è moltiplicato con il pixel sotto ad esso: l'output sul pixel centrale è dato da:
∑p=1..P Wp * pixelp
Viene quindi eseguita la somma per tutti i pixel nella griglia per il peso della griglia in posizione p per il pixel nella posizione p: restituisce come output solo il valore centrale della griglia.
Se l'input ha una dimensione maggiore di quella del kernel, si ha che il kernel viene sovrapposto all'immagine nei primi 4 pixel, calcola l'output e poi viene spostato di una posizione, calcolando l'altro.
output e così via: il kernel viene fatto scorrere da sinistra verso destra e dall'alto verso il basso. Il kernel può anche essere visto come un rilevatore di feature locali, come un rilevatore di linee verticali, orizzontali o di corner, a seconda di come sono posizionati i valori 1 nella griglia.
Le idee alla base delle reti convoluzionali sono le seguenti:
- I pesi del kernel vengono appresi dalla rete neurale attraverso la back-propagation
- Si usa lo stesso insieme di kernel su tutta l'immagine, fornendo l'invarianza alla traslazione
- Rispetto ad una rete fully-connected, in cui ogni pixel sarebbe collegato ad un neurone del primo strato, si ha una riduzione notevole del numero di parametri
Sono da configurare i seguenti componenti:
- Dimensione della griglia del kernel: tipicamente si utilizza un numero dispari in modo che ci sia un pixel centrale. Il kernel non deve essere quadrato.
- Padding: aggiunge dei pixel di valore 0 ai bordi dell'immagine. Serve a evitare
` per inserire un'interruzione di linea, ad esempio per separare i vari punti elencati Ecco come potrebbe apparire il testo formattato con i tag HTML: l'effetto lato, ossia che i pixel vicini ai bordi dell'immagini non siano usati come pixel centrali perché non ci sono abbastanza pixel nell'intorno. Senza utilizzare il padding si ha che i neuroni di ogni strato sono inferiori ai neuroni dello strato precedente in quanto il kernel riduce la dimensione dell'immagine: utilizzando il padding è possibile ottenere un output della stessa dimensione dell'input, in modo che il numero di neuroni in ogni strato rimanga costante.
Stride: è la dimensione del passo con cui il kernel si sposta sull'immagine. Quando lo stride è maggiore di 1 si ha che l'output è di dimensione minore dell'input.
Profondità: l'output potrebbe avere più livelli (es. immagine RGB), quindi si possono usare più kernel in cui l'output di ogni kernel è un singolo numero in ogni pixel. Quindi, se ci sono 10 kernel in uno strato, l'output di quello strato sarà composto da 10 livelli.avrà profondità 10. Le funzioni di attivazione possono essere: Rectified Linear Unit (ReLU): ReLU(z) = max(0,z), ossia restituisce 0 se z<0 e z se z>=0. Funzione sigmoidale: restituisce valori da 0 e 1. In caso di problemi di classificazione binaria si ha uno strato finale con un singolo neurone e un'attivazione sigmoidale, che restituisce la probabilità che la classe sia positiva o negativa. L'output è infatti un valore compreso tra 0 e 1, quindi può essere interpretato come una probabilità. In caso di una classificazione multiclasse si può procedere con una one hot encoding per ciascuna categoria, impostando dei vettori predefiniti per ogni classe e verificando l'uguaglianza con l'output. A cosa serve il pooling nelle reti neurali convoluzionali? Il pooling permette di ridurre la dimensione dell'immagine mappando un insieme di pixel in un singolo valore. Ci sono diversi possibili pooling: - Max-pool: ogni porzione di immagine viene mappata nel valore massimo presente nella porzione. - Average-pool: ogni porzione di immagine viene mappata nella media dei valori presenti nella porzione. - Sum-pool: ogni porzione di immagine viene mappata nella somma dei valori presenti nella porzione. Il pooling è utile per ridurre la dimensione dell'immagine e ridurre il numero di parametri da allenare nella rete neurale convoluzionale. Inoltre, il pooling può aiutare a rendere la rete neurale più robusta alle variazioni di posizione degli oggetti nell'immagine.
La distinta dell'immagine è rappresentata dal solo valore massimo di quella porzione di pixel. Il max-pool serve per rendere la rete più invariante alla traslazione: se si ha una sequenza di pixel, l'output è dato dal valore massimo di un gruppo di 3 pixel adiacenti. Spostando di una sola posizione ogni porzione, cambiano solo i pixel in output agli estremi, mentre quelli centrali non cambiano. Spostando il pool di una posizione non si ha una riduzione dell'immagine.
Average-pool: ogni porzione distinta dell'immagine è rappresentata dal solo valore medio di quella porzione di pixel.
Cross-channel Pooling: permette di fare il pooling di pixel che provengono dall'output di diverse operazioni convoluzionali. Induce un'invarianza a trasformazioni apprese, come le rotazioni di un'immagine. Data un'immagine e ad esempio 3 sue diverse rotazioni (l'originale e due rotazioni), facendo il pooling attraverso i canali si ottiene che
l'output sarà alto grazie al riconoscimento dell'immagine, ottenuto applicando 3 filtri convoluzionali.
Pooling with downsampling: l'operazione di pool considera una porzione (ad es. di lunghezza 3) con uno stride (es. stride = 2), ottenendo la riduzione del numero di pixel in output.
Cosa sono le regole di produzione e quali sono gli approcci per apprenderle?
Le regole di produzione permettono di apprendere un singolo concetto target (nel caso l'attributo target sia booleano) oppure un insieme di concetti. Sono regole della forma:
If Antecedente then Class=pos
L'insieme di regole si usa per fare classificazione provando tutte le regole sul dato da classificare e se ce n'è una che fa match allora si predice la classe positiva, mentre se nessuna fa match si predice la classe negativa.
Queste regole possono essere apprese con due metodi:
Utilizzare un algoritmo di copertura sequenziale: si esegue un ciclo finché
1. l'insieme di esempi
positivi non è vuoto, si apprende una regola e si rimuovono gli esempi positivi coperti dalla regola, ripetendo il ciclo con un insieme di esempi più piccolo. Il ciclo si ferma quando l'insieme di esempi positivi diventa vuoto.
Apprendere un albero di decisione e poi convertirlo in regole.
Si descriva a grandi linee l'algoritmo di copertura sequenziale per l'apprendimento di regole di produzione.
Caso con concetto target booleano
L'algoritmo di copertura sequenziale trova ad ogni esecuzione una regola antecedente congiuntiva, che è coerente (copre) con alcuni esempi positivi e con tutti gli esempi negativi. Una volta che si ha generato una regola si rimuove dall'insieme di esempi positivi gli esempi coperti, in modo da cercare regole per coprire gli esempi positivi rimanenti. L'algoritmo si ferma quando l'insieme degli esempi positivi diventa vuoto.
Il metodo di apprendimento di una regola riceve un insieme di esempi positivi e negativi come input.
input e produce una regola che copre molti esempi positivi e pochi o nessun esempio negativo: cerca di garantire un'alta accuratezza, ma non necessariamente un'alta copertura, ossia cerca di coprire pochissimi esempi negativi ma non è detto che copra una gran parte degli esempi positivi.
La procedura di apprendimento di una regola può essere implementata in diversi modi:
- Candidate-Elimination
- Ricerca da generale a specifico
Candidate-Elimination
- Inizializza S (l'insieme delle ipotesi più specifiche) a contenere un esempio positivo (l'esempio seme)
- Per ciascun esempio negativo applica la routine Update-G a G (l'insieme delle ipotesi più generali)
- Restituisce come regola una descrizione g da G
Dato che Update-G è stato applicato usando tutti gli esempi negativi, g non copre nessun esempio negativo, ma può coprire diversi esempi positivi.
Si ha che all'inizio l'insieme S delle ipotesi più specifiche
comprende un solo esempio positivo, mentre alla fine l'insieme g conterrà una serie di esempi positivi (incluso quello in s) e nessun esempio negativo.
Ricerca da generale a specifico
Si esegue una ricerca nello spazio delle regole, partendo dalla regola più generale con Antecedente vuoto e aggiungendo via via letterali all'Antecedente, nella forma Attributo=valore.
Ad ogni passo si aggiunge il letterale che produce la regola più promettente, ossia quello che migliora maggiormente le performance della regola.
Caso con concetto target non booleano (più di 2 classi)
Non si apprendono più solamente regole che hanno nel conseguente Vero, ma si apprende un insieme di regole con diversi conseguenti.
Due possibili approcci:
Lista ordinata di regole: per classificare un nuovo esempio si scorrono le regole dalla prima all'ultima e la prima che fa match fornisce nel conseguente la classificazione dell'esempio. L'ultima regola è la regola di default.
Viene usato da CN2. Lista non ordinata di regole: si prende l'esempio dal classificare, si controlla se fa match con una regola, si raccolgono tutte le regole che fanno match e si restituisce come classe quella più frequente tra gli esempi di training coperti dalle regole che fanno match. Se l'esempio non fa match con nessuna regola, allora la classificazione è data dalla classe più frequente tra gli esempi di training. Viene usato da AQ.
Che euristiche si possono usare per valutare le regole di produzione?
Per valutare le regole di produzione si possono usare le seguenti euristiche:
- Precision della regola
- Stima di Laplace
- Stima-m
Precision della regola: Sia n il numero di esempi coperti dalla regola c e cn il numero degli esempi classificati correttamente.