--- title: Capire il Machine Learning (parte 3) date: 2016-11-15 author: pesceWanda layout: post categories: - PesceWanda tags: - AI - Genetic algorithm - Neural networks - reti neurali - algoritmi genetici - programming --- ## Riconoscimento delle immagini Il machine learning viene utilizzato anche per il riconoscimento delle immagini. La tipologia di rete neurale utilizzata per questa applicazione è chiamata rete neural a convoluzione ( **convolutional neural networks**), abbreviata CNN. Innanzitutto consideriamo che ogni immagine può essere codificata come una matrice di valori ![pixel](/wp-content/uploads/2016/8.jpg) Vediamo ora quali sono le operazioni compiute da una **CNN** per riconoscere delle immagini. #### Convoluzione Durante la fase di apprendimento, la rete neurale analizza moltissime immagini (categorizzate) utilizzando dei "filtri", ovvero delle funzioni che mescolate all'input originale permettono di evidenziare dei pattern nell'immagine. Questi pattern corrispondono alle caratteristiche proprie di un oggetto (quali possono essere ad esempio per un uccello il becco, le piume, le ali) e nel caso queste sono presenti, possiamo riconoscere l'immagine. In questo esempio l'immagine di Wally é mescolata (l'operazione si chiama **convoluzione**) con un filtro "a cerchio" che risponde molto bene a caratteristiche come quella di possedere degli occhi. ![waldoblue](/wp-content/uploads/2016/bluefilter.png) La **convoluzione** é un'operazione che ha la proprietà di essere indipendente dalla posizione. Non importa la posizione degli occhi, quando applichiamo la **convoluzione** su un'immagine con un filtro "a cerchio" notiamo che gli occhi sono presenti. #### Subsampling Ogni segnale contiene del "rumore", ovvero degli elementi che la allontanano dal comportamento ideale. ![ideal](/wp-content/uploads/2016/ideal.jpg) ![real](/wp-content/uploads/2016/real.jpg) Attraverso il subsampling possiamo ridurre il rumore e rendere il nostro algoritmo meno suscettibile a queste piccole variazioni; benché l'immagine abbia una risoluzione minore, i pattern rimangono. ![waldosub](/wp-content/uploads/2016/sub.png) #### Connessione completa Alla fine dell'analisi tutte le caratteristiche estrapolate vengono considerate nell'insieme e in questo modo possiamo capire a quale categoria appartiene l'immagine. Questo procedimento a livello algoritmo si esplicita con una connessione completa fra tutti i nodi della rete neurale che possono poi restituire l'output (probabilità che l'immagine appartenga ad una determinata categoria). #### Fase di rinforzo Durante il training é presente un'ultima fase (o strato), chiamato più propriamente **loss layer**. Questo strato provvede a dare un **feedback** alla rete neurale analizzando l'output in relazione ai dati di partenza (ovvero le immagini già categorizzate).