Incorporamenti

.

Immagina di sviluppare un'applicazione per suggerimenti alimentari, in cui gli utenti inseriscono i pasti preferiti e l'app suggerisce pasti simili che potrebbero piacere. Vuoi sviluppare un modello di machine learning (ML) in grado di prevedere la somiglianza con gli alimenti, in modo che la tua app possa creare contenuti consigli ("Dato che ti piacciono i pancake, ti consigliamo le crêpes").

Per addestrare il tuo modello, devi selezionare un set di dati di 5000 dei pasti, tra cui borscht, hot dog, insalata, pizza, e shawarma.

Figura 1. Una serie di illustrazioni di cinque alimenti. In senso orario da
       in alto a sinistra: borscht, hot dog, insalata, pizza, shawarma.
Figura 1. Campionamento degli alimenti inclusi nel set di dati degli alimenti.

Crei un elemento meal che contiene un codifica one-hot di ogni pasto nel set di dati.

Figura 2. In alto: una visualizzazione della codifica one-hot per il borscht.
       Il vettore [1, 0, 0, 0, ..., 0] è visualizzato sopra sei caselle,
       ognuna allineata a sinistra
       a destra con uno dei numeri vettoriali. I riquadri, da sinistra a destra
       contenere le seguenti immagini: borscht, hot dog, insalata, pizza, [vuoto],
       shawarma. Al centro: una visualizzazione della codifica one-hot per un hot dog.
       Il vettore [0, 1, 0, 0, ..., 0] viene visualizzato sopra sei riquadri, ciascuno
       allineata da sinistra a destra a uno dei numeri vettoriali. Le scatole contengono
       le stesse immagini da sinistra a destra della visualizzazione borscht
       in alto. In basso: una visualizzazione della codifica one-hot per shawarma. La
       il vettore [0, 0, 0, 0, ..., 1] viene visualizzato sopra sei riquadri, ciascuno allineato
       da sinistra a destra con uno dei numeri vettoriali. Le scatole contengono
       le stesse immagini da sinistra a destra di borscht e hot dog
       e visualizzazioni.
Figura 2. Codifica one-hot di borscht, hot dog e shawarma. Ogni vettore di codifica one-hot ha una lunghezza di 5000 (una voce per nel set di dati). I puntini di sospensione nel diagramma rappresentano le 4995 voci non visualizzate.

Insidie delle rappresentazioni di dati sparsi

Esaminando queste codifiche one-hot, noti due problemi fondamentali rappresentazione dei dati.

  • Numero di pesi. Grandi vettori di input indicano un enorme numero ponderazioni per una rete neurale. Con voci M nella codifica one-hot e N nodi nel primo strato della rete dopo l'input, il modello deve Le ponderazioni MxN per quel livello. Un numero elevato di ponderazioni causa ulteriori problemi:
    • Numero di punti dati. Maggiore è il peso del modello, maggiore sarà la quantità di dati addestrarsi in modo efficace.
    • Quantità di calcolo. Maggiore è il peso, maggiore sarà il calcolo richiesto per addestrare e utilizzare il modello. È facile superare le capacità del tuo hardware.
    • Quantità di memoria. Maggiore è il peso del modello, maggiore sarà la memoria necessaria sugli acceleratori che lo addestrano e lo pubblicano. Fare lo scale up è molto difficile.
    • Difficoltà nel supportare machine learning on-device (ODML). Se speri di eseguire il modello ML su dispositivi locali (anziché pubblicare devi concentrarti sul ridurre le dimensioni del modello e per ridurre il numero di pesi.
  • Mancanza di relazioni significative tra i vettori. I valori dei vettori le codifiche one-hot per gli alimenti non forniscono alcuna informazione significativa somiglianza di alimenti. Dal punto di vista matematico, l'indice 1 ("hot dog") è più vicino all'indice 2 ("insalata") che all'indice 4999 ("shawarma"), anche se è più simile allo shawarma (entrambi contengono carne e pane) che all'insalata.

In questo modulo imparerai a creare incorporamenti, di dati sparsi, che risolvono entrambi questi problemi.