Imagina que estás desarrollando una aplicación de recomendación de comidas, en la que los usuarios ingresan sus comidas favoritas, y la aplicación sugiere comidas similares que podrían gustarles. Quieres desarrollar un modelo de aprendizaje automático (AA). capaz de predecir la similitud de los alimentos, recomendaciones (“Como te gustan los panqueques, te recomendamos las crepas”).
Para entrenar tu modelo, debes seleccionar un conjunto de datos de 5,000 conjuntos alimentos, incluido borscht, perros calientes, ensalada, pizza, y shawarma.
![Figura 1: Un conjunto de ilustraciones de cinco alimentos. En el sentido de las manecillas del reloj desde
parte superior izquierda: borscht, perro caliente, ensalada, pizza y shawarma.](https://developers.google.cn/static/machine-learning/crash-course/embeddings/images/food_images.png?authuser=6&hl=es)
Creas un atributo meal
que contenga un
codificación one-hot
de cada plato en el conjunto de datos.
![Figura 2: Parte superior: Una visualización de la codificación one-hot para borscht.
El vector [1, 0, 0, 0, ..., 0] se muestra sobre seis cuadros,
cada una alineada desde la izquierda
hacia la derecha con uno de los números del vector. Los cuadros, de izquierda a derecha
contener las siguientes imágenes: borscht, hot dog, ensalada, pizza, [empty],
el shawarma. Medio: una visualización de la codificación one-hot para perros calientes.
El vector [0, 1, 0, 0, ..., 0] se muestra sobre seis cuadros, cada uno
alineado de izquierda a derecha con uno de los números del vector. Las cajas tienen
las mismas imágenes de izquierda a derecha que para la visualización de borscht
arriba. Abajo: Una visualización de la codificación one-hot para shawarma. El
vector [0, 0, 0, 0, ..., 1] se muestra sobre seis cuadros, cada uno alineado
de izquierda a derecha con uno de los números del vector. Las cajas tienen
las mismas imágenes de izquierda a derecha que para el borscht y el perro caliente
visualizaciones.](https://developers.google.cn/static/machine-learning/crash-course/embeddings/images/food_images_one_hot_encodings.png?authuser=6&hl=es)
Errores de las representaciones de datos dispersos
Al revisar estas codificaciones one-hot, notaste dos problemas clave para representar los datos.
- Cantidad de pesos. Los vectores de entrada grandes implican una gran cantidad de
pesos
de una red neuronal.
Con entradas M en la codificación one-hot y N
en la primera capa de la red después de la entrada, el modelo debe entrenarse
Ponderaciones de MxN para esa capa. Una gran cantidad de ponderaciones causa otros problemas:
- Cantidad de datos. Cuantos más pesos tenga tu modelo, más datos necesitas entrenar de manera eficaz.
- Cantidad de cómputo. Cuantas más ponderaciones, más cómputo se necesita. para entrenarlo y usarlo. Es fácil superar las capacidades de tu hardware.
- Cantidad de memoria. Cuantos más pesos haya en tu modelo, más memoria en los aceleradores que lo entrenan y entregan. Aumenta la escala eficientemente es muy difícil.
- Dificultad de brindar asistencia aprendizaje automático integrado en el dispositivo (ODML). Si esperas ejecutar tu modelo de AA en dispositivos locales (en lugar de entregarlos tendrás que enfocarte en hacer más pequeño el modelo para disminuir la cantidad de ponderaciones.
- Falta de relaciones significativas entre vectores. Los valores de los vectores del las codificaciones one-hot de alimentos no proporcionan información significativa la similitud de los alimentos. Desde el punto de vista matemático, el índice 1 (“hot dog”) es más cerca del índice 2 ("ensalada") que al índice 4999 ("shawarma"), aunque un el perro se parece más al shawarma (ambos contienen carne y pan) que a la ensalada.
En este módulo, aprenderás a crear incorporaciones de menor dimensión de datos dispersos que abordan ambos problemas.