61 lines
3.5 KiB
HTML
61 lines
3.5 KiB
HTML
<p>Nel precedente <a href="/pescewanda/2016/11/10/machine-learning-intro/">post</a> abbiamo preso in considerazione una rete neurale molto basica.
|
||
Proviamo ora ad approfondire il concetto aggiungendo una proprietà fondamentale, la memoria.</p>
|
||
|
||
<h2 id="memoria-e-stati">Memoria e Stati</h2>
|
||
|
||
<p>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 <em>stato</em>.</p>
|
||
|
||
<p>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 <em>recurrent neural network</em> (RNN) dove ogni stato precedente viene utilizzato per modificare l’output dell’algoritmo.</p>
|
||
|
||
<h4 id="generazione-di-testo-attraverso-le-rnn">Generazione di testo attraverso le RNN</h4>
|
||
|
||
<p>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).</p>
|
||
|
||
<p>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:</p>
|
||
|
||
<p><code class="highlighter-rouge">
|
||
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
|
||
</code></p>
|
||
|
||
<p>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.</p>
|
||
|
||
<p>Dopo 300 iterazioni abbiamo un output di questo tipo:</p>
|
||
|
||
<p><code class="highlighter-rouge">
|
||
"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."
|
||
</code></p>
|
||
|
||
<p>Dopo quasi mille:</p>
|
||
|
||
<p><code class="highlighter-rouge">
|
||
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.
|
||
</code></p>
|
||
|
||
<p>Duemila:</p>
|
||
|
||
<p><code class="highlighter-rouge">
|
||
"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.
|
||
</code></p>
|
||
|
||
<p>Possiamo notare come l’output migliori visibilmente.</p>
|
||
|
||
<p>Nel prossimo post tratterò una variante di rete neurale utilizzata per classificare e riconoscere immagini.</p>
|
||
|