Incorporaciones

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.
Figura 1: Muestreo de alimentos incluidos en el conjunto de datos de alimentos.

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.
Figura 2: Codificaciones one-hot de borscht, hot dogs y shawarma Cada vector de codificación one-hot tiene una longitud de 5,000 (una entrada para cada elemento de menú del conjunto de datos). Los puntos suspensivos del diagrama representan las 4,995 entradas que no se muestran.

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.