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.
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.