Immagina di sviluppare un'applicazione di consigli gastronomici, in cui gli utenti inseriscono i loro piatti preferiti e l'app suggerisce piatti simili che potrebbero essere di loro gusto. Vuoi sviluppare un modello di machine learning in grado di prevedere la somiglianza tra i cibi, in modo che la tua app possa offrire consigli di alta qualità ("Dato che ti piacciono i pancake, ti consigliamo le crêpe").
Per addestrare il tuo modello, selezioni un set di dati di 5000 piatti molto amati, tra cui borscht, hot dog, insalata, pizza e shawarma.

Crei una caratteristica meal
che contiene una
rappresentazione con codifica one-hot
di ciascun piatto nel set di dati.
La codifica si riferisce al processo di
scelta di una rappresentazione numerica iniziale dei dati su cui addestrare il modello.
![Figura 2. In alto: una visualizzazione della codifica one-hot per il borscht.
Il vettore [1, 0, 0, 0, …, 0] è visualizzato sopra a sei riquadri,
ciascuno allineato da sinistra
a destra con uno dei numeri del vettore. I riquadri, da sinistra a destra,
contengono le seguenti immagini: borscht, hot dog, insalata, pizza, [vuoto] e
shawarma. Al centro: una visualizzazione della codifica one-hot per l'hot dog.
Il vettore [0, 1, 0, 0, …, 0] è visualizzato sopra sei riquadri, ciascuno
allineato da sinistra a destra con uno dei numeri del vettore. I riquadri presentano
le stesse immagini da sinistra a destra della visualizzazione del borscht
qui sopra. In basso: una visualizzazione della codifica one-hot per lo shawarma. Il
vettore [0, 0, 0, 0, …, 1] è visualizzato sopra a sei riquadri, ciascuno allineato
da sinistra a destra con uno dei numeri del vettore. I riquadri presentano
le stesse immagini da sinistra a destra delle visualizzazioni del borscht
e dell'hot dog.](https://developers.google.cn/static/machine-learning/crash-course/embeddings/images/food_images_one_hot_encodings.png?hl=it)
Inconvenienti delle rappresentazioni di dati sparsi
Esaminando queste codifiche one-hot, si notano diversi problemi con questa rappresentazione dei dati.
- Numero di pesi. I vettori di input di grandi dimensioni comportano un numero enorme di pesi per una rete neurale. Con le voci P nella codifica one-hot e i nodi N nel primo strato della rete dopo l'input, il modello deve addestrare PxN pesi per quello strato.
- Numero dei punti dati. Maggiore è il numero di pesi nel tuo modello, maggiore è il numero di dati che devi addestrare in modo efficace.
- Quantità di calcolo. Maggiore è il numero di pesi, maggiore è il calcolo richiesto per addestrare e usare quel modello. È facile superare le capacità dell'hardware.
- Quantità di memoria. Maggiore è il numero di pesi nel tuo modello, maggiore è la memoria richiesta agli acceleratori che lo addestrano e lo gestiscono. Scalare questo processo in modo efficiente è molto difficile.
- Difficoltà nel supportare il machine learning integrato nel dispositivo. Se vuoi eseguire il tuo modello di machine learning su dispositivi locali (anziché distribuirli), dovrai concentrarti sulla riduzione delle dimensioni del modello e sarà opportuno che tu riduca il numero dei pesi.
In questo modulo imparerai a creare embedding, rappresentazioni a dimensionalità ridotta di dati sparsi, che affrontano queste problematiche.