In che modo le reti neurali possono gestire dimensioni di input variabili?


42

Per quanto ne so, le reti neurali hanno un numero fisso di neuroni nello strato di input.

Se le reti neurali vengono utilizzate in un contesto come la PNL, frasi o blocchi di testo di varie dimensioni vengono inviati a una rete. In che modo le dimensioni variabili di input vengono riconciliate con le dimensioni fisse del layer input della rete? In altre parole, in che modo tale rete è resa abbastanza flessibile da gestire un input che potrebbe essere ovunque da una parola a più pagine di testo?

Se la mia assunzione di un numero fisso di neuroni di input è errata e nuovi neuroni di input vengono aggiunti / rimossi dalla rete per adattarsi alle dimensioni di input, non vedo come questi possano mai essere addestrati.

Fornisco l'esempio della PNL, ma molti problemi hanno una dimensione di input intrinsecamente imprevedibile. Sono interessato all'approccio generale per affrontare questo.

Per le immagini, è chiaro che è possibile aumentare / diminuire il campionamento fino a una dimensione fissa, ma, per il testo, questo sembra essere un approccio impossibile poiché l'aggiunta / rimozione di testo modifica il significato dell'input originale.


puoi chiarire cosa intendi per downsampling a una dimensione fissa? Come viene effettuato il downsampling?
Charlie Parker,

Risposte:


36

Mi vengono in mente tre possibilità.

Il più semplice è lo zero padding . Fondamentalmente, prendi una dimensione di input piuttosto grande e aggiungi solo zero se il tuo input concreto è troppo piccolo. Naturalmente, questo è piuttosto limitato e certamente non utile se il tuo input varia da poche parole a testi completi.

Le NN ricorrenti (RNN) sono una NN molto naturale da scegliere se come input sono presenti testi di dimensioni variabili. Inserite le parole come vettori di parole (o incorporamenti) uno dopo l'altro e lo stato interno dell'RNN dovrebbe codificare il significato dell'intera stringa di parole. Questo è uno dei documenti precedenti.

Un'altra possibilità è l'utilizzo di NN ricorsivi . Questa è fondamentalmente una forma di preelaborazione in cui un testo viene ricorsivamente ridotto a un numero inferiore di vettori di parole fino a quando ne rimane solo uno: il tuo input, che dovrebbe codificare l'intero testo. Questo ha molto senso dal punto di vista linguistico se il tuo input è costituito da frasi (che possono variare molto in termini di dimensioni), perché le frasi sono strutturate in modo ricorsivo. Ad esempio, il vettore di parola per "l'uomo", dovrebbe essere simile al vettore di parola per "l'uomo che ha scambiato la moglie per un cappello", perché le frasi di nome si comportano come nomi, ecc. Spesso, è possibile utilizzare le informazioni linguistiche per guidare la tua ricorsione sulla frase. Se vuoi andare ben oltre l'articolo di Wikipedia, questo è probabilmente un buon inizio .


1
Qual è la differenza tra ciò che hai chiamato "NN ricorsivi" e RNN? R è per ricorsivo ... Inoltre, alcune citazioni e indicazioni sarebbero utili.
Eric Platon,

3
R è per ricorrenti. Ricorrente significa aggiungere input in modo lineare allo stesso NN ancora e ancora. Ricorsivo significa inserire i dati lungo una struttura ad albero.
BlindKungFuMaster,

@BlindKungFuMaster 0 L'imbottitura con maschera per MLP è buona e non influisce negativamente sulla precisione?
DINA TAKLIT il

12

Altri già menzionati:

  • imbottitura zero
  • RNN
  • NN ricorsivo

quindi aggiungerò un'altra possibilità: usare convoluzioni un numero di volte diverso a seconda della dimensione dell'input. Ecco un libro eccellente che supporta questo approccio:

Prendi in considerazione una raccolta di immagini, in cui ogni immagine ha una larghezza e un'altezza diverse. Non è chiaro come modellare tali input con una matrice di peso di dimensioni fisse. La convoluzione è semplice da applicare; il kernel viene semplicemente applicato un numero diverso di volte in base alla dimensione dell'input e l'output dell'operazione di convoluzione viene ridimensionato di conseguenza.

Tratto da pagina 360. Puoi leggerlo ulteriormente per vedere altri approcci.


1
Mi viene in mente che questo approccio funzionerà solo se 1) le proporzioni (AR) di tutte le immagini di input sono le stesse, 2) ridimensionate tutte le immagini su un dato AR o 3) immagini a zero pad per forzare un dato AR.
Matt Wenham,

@Salvador Dali può "0" imbottitura con maschera può essere una buona soluzione per MLPs?
DINA TAKLIT,

Non riesco a trovare il testo che citi nella tua risposta nel libro. Forse era presente in origine ed è stato rimosso in seguito? Pagina 354 attualmente ha un paragrafo che inizia in modo simile, ma non utilizza mai un numero variabile di livelli (ma invece dimensioni di output variabili).
jochen

7

In NLP hai un ordinamento intrinseco degli input, quindi gli RNN sono una scelta naturale.

Per input di dimensioni variabili dove non esiste un ordinamento particolare tra gli input, è possibile progettare reti che:

  1. utilizzare una ripetizione della stessa sottorete per ciascuno dei gruppi di input (cioè con pesi condivisi). Questa sottorete ripetuta impara una rappresentazione degli (gruppi di) input.
  2. utilizzare un'operazione sulla rappresentazione degli ingressi che ha la stessa simmetria degli ingressi. Per i dati invarianti dell'ordine, è possibile scegliere la media delle rappresentazioni dalle reti di input.
  3. utilizzare una rete di output per ridurre al minimo la funzione di perdita sull'output in base alla combinazione delle rappresentazioni dell'input.

La struttura si presenta come segue:

struttura della rete

Reti simili sono state usate per apprendere le relazioni tra oggetti ( arxiv: 1702.05068 ).

Un semplice esempio di come apprendere la varianza di esempio di un insieme di valori di dimensioni variabili è riportato qui (disclaimer: sono l'autore dell'articolo collegato).

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.