60 lines
2.8 KiB
Markdown
60 lines
2.8 KiB
Markdown
|
---
|
||
|
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).
|