Presentazione

Non si inizia l’intuizione senza preparazione. Leggendo questo articolo, vedrete che ogni parola dipende dalla vostra comprensione delle parole del passato. Non scarti tutto e ricominci a pensare senza preparazione. Le vostre considerazioni sono diligenti.

Le reti neurali convenzionali non possono farlo, e sembra essere una carenza significativa. Per esempio, immaginate di dover organizzare il tipo di occasione che si presenta in ogni punto di un film. Non è chiaro come un sistema neurale convenzionale possa utilizzare il suo pensiero sulle occasioni passate nel film per consigliare quelle successive.

Le reti neurali ripetitive affrontano questo problema. Sono sistemi con dei cerchi al loro interno, che permettono ai dati di durare nel tempo.

Nello schema sopra riportato, un grumo del sistema neurale A, vede alcune informazioni e produce un ht di valore. Un cerchio permette di passare i dati a partire da una fase del sistema e poi a quella successiva. Un sistema neurale intermittente può essere pensato come numerosi duplicati di un sistema simile, ognuno dei quali passa un messaggio ad un successore. Pensate a cosa succede nel caso in cui srotoliamo il cerchio:

Questa natura a catena scopre che i sistemi neurali ripetitivi sono personalmente identificati con raggruppamenti e registrazioni. Sono la normale ingegneria dei sistemi neurali da utilizzare per tali informazioni. Inoltre, sono sicuramente utilizzati! Nel corso degli ultimi due anni, ci sono stati risultati strabilianti applicando le RNN a una serie di questioni: riconoscimento del discorso, visualizzazione del linguaggio, interpretazione, sottotitolazione delle immagini… La lista continua.

Nonostante non sia ancora obbligatorio, sarebbe utile per l’utente comprendere cosa sono i WordVector. Ecco il mio precedente blog su Word2Vec, una procedura per realizzare WordVectors.
Cosa sono i sistemi neurali ripetitivi

Un vincolo evidente dei sistemi neurali vanilla (ed inoltre dei sistemi convoluzionali) è che la loro interfaccia di programmazione è eccessivamente obbligata: essi riconoscono un vettore di dimensioni fisse come informazione (per esempio un’immagine) e producono un vettore di dimensioni fisse come rendimento (per esempio le probabilità di varie classi). Non solo: questi modelli svolgono questa mappatura utilizzando una misura fissa di progressi computazionali (per esempio il numero di strati nel modello).

La spiegazione centrale che le reti ripetitive sono tanto più energizzanti è che ci permettono di lavorare su successioni di vettori: Accordi nelle informazioni, nel rendimento, o nel caso più ampio entrambi.

Un paio di modelli possono rendere tutto questo sempre più concreto:

Ogni forma quadrata è un vettore e i bulloni parlano alle capacità (ad esempio il duplicato del quadro). I vettori informativi sono in rosso, i vettori di resa sono in blu e i vettori di resa sono in blu e i vettori verdi tengono lo stato dell’RNN (maggiori informazioni su questo presto). Da sinistra a destra:

Metodo vanigliato di gestione senza RNN, dal contributo di dimensione fissa al rendimento di dimensione fissa (per esempio il raggruppamento di immagini).

Raggruppamento del rendimento (ad esempio, la sottotitolazione delle immagini prende un’immagine e produce una frase di parole).

Raggruppamento dei contributi (per esempio indagine d’opinione in cui una data frase è delegata comunicando un’ipotesi positiva o negativa)

Le informazioni sulle successioni e la resa dell’arrangiamento (per esempio Machine Interpretation: un RNNN analizza una frase in inglese e successivamente produce una frase in francese).

Abbinamento di informazioni di raggruppamento e resa (ad esempio disposizione video in cui si desidera contrassegnare ogni fotogramma del video).

Si noti che per ogni situazione non ci sono imperativi preindicati sulla lunghezza delle successioni alla luce del fatto che il cambiamento ripetitivo (verde) è fisso e può essere applicato lo stesso numero di volte che vogliamo.
Calcolo RNN

