Sei sulla pagina 1di 6

Reti neurali ricorrenti

Una rete neurale ricorrente (RNN) e una rete neurale specializzata


nell’elaborazione di sequenze, inteso come dati che sono correlati tra loro nel
tempo. La RNN più semplice e composta da un solo neurone che riceve un input,
produce un output e lo rimanda indietro a sé stesso per elaborarlo insieme all’input
successivo.
Ad ogni step temporale (frame), Questo neurone riceve un input x ( t ) insieme

all’output dell’istante precedente.


Possiamo srotolare nel tempo questa rete per ottenere:

Da ciò possiamo generalizzare a layer composti da più neuroni:


Il numero di basi introdotti da un layer di
questo tipo è:

n PESI =( n NEURONI +1 ) n INPUT + nNEURONI ∙ nOUTPUT

Traducendo ciò in formule abbiamo: ^y ( t ) =g ( W x ⋅ x ( t ) +W y ⋅ y ( t−1 ) +b )

L'obiettivo dell' addestramento è quindi quello di trovare: W x , W y e b

Poiché l’output di un layer ricorrente allo step temporale t è funzione degli output agli step temporali
precedenti, si può dire che questo abbia una forma di memoria, una parte di una rete neurale che preserva lo
stato degli step temporali precedenti prevede il nome di cella di memoria o cella, un singolo neurone
ricorrente un layer di neuroni ricorrenti è una cella di base.
Le cellule più complesse non fanno coincidere lo stato con l'output ma usano un'altra funzione:
h ( t )=f ( h (t −1 ) , x ( t ) ) ; f ≠ g
Un layer ricorrente può essere usato in diversi modi:
 sequence-to-sequence (STS): si dà al layer in input una
sequenza e si riceverà una sequenza in output shifta di un
campione nel futuro. Si può usare per predire il valore
successivo di una sequenza.

 sequence-to-vector(STV): Sì dai in ingresso al layer una sequenza, ignorando tutte le uscite eccetto
l'ultima. Si può usare per predire un valore numerico da una sequenza.

 vector- to- sequence ( VLS): fornisce alla rete un solo input e da questo gli fa generare una
sequenza.

Le ultime due tecniche possono essere combinate tra loro per formare una struttura encoder/decoder : si usa
all'inizio un SLV come encoder e alla fine un VLS come decoder. Viene utilizzato nei traduttori.
Il trucco per addestrare una rete ricorrente è quello di srotolarla nel tempo e poi usare le regole della back
propagation, questa strategia prende il nome di back propagation through time (BPTT). I neuroni delle reti
ricorrenti per default usano come funzione di attivazione la tangente iperbolica perché sperimentalmente
funziona meglio. Utilizzare queste celle di memoria semplici può andare bene per sequenze Corte perché non
hanno una memoria debole, per avere meccanismi di memoria più a lungo termine sono state inventate delle
celle più complesse quali LSTM e GRU.
La cella long short term memory(LSTM) funziona molto meglio di una cella di memoria semplice perché il
training converge più velocemente e riesce a cogliere dipendenze a lungo termine nelle sequenze in ingresso.
Le LSTM ragionano gestendo due vettori di Stato separati: uno per la memoria a lungo termine e uno per
quella a breve termine.

La memoria a lungo termine semplicemente dimentica informazioni vecchie secondo la decisione di un


forget gate, e ne apprende di nuove secondo la decisione di un input gate, dove per nuove si intende la
combinazione dello stato a breve termine precedente e dell'input.
La memoria a breve termine e l’output vengono generati filtrando la nuova memoria a lungo termine. La
cella che produce g(t) non è altro che una cella di memoria classica, utilizzata per aggiungere memoria a
lungo termine, le altre tre invece sono delle celle di memoria preposte al controllo dei gate. In breve, una
LSTM può imparare a riconoscere un input importante, salvarlo nella memoria a lungo termine ed estrarlo
quando non è più necessario.
La cella gated recurrent unit(GRU) è una versione semplificata dell’LSTM che però funziona altrettanto
bene, le principali semplificazioni sono:

 Entrambi i vettori di Stato sono stati uniti


in un unico vettore h(t).
 Qui un solo gate controller controlla sia il
forget che l’input gate inversamente, se
uno è aperto l'altro è chiuso.
 Non c'è un gate di output, l'intero vettore
di Stato viene mandato in output ad ogni
step, tuttavia c'è un nuovo gate controller
che controlla quale parte dello Stato
precedenti te sarà mostrato nel layer
principale.

Altre architetture
Oltre alle architetture che abbiamo studiato, ne esistono altre con scopi altrettanto specifici:
 Gli autoencoder sono reti neurali
