francescomecca.eu/_posts/_site/2016-10-11-machine-learning-PARTE2.html
Francesco Mecca 6aef3588b9 reddit
2018-03-27 04:26:23 +02:00

62 lines
3.5 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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, loutput è (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 nellaggiustare i pesi per la seguente offerta, teniamo in considerazione la validità dei pesi usati in precedenza.
In altre parloe, in ogni operazione di valutazione dellauto salviamo lo stato dellofferta precedente (rifiutata o accettata) e la consideriamo quando vogliamo proporre lofferta successiva.
Abbiamo in questo modo una <em>recurrent neural network</em> (RNN) dove ogni stato precedente viene utilizzato per modificare loutput dellalgoritmo.</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 loutput della nostra RNN non ha alcun valore:
in questo esempio, abbiamo loutput 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>Loutput 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 allinfinito.
Ogni volta che la RNN produce delloutput 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 loutput migliori visibilmente.</p>
<p>Nel prossimo post tratterò una variante di rete neurale utilizzata per classificare e riconoscere immagini.</p>