Come viene addestrato il livello di incorporamento nel livello Incorporamento di Keras


8

Come viene addestrato il livello di incorporamento nel livello Incorporamento di Keras? (ad esempio usando tensorflow backend, il che significa che è simile a word2vec, glove o fasttext)

Supponiamo di non utilizzare un incorporamento predefinito.

Risposte:


6

Entrambe le risposte sono sbagliate.

Un livello di incorporamento è un livello trainabile che contiene 1 matrice di incorporamento, che è bidimensionale, in un asse il numero di valori univoci che l'input categorico può assumere (ad esempio 26 nel caso dell'alfabeto minuscolo) e nell'altro asse la dimensionalità del tuo spazio di incorporamento. Il ruolo del livello di incorporamento è mappare una categoria in uno spazio denso in un modo utile per l'attività in corso, almeno in un'attività supervisionata. Questo di solito significa che c'è un valore semantico nei vettori di incorporamento e le categorie vicine in questo spazio avranno un significato vicino all'attività.

Ciò è correlato alla codifica one-hot, nel senso che mappa una categoria discreta in una rappresentazione di caratteristiche vettoriali. Potresti ancora farlo per una rete neurale ma se lo usi in uno strato denso creeresti un'enorme quantità di pesi di cui la maggior parte non viene utilizzata regolarmente. Mettere un livello di incorporamento tra riduce la quantità di pesi apprendibili prima di alimentarli per interagire con altre parti dell'input. Un altro vantaggio è che la matrice di incorporamento funziona fondamentalmente come una tabella di ricerca, quindi puoi davvero usare la scarsità dell'indice della tua categoria per cercare quale sia il valore corrente dell'incorporamento e quando applichi la backpropagating adattando solo quella voce della matrice di peso .

http://colah.github.io/posts/2014-07-NLP-RNNs-Representations -> questo post del blog spiega chiaramente come viene addestrato il livello di incorporamento nel livello Incorporamento di Keras. Spero che sia di aiuto.


Finalmente una buona risposta, grazie. Potremmo aggiungere che Word2Vec è addestrato come obiettivo di modellizzazione del linguaggio che lo rende diverso dagli incorporamenti addestrati per un compito specifico come hai detto.
Elliot

0

Per quanto ho capito, è un semplice auto-codificatore, il che significa che tutto ciò che fa è cercare di mappare l'input in un altro spazio, quindi nessun allenamento di fantasia, solo un semplice feed-forward e backprop. Questo è il motivo per cui è piuttosto veloce allenarsi.

Se si desidera utilizzare incorporamenti pre-addestrati, è possibile farlo in questo modo


Un autoencoder è un modello che si predice da solo. È quello che volevi dire?
kbrose,

In effetti, quindi puoi vederlo come una rete neurale con un singolo strato nascosto, e dove input e output sono identici non sono sicuro che sia ciò che Keras usa, ma data la velocità e la documentazione, tenderei a pensare che via
Valentin Calomme,

Lo stesso livello di incorporamento non lo fa. Assegna solo un vettore a ciascun input intero univoco. È possibile creare un modello di codifica automatica attorno a quello per addestrare gli incorporamenti, ma non fa parte del livello di incorporamento.
kbrose,

Ero confuso perché la tua risposta corrisponde alla mia comprensione di ciò che fa il livello Incorporamento oltre a chiamarlo un "codificatore automatico".
kbrose,

0

Il livello di incorporamento utilizza la matrice di incorporamento per mappare i dati e non viene mai aggiornato durante l'allenamento . Non ci sono parametri allenabili nel livello Incorporamento di Keras. Puoi fare riferimento ai documenti del livello di incorporamento di Keras per una comprensione dettagliata.

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.