usate per comprimere dati per mezzo
di una compressione lossy inventata
dall’algoritmo. Questa è composta da
due parti: un encoder che ha il
compito di codificare i campioni in
input; e un decoder che ha il compito
di decodificare i campioni
compressi. La versione compressa
del campione prende il nome di
spazio latente. La cosa interessante
degli autoencoder è che non hanno
bisogno delle label per essere addestrati perché le label sono i dati in ingresso: la rete ha il compito
di cercare di riprodurre il campione quanto più fedelmente possibile facendo passare attraverso uno
stadio intermedio di compressione.
y=x ⇒ ^y =x .
Il che lo rende un algoritmo ad apprendimento non supervisionato punto le applicazioni di questa
architettura sono quattro:
o Compressione e decompressione: possono comprimere i dati per poi decomprimerli
all’occorrenza.
o Denoising: possono rimuovere il rumore dei campioni, ad esempio dalle immagini
o Dimensionality reduction: possono essere usati come input per un'altra rete (solo l’encoder)
per rimuovere le features superflue.
o Transfer learning: possono essere addestrate per poi usare solo la encoder come parte
iniziale di un'altra rete.

 Generative adversarial network (GAN): questo reti partono dall’idea di encoder e decoder invertendo
le due parti. Sono composte da: un generatore
che ha il compito di generare campioni
sintetici quanto più realistici possibile e un
discriminatore che ha il compito di
riconoscere i campioni sintetici. Quello che si fa durante l'addestramento è mischiare i campioni
sintetici generati dal generatore con quelli reali e far addestrare il discriminatore riconoscerli, se il
generatore viene scoperto migliora i propri pesi, se invece sbaglia il discriminatore anch'esso
migliora i propri pesi. Il tutto procede fino ad arrivare ad un equilibrio chiamato equilibrio di Nesn.
una volta addestrate, le due componenti possono essere separate: il generatore può essere usato per
rigenerare campioni sintetici; e il discriminatore può essere usato per riconoscere campione sintetici.
Sperimentalmente, il discriminatore è più veloce usando come funzione di attivazione in output la
logit, questo è legata alla probabilità della formula:
x ef ( x)
LOGIT ( X )=log ⇒ P=
1+ x 1−e f (x )

Web Scraping
Il data scraping è una tecnica in cui il programma (software) estrae dati da un output human readable
proveniente da un altro programma. Nello specifico il web scraping è una tecnica per estrapolare dati da una
pagina web trasformando i dati non strutturati i dati strutturati (db, csv, ...). Il primo modo per fare web
scraping è quello di fare dom parsing: il software scarica l’HTML oppure XML di una pagina web e poi va
a ricercare i dati che gli servono andando a creare una struttura composta da nodi che prende il nome di
document object model (DOM), si crea quindi una struttura di oggetti innestati andando a formare un
albero. Questa tecnica diventa molto lento quando la pagina web è molto grande.
I web scraper ragionano in termini diversi: questi utilizzano i browser per estrarre i dati, una prima
distinzione può essere fatta tra: scraper che estrae i dati da una pagina; e crawler (o spider) che naviga tutti
i link presenti nelle pagine di un sito, andando a creare un grafo di documenti interconnessi. Il web scraping
e l'unico modo per estrarre i dati da un sito web che non fornisce API ok limita la banda in download.
il web scraping segue il seguente flusso di lavoro: prendi il sito tramite una libreria http, effettua il parsing
del documento HTML usando una libreria di parsing, salva i risultati in qualche formato.
Le sfide del web scraping sono:

 Scegliere le fonti giuste: i dati potrebbero essere errati, incompleti oppure non aggiornati.
 Non è detto che uno scrubber funzioni per molto tempo: i siti sono dinamici, tendono a cambiare UI
molto frequentemente, in più alcune funzionalità sono difficili da controllare.
 I dati sono volatili, potrebbero sparire da un momento all'altro.
 Lo scraping è in zona grigia: non sempre illegale farlo , anzi molto spesso le TOS lo vietano.

Selenium
selenium è una suite di tool per automatizzare il testing delle web applications e comprende: IDE, RC,

Webdriver, Grid.
Selenium IDE: è un tool di prototipazione rapido per costruire script di test, può essere usato da sviluppatori
con poca esperienza.
Selenium RC oppure selenium 1: inietta funzioni javascript nel browser quando questo è caricato.
Selenium webdriver: scritto per dare un interfaccia di programmazione superando alcune limitazioni di
selenium RC, fa uso del supporto nativo fornito dal browser tramite driver.
Selenium greed: tool per L'orchestration dei test, può eseguire i testi in parallelo su più browser, anche in
versioni multiple e diverse dello stesso browser

Potrebbero piacerti anche