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.](https://developers.google.cn/static/machine-learning/crash-course/embeddings/images/food_images.png?authuser=19&hl=it)
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.](https://developers.google.cn/static/machine-learning/crash-course/embeddings/images/food_images_one_hot_encodings.png?authuser=19&hl=it)
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.