Incorporamenti: ottenimento degli incorporamenti

Questa sezione si concentra su due tecniche comuni per ottenere un embedding:

  • Riduzione della dimensionalità
  • Estrazione di un embedding da un modello di rete neurale più grande

Tecniche di riduzione della dimensionalità

Esistono molte tecniche matematiche per rappresentare l'importante struttura di uno spazio ad alta dimensionalità in uno spazio a bassa dimensionalità. In teoria, qualsiasi di queste tecniche può essere utilizzata per creare un embedding per un sistema di machine learning.

Ad esempio, l'analisi delle componenti principali (PCA) è stata utilizzata per creare embedding di parole. Dato un insieme di istanze come i vettori del sacchetto di parole, la PCA cerca di trovare dimensioni altamente correlate che possono essere compresse in un'unica dimensione.

Addestramento di un embedding all'interno di una rete neurale

Puoi creare un embedding durante l'addestramento di una rete neurale per la tua attività target. Questo approccio ti consente di ottenere un'evidenziazione ben personalizzata per il tuo sistema specifico, ma potrebbe richiedere più tempo dell'addestramento dell'evidenziazione separatamente.

In generale, puoi creare nella rete neurale uno strato nascosto di dimensioni d, indicato come strato di embedding, dove d rappresenta sia il numero di nodi nello strato nascosto sia il numero di dimensioni nello spazio di embedding. Questo livello di embedding può essere combinato con qualsiasi altra funzionalità e livello nascosto. Come in qualsiasi rete neurale profonda, i parametri verranno ottimizzati durante l'addestramento per ridurre al minimo la perdita sui nodi dello strato di output della rete.

Tornando all'esempio di consiglio alimentare, il nostro obiettivo è predire i nuovi piatti che piaceranno a un utente in base ai suoi piatti preferiti attuali. Innanzitutto, possiamo compilare dati aggiuntivi sui cinque cibi preferiti dei nostri utenti. Poi possiamo modellare questa attività come un problema di apprendimento supervisionato. Abbiamo impostato quattro di questi cinque alimenti principali come dati sulle caratteristiche e poi abbiamo assegnato in modo casuale il quinto alimento come etichetta positiva che il nostro modello mira a prevedere, ottimizzando le previsioni del modello utilizzando una perdita softmax.

Durante l'addestramento, il modello di rete neurale apprende i pesi ottimali per i nodi del primo livello nascosto, che funge da livello di embedding. Ad esempio, se il modello contiene tre nodi nel primo livello nascosto, potrebbe determinare che le tre dimensioni più pertinenti degli alimenti sono sandwich, dessert e liquido. La Figura 12 mostra il valore di input codificato in one-hot per "hot dog" trasformato in un vettore tridimensionale.

Figura 12. Rete neurale per la codifica one-hot di hot dog. Il primo livello è uno
    strato di input con 5 nodi, ognuno annotato con un'icona del cibo che
    rappresenta (borscht, hot dog, insalata e così via). Questi nodi hanno rispettivamente i valori [0, 1, 0, ..., 0], che rappresentano la codifica one-hot di "hot dog". Il livello di input è collegato a un livello di embedding con 3 nodi, i cui nodi hanno rispettivamente i valori 2,98, -0, 75 e 0. Lo strato di embedding è collegato a uno strato nascosto di 5 nodi, che a sua volta è collegato a uno strato di output di 5 nodi.
Figura 12. Una codifica one-hot di hot dog fornita come input a una rete neurale profonda. Uno strato di embedding traduce la codifica one-hot nel vettore di embedding tridimensionale [2.98, -0.75, 0].

Nel corso dell'addestramento, i pesi dello strato di incorporamento verranno ottimizzati in modo che i vettori di incorporamento per esempi simili siano più vicini tra loro. Le singole dimensioni del livello di embedding (ciò che rappresenta ogni nodo nel livello di embedding) sono raramente comprensibili come "dessertness" o "liquidness". A volte è possibile dedurre il loro "significato", ma non sempre è così.

In genere gli incorporamenti sono specifici dell'attività e differiscono tra loro quando l'attività è diversa. Ad esempio, gli embedding generati da un modello di classificazione vegetariano rispetto a non vegetariano potrebbero avere due dimensioni: contenuti di carne e contenuti lattiero-caseari. Nel frattempo, gli incorporamenti generati da un classificatore di colazione rispetto a cena per la cucina americana potrebbero avere dimensioni leggermente diverse: contenuto di calorie, contenuto di cereali e contenuto di carne. "Cereali" e "panino con uova e bacon" potrebbero essere vicini nello spazio di embedding di un classificatore per la colazione rispetto a quello per la cena, ma molto distanti nello spazio di embedding di un classificatore vegetariano rispetto a quello non vegetariano.

Addestramento di un embedding di parole

Nella sezione precedente hai esplorato una visualizzazione delle relazioni semantiche nello spazio di incorporamento word2vec.

Word2vec è uno dei tanti algoritmi utilizzati per l'addestramento degli embedding delle parole. Si basa sull'ipotesi distribuzionale per mappare le parole semanticamente simili a vettori di embedding geometricamente vicini. L'ipotesi distribuzionale stabilisce che le parole che spesso hanno le stesse parole vicine tendono a essere semanticamente simili. Sia "cane" che "gatto" appaiono spesso vicino alla parola "veterinario" e questo fatto riflette la loro somiglianza semantica. Come disse il linguista John Firth nel 1957, "riconoscerai una parola dalla compagnia che frequenta".

Il seguente video spiega un altro metodo per creare un'evidenziazione di parole nell'ambito del processo di addestramento di una rete neurale, utilizzando un modello più semplice:

Embedding statici e contestuali

Un limite degli embedding di parole come quello discusso nel video qui sopra è che sono statici. Ogni parola è rappresentata da un singolo punto nello spazio vettoriale, anche se può avere diversi significati, a seconda di come viene usata in una frase. Nell'ultimo esercizio, hai scoperto la difficoltà di mappare le somiglianze semantiche per la parola arancia,che può indicare un colore o un tipo di frutto.

Per risolvere questi problemi, sono stati sviluppati gli embedding contestuali. Gli embedding contestuali consentono più rappresentazioni della stessa parola, ognuna delle quali incorpora informazioni sul contesto in cui viene utilizzata la parola. In un embedding contestuale, la parola arancia potrebbe avere due rappresentazioni distinte: una che acquisisce l'uso della parola come "colore", come nelle frasi "Il mio maglione preferito ha strisce arancioni", e un'altra che acquisisce l'uso della parola come "frutto", come nelle frasi "L'arancia è stata raccolta dall'albero prima che fosse completamente matura".