2016-07-04 44 views
52

La documentazione di Keras non è chiara su cosa sia effettivamente. Capisco che possiamo usare questo per comprimere lo spazio delle caratteristiche di input in uno più piccolo. Ma come viene fatto da una prospettiva di progettazione neurale? È un auto-processore, RBM?Che cos'è un incorporamento in Keras?

+2

È una tabella di ricerca che può essere addestrata –

risposta

46

Per quanto ne so, il livello Incorporamento è una semplice moltiplicazione di matrice che trasforma le parole nei loro corrispondenti embeddings di parole.

I pesi del livello Incorporamento sono di forma (vocabulary_size, embedding_dimension). Per ogni campione di allenamento, il suo input sono numeri interi, che rappresentano determinate parole. Gli interi sono nella gamma della dimensione del vocabolario. Il livello Incorporamento trasforma ciascun intero i nella linea ith della matrice dei pesi di incorporamento.

Per eseguire rapidamente questa operazione come moltiplicazione di una matrice, gli interi di input non vengono memorizzati come un elenco di numeri interi ma come una matrice one-hot. Pertanto la forma di input è (nb_words, vocabolario_size) con un valore diverso da zero per riga. Se si moltiplica questo dai pesi incorporamento, si ottiene l'output nella forma

(nb_words, vocab_size) x (vocab_size, embedding_dim) = (nb_words, embedding_dim) 

Quindi, con una semplice moltiplicazione matrice di trasformare tutte le parole in un campione nelle immersioni parola corrispondente.

+0

Interessante che si tratta di una semplice moltiplicazione di matrice. Pensi che otterremmo qualcosa imparando l'incorporamento con un autoencoder? –

+2

Definitivamente un approccio valido (vedere [Apprendimento sequenziale semi-supervisionato] (https://papers.nips.cc/paper/5949-semi-supervised-sequence-learning.pdf)). Puoi anche imparare le immersioni con un autoencoder e quindi usarle come inizializzazione del livello Incorporamento per ridurre la complessità della tua rete neurale (presumo che tu faccia qualcos'altro dopo il livello Incorporamento). – Lorrit

+2

[Here] (http://colah.github.io/posts/2014-07-NLP-RNNs-Representations/) è un bell'articolo di blog sulle parole e sui loro vantaggi. – sietschie

2

Per capire meglio qualsiasi funzione è buona norma guardare il codice sorgente. Ecco per Embedding Quindi in pratica si tratta di un tavolo di ricerca trainable.