76 lines
3.4 KiB
Markdown
76 lines
3.4 KiB
Markdown
---
|
|
title: Capire il Machine Learning (parte 2)
|
|
date: 2016-11-11
|
|
author: pesceWanda
|
|
layout: post
|
|
categories:
|
|
- PesceWanda
|
|
tags:
|
|
- AI
|
|
- Genetic algorithm
|
|
- Neural networks
|
|
- reti neurali
|
|
- algoritmi genetici
|
|
- programming
|
|
---
|
|
|
|
Nel precedente [post](/pescewanda/2016/11/10/machine-learning-intro/) abbiamo preso in considerazione una rete neurale molto basica.
|
|
Proviamo ora ad approfondire il concetto aggiungendo una proprietá fondamentale, la memoria.
|
|
|
|
## Memoria e Stati
|
|
|
|
La rete neurale che abbiamo modellato non ha alcun tipo di memoria. con gli stessi dati di input, l'output è (quasi certamente) lo stesso.
|
|
Possiamo ampliare il nostro modello introducendo il concetto di _stato_.
|
|
|
|
Poniamo il problema della vendita delle auto in questo modo:
|
|
immaginiamo di avere un algoritmo di machine learning che valuti le auto e faccia delle offerte di vendita che conseguentemente vengono valutate da delle persone e accettate oppure rifiutate.
|
|
Ogni volta che una proposta viene accettata la teniamo in memoria e nell'aggiustare i pesi per la seguente offerta, teniamo in considerazione la validità dei pesi usati in precedenza.
|
|
In altre parloe, in ogni operazione di valutazione dell'auto salviamo lo stato dell'offerta precedente (rifiutata o accettata) e la consideriamo quando vogliamo proporre l'offerta successiva.
|
|
Abbiamo in questo modo una _recurrent neural network_ (RNN) dove ogni stato precedente viene utilizzato per modificare l'output dell'algoritmo.
|
|
|
|
#### Generazione di testo attraverso le RNN
|
|
|
|
Immaginiamo di voler creare un algoritmo che utilizzando una RNN possa generare del testo o prevedere quale sarà il prossimo carattere inserito (come nel caso del T9).
|
|
|
|
Inizialmente dobbiamo permettere alla RNN di analizzare almeno qualche sample del nostro testo.
|
|
La RNN analizza carattere dopo carattere e costruisce un grande grafo dove collega ogni carattere al suo successivo.
|
|
Inizialmente l'output della nostra RNN non ha alcun valore:
|
|
in questo esempio, abbiamo l'output di una RNN allenata attraverso Guerra e Pace:
|
|
|
|
```
|
|
tyntd-iafhatawiaoihrdemot lytdws e ,tfti, astai f ogoh eoase rrranbyne 'nhthnee e
|
|
plia tklrgd t o idoe ns,smtt h ne etie h,hregtrs nigtike,aoaenns lngty
|
|
```
|
|
|
|
L'output prodotto dalla RNN, benchè non abbia nessun valore per un umano, viene analizzato dalla RNN per arricchire il grafo costituito inizialmente dai caratteri (e le loro relazioni) di Guerra e Pace.
|
|
Questo procedimento continua all'infinito.
|
|
Ogni volta che la RNN produce dell'output lo salva e lo riutilizza come input in maniera ricorsiva per generare nuovo output.
|
|
|
|
Dopo 300 iterazioni abbiamo un output di questo tipo:
|
|
|
|
```
|
|
"Tmont thithey" fomesscerliund
|
|
Keushey. Thom here
|
|
sheulke, anmerenith ol sivh I lalterthend Bleipile shuwy fil on aseterlome
|
|
coaniogennc Phe lism thond hon at. MeiDimorotion in ther thize."
|
|
```
|
|
|
|
Dopo quasi mille:
|
|
|
|
```
|
|
Aftair fall unsuch that the hall for Prince Velzonski's that me of
|
|
her hearly, and behs to so arwage fiving were to it beloge, pavu say falling misfort
|
|
how, and Gogition is so overelical and ofter.
|
|
```
|
|
|
|
Duemila:
|
|
|
|
```
|
|
"Why do what that day," replied Natasha, and wishing to himself the fact the
|
|
princess, Princess Mary was easier, fed in had oftened him.
|
|
Pierre aking his soul came to the packs and drove up his father-in-law women.
|
|
```
|
|
|
|
Possiamo notare come l'output migliori visibilmente.
|
|
|
|
Nel prossimo post tratterò una variante di rete neurale utilizzata per classificare e riconoscere immagini.
|