E come ci riescono?

Riconoscono un vettore informativo x e danno un vettore di rendimento y. Tuttavia, la sostanza di questo vettore di rendimento non è influenzata solo dalle informazioni che avete appena rafforzato, ma anche dall’intera storia delle fonti di dati che avete sostenuto in precedenza. Composta come una classe, l’interfaccia di programmazione dell’RNN comprende un lavoro a passi solitari:

rnn = RNNN()

y = rnn.step(x) # x è un vettore informativo, y è il vettore di rendimento del RNN

La classe RNN ha un po’ di interior express che ha l’opportunità di rinfrescarsi ogni volta che viene chiamato un passo. Nel caso meno difficile, questo stato comprende un solitario avvolto vettore h. Ecco un’esecuzione del lavoro di progressione in un RNNN vaniglia: Lo stato sudato self.h viene introdotto con il vettore zero. Il lavoro np.tanh (digressione iperbolica) attualizza una non linearità che schiaccia le iniziazioni all’intervallo [-1, 1].
classe RNN:

def step(auto, x):

aggiorna lo stato nascosto

self.h = np.tanh(np.dot(self.W_hhh, self.h) + np.dot(self.W_xh, x))

calcolare il vettore di uscita

y = np.dot(self.W_hy, self.h)

ritorno y
Quanto sopra specifica il passaggio in avanti di un RNN alla vaniglia. I parametri di questo RNN sono le tre matrici –
W_hhh : Matrice basata sullo stato precedente nascosto
W_xh : Matrice basata sull’ingresso in corrente
W_hy : Matrice basata tra stato nascosto e uscita
Quindi come funziona

Ci sono due termini all’interno del tanh: uno dipende dallo stato passato avvolto e l’altro dalle informazioni presenti. In np.dot numpy è l’aumento della rete. I due intermedi collaborano con l’espansione, e in seguito vengono schiacciati dal tanh nel nuovo vettore di stato.
La notazione matematica per l’aggiornamento dello stato nascosto è –

dove si applica il tanh elementwise.
Introduciamo le reti della RNN con numeri irregolari e la maggior parte del lavoro durante la preparazione va nella ricerca delle griglie che offrono l’ascesa a comportamenti allettanti, come stimato con qualche lavoro sfortunato che comunica la vostra inclinazione a quali tipi di rendimenti y vorreste trovare alla luce delle vostre info successioni x
Troveremo in un pezzo, gli RNN uniscono il vettore di informazione con il loro vettore di stato con una capacità fissa (ancora appresa) di fornire un altro vettore di stato.
Ora andiamo in profondità –
y1 = rnn1.step(x)
y = rnn2.step(y1)
In fin dei conti, abbiamo due RNNN separate: Una RNN sta accettando i vettori informativi e la seconda RNN sta ottenendo il rendimento della prima RNN come sua informazione. Ma nessuna di queste RNN conosce o si preoccupa – è tutto, solo vettori che entrano ed escono, e qualche angolo che scorre attraverso ogni modulo durante il backpropagation.

Vorrei fare rapidamente riferimento a una gran parte di noi che utilizza un piano marginalmente inaspettato rispetto a quella che ho esposto sopra, chiamata organizzazione a lunga memoria momentanea (LSTM). L’LSTM è un tipo specifico di sistema intermittente che funziona marginalmente meglio, desumibile dalle sue condizioni di aggiornamento più dominanti e da alcuni elementi di backpropagazione coinvolgenti. Non entrerò nelle sottigliezze, eppure tutto quello che ho detto sugli RNN rimane esattamente l’equivalente, con l’eccezione della struttura scientifica per l’elaborazione dell’aggiornamento (la linea self.h = … ) diventa un po’ più contorta. Da qui in poi utilizzerò le espressioni “RNN/LSTM” al contrario, ma tutti gli esami in questo post utilizzano un LSTM.