Perché i pesi delle reti RNN / LSTM sono condivisi nel tempo?


20

Di recente mi sono interessato agli LSTM e sono stato sorpreso di apprendere che i pesi sono condivisi nel tempo.

  • So che se condividi i pesi nel tempo, le sequenze temporali di input possono avere una lunghezza variabile.

  • Con i pesi condivisi hai molti meno parametri da allenare.

Secondo la mia comprensione, il motivo per cui uno si trasformerebbe in un LSTM rispetto ad altri metodi di apprendimento è perché credi che ci sia una sorta di struttura / dipendenza temporale / sequenziale nei tuoi dati che vorresti imparare. Se sacrifichi il "lusso" di lunghezza variabile e accetti lunghi tempi di calcolo, un RNN / LSTM senza pesi condivisi (cioè per ogni passaggio in cui hai pesi diversi) avrebbe prestazioni migliori o c'è qualcosa che mi manca?

Risposte:


17

La risposta accettata si concentra sul lato pratico della domanda: richiederebbe molte risorse, se i parametri non fossero condivisi. Tuttavia, la decisione di condividere i parametri in un RNN è stata presa quando un serio calcolo era un problema (anni '80 secondo wiki ), quindi credo che non fosse l'argomento principale (anche se ancora valido).

Esistono ragioni teoriche pure per la condivisione dei parametri:

  • Aiuta ad applicare il modello ad esempi di diverse lunghezze. Durante la lettura di una sequenza, se il modello RNN utilizza parametri diversi per ogni passaggio durante l'allenamento, non si generalizzerà a sequenze invisibili di lunghezze diverse.

  • Spesso, le sequenze operano secondo le stesse regole in tutta la sequenza. Ad esempio, in PNL:

                                                     "Lunedì nevicava"

                                                     "Lunedì nevicava"

... queste due frasi significano la stessa cosa, anche se i dettagli sono in parti diverse della sequenza. La condivisione dei parametri riflette il fatto che stiamo eseguendo la stessa attività in ogni passaggio, di conseguenza, non dobbiamo riapprendere le regole in ogni punto della frase.

LSTM non è diverso in questo senso, quindi utilizza anche parametri condivisi.


4
Questa è di gran lunga la ragione più importante della risposta accettata!
jlh

Credo che la mia risposta sia stata mal caratterizzata qui. Ho detto che sarebbero necessarie più risorse computazionali senza condivisione del peso, ma questo non era inteso come punto principale. In particolare, ho anche scritto che un modello senza pesi condivisi sarebbe molto più flessibile e quindi più incline al sovradimensionamento. La condivisione dei pesi nel tempo è un modo per superare questo. Come giustamente sottolineato qui, questa strategia corrisponde al "precedente" che le stesse regole si applicano ad ogni timestep. Quindi, le due risposte non sono in disaccordo.
user20160

12

La prospettiva dei "pesi condivisi" deriva dal pensare agli RNN come reti feedforward srotolate nel tempo. Se i pesi fossero diversi in ogni momento, questa sarebbe solo una rete feedforward. Ma suppongo che un altro modo di pensarci sarebbe come un RNN i cui pesi sono una funzione che varia nel tempo (e che potrebbe consentire di mantenere la capacità di elaborare sequenze di lunghezza variabile).

Se lo facessi, il numero di parametri aumenterebbe linearmente con il numero di passi temporali. Sarebbe una grande esplosione di parametri per sequenze di qualsiasi lunghezza apprezzabile. Renderebbe davvero la rete più potente se aveste le enormi risorse di calcolo per gestirla e i massicci dati per limitarla. Per lunghe sequenze, sarebbe probabilmente non calcolabile dal punto di vista computazionale e si otterrebbe un eccesso di adattamento. In effetti, le persone di solito vanno nella direzione opposta eseguendo una backpropagation troncata nel tempo, che si svolge sulla rete solo per un breve periodo di tempo, piuttosto che sull'intera sequenza. Questo viene fatto per fattibilità computazionale. È interessante notare che gli RNN possono ancora apprendere la struttura temporale che si estende oltre la lunghezza del troncamento, perché le unità ricorrenti possono immagazzinare memoria da prima.


Se non condividi pesi, hai ancora lo stato cellulare che persiste nel tempo. Un LSTM srotolato con pesi temporali univoci sembrerebbe una rete feedforward in cui ogni "strato" rappresenterebbe una fascia oraria, ma ogni "livello" avrebbe informazioni sullo stato della cella in arrivo. Assomiglierebbe a un feedforward, ma con l'aggiunta dello stato cellulare.
beeCwright,

0

Penso che dal momento che le RNN con recidive da nascoste a nascoste (e pesi condivisi nel tempo) sono equivalenti alle Macchine universali di Turing, lasciare che abbiano pesi diversi per differenti fasi temporali non le rende più potenti.


Potresti approfondire cosa intendi per "potente"? Il riferimento a Turing Machines suggerisce che ciò che hai in mente potrebbe essere completamente diverso da ciò che si intende per statistica.
whuber

Gli RNN vengono utilizzati per elaborare la sequenza di dati. Uno dei loro tipi più comuni ottiene una sequenza come input e produce un'altra sequenza come output (come i sistemi di traduzione linguistica). Dico che una famiglia di modelli RNN M1 è più potente di un'altra famiglia di modelli RNN M2, se per un problema (come la mappatura di una serie di sequenze di input su una serie di sequenze di output) esiste un modello m1 in M1 in cui è possibile risolvere questo problema ma in M2 non esiste un modello in grado di risolvere questo problema.
Hossein,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.