Incorporamenti: dati di input categorici

I dati categorici si riferiscono alle funzionalità di input che rappresentano uno o più elementi discreti in un insieme finito di scelte. Ad esempio, può trattarsi dell'insieme di film guardati da un utente, del gruppo di parole di un documento o dell'occupazione di una persona.

I dati categorici sono rappresentati in modo più efficiente tramite i tensori sparsi, che sono tensori con pochi elementi diversi da zero. Ad esempio, se stiamo creando un modello di consigli sui film, possiamo assegnare un ID univoco a ciascun possibile film e quindi rappresentare ogni utente da un tensore sparso dei film che ha guardato, come mostrato nella Figura 3.

Un contributo di esempio per il nostro problema relativo al consiglio sui film.

Figura 3. Dati relativi al problema relativo al consiglio sui film.

Ogni riga della matrice nella Figura 3 è un esempio che cattura la cronologia delle visualizzazioni di un utente di un utente ed è rappresentata come un tensore sparso perché ogni utente guarda solo una piccola parte di tutti i possibili film. L'ultima riga corrisponde al tensore sparse [1, 3, 999999], utilizzando gli indici di vocabolario mostrati sopra le icone dei film.

Analogamente, è possibile rappresentare parole, frasi e documenti come vettori sparsi, in cui ogni parola del vocabolario ricopre un ruolo simile ai film nel nostro esempio di consigli.

Per utilizzare tali rappresentazioni in un sistema di machine learning, abbiamo bisogno di un modo per rappresentare ogni vettore sparso come un vettore di numeri in modo che elementi semanticamente simili (film o parole) abbiano distanze simili nello spazio vettoriale. Ma come si fa a rappresentare una parola come un vettore dei numeri?

Il modo più semplice è definire un livello di input gigante con un nodo per ogni parola del vocabolario, o almeno un nodo per ogni parola che appare nei dati. Se nei tuoi dati vengono mostrate 500.000 parole uniche, puoi rappresentare una parola con una lunghezza di 500.000 parole e assegnare ogni parola a un'area in uno dei vettori.

Se assegni "cavallo" all'indice 1247, per alimentare "cavallo" nella tua rete potresti copiare un 1 nel nodo di input 1247 e 0 in tutto il resto. Questo tipo di rappresentazione è denominato codifica one-hot, perché solo un indice ha un valore diverso da zero.

Più comunemente, il tuo vettore potrebbe contenere conteggi di parole in una porzione di testo più grande. Questa è nota come un "sacchetto di parole". In un vettore "bag-of-words", diversi dei 500.000 nodi avranno un valore diverso da zero.

Tuttavia, se determini i valori diversi da zero, un nodo per parola offre vettori molto scarsi: vettori molto grandi con un numero relativamente basso di valori diversi da zero. Le rappresentazioni sparse presentano un paio di problemi che possono rendere difficile l'apprendimento efficace di un modello.

Dimensione della rete

Enormi vettori di input indicano un numero enorme di pesi per una rete neurale. Se nel vocabolario sono presenti M parole e N nodi nel primo livello della rete sopra l'input, hai un peso MxN da addestrare per quel livello. Un numero elevato di pesi causa ulteriori problemi:

  • Quantità di dati. Maggiore è il peso del modello, più dati dovrai addestrare in modo efficace.

  • Importo del calcolo: Maggiore è il peso, maggiore è il calcolo necessario per addestrare e utilizzare il modello. È facile superare le capacità del tuo hardware.

Mancanza di relazioni significative tra i vettori

Se inserisci i valori in pixel dei canali RGB in un classificatore di immagini, è utile parlare dei valori di "chiusura". Il blu rossiccio è simile al blu puro, sia semanticamente che in termini di distanza geometrica tra i vettori. Ma un vettore con un 1 all'indice 1247 per "cavallo" non è più vicino a un vettore con un 1 all'indice 50,430 per "antilope" piuttosto che un vettore con un 1 all'indice 238 per "televisore".

La soluzione: incorporamenti

La soluzione a questi problemi è utilizzare incorporamenti che traducono ampi vettori in uno spazio di dimensioni inferiori che preserva le relazioni semantiche. Nelle sezioni seguenti di questo modulo esploreremo gli incorporamenti in modo intuitivo, concettualmente e in modo programmatico.