¡El Día de la Comunidad de ML es el 9 de noviembre! Únase a nosotros para recibir actualizaciones de TensorFlow, JAX, y más Más información

Recomendación

Ver en TensorFlow.org Ejecutar en Google Colab Ver fuente en GitHub

Las recomendaciones personalizadas se utilizan ampliamente para una variedad de casos de uso en dispositivos móviles, como la recuperación de contenido multimedia, la sugerencia de productos de compra y la siguiente recomendación de aplicación. Si está interesado en brindar recomendaciones personalizadas en su aplicación respetando la privacidad del usuario, le recomendamos que explore el siguiente ejemplo y kit de herramientas.

Empezar

Proporcionamos una aplicación de muestra de TensorFlow Lite que demuestra cómo recomendar elementos relevantes a los usuarios de Android.

Ejemplo de Android

Si está utilizando una plataforma que no sea Android, o si ya está familiarizado con las API de TensorFlow Lite, puede descargar nuestro modelo de recomendación para principiantes.

Descargar modelo de inicio

También proporcionamos script de entrenamiento en Github para entrenar su propio modelo de una manera configurable.

Código de entrenamiento

Comprender la arquitectura del modelo

Aprovechamos una arquitectura de modelo de codificador dual, con codificador de contexto para codificar el historial de usuario secuencial y codificador de etiquetas para codificar el candidato de recomendación predicho. La similitud entre el contexto y las codificaciones de etiquetas se utiliza para representar la probabilidad de que el candidato previsto satisfaga las necesidades del usuario.

Con esta base de código se proporcionan tres técnicas diferentes de codificación secuencial del historial del usuario:

  • Codificador de bolsa de palabras (BOW): promedia las incrustaciones de las actividades del usuario sin considerar el orden del contexto.
  • Codificador de redes neuronales convolucionales (CNN): aplicación de múltiples capas de redes neuronales convolucionales para generar codificación de contexto.
  • Codificador de redes neuronales recurrentes (RNN): aplicación de redes neuronales recurrentes para codificar la secuencia de contexto.

Para modelar la actividad de cada usuario, podríamos usar el ID del elemento de actividad (basado en ID), o múltiples características del elemento (basado en características), o una combinación de ambos. El modelo basado en características que utiliza múltiples características para codificar colectivamente el comportamiento de los usuarios. Con esta base de código, puede crear modelos basados ​​en ID o basados ​​en características de una manera configurable.

Después del entrenamiento, se exportará un modelo de TensorFlow Lite que puede proporcionar directamente predicciones top-K entre los candidatos de recomendación.

Usa tus datos de entrenamiento

Además del modelo entrenado, proporcionamos un kit de herramientas de código abierto en GitHub para entrenar modelos con sus propios datos. Puede seguir este tutorial para aprender a usar el kit de herramientas e implementar modelos entrenados en sus propias aplicaciones móviles.

Siga este tutorial para aplicar la misma técnica utilizada aquí para entrenar un modelo de recomendación utilizando sus propios conjuntos de datos.

Ejemplos de

Como ejemplos, entrenamos modelos de recomendación con enfoques tanto basados ​​en ID como basados ​​en características. El modelo basado en ID toma solo las ID de películas como entrada, y el modelo basado en características toma tanto las ID de películas como las ID de género de películas como entradas. Encuentre los siguientes ejemplos de entradas y salidas.

Entradas

  • ID de películas de contexto:

    • El Rey León (ID: 362)
    • Toy Story (ID: 1)
    • (y más)
  • ID de género de película de contexto:

    • Animación (ID: 15)
    • Infantil (ID: 9)
    • Musical (ID: 13)
    • Animación (ID: 15)
    • Infantil (ID: 9)
    • Comedia (ID: 2)
    • (y más)

Salidas:

  • ID de película recomendados:
    • Toy Story 2 (ID: 3114)
    • (y más)

Benchmarks de desempeño

Los números de referencia de rendimiento se generan con la herramienta que se describe aquí .

Nombre del modelo Tamaño del modelo Dispositivo UPC
recomendación (ID de película como entrada) 0,52 Mb Pixel 3 0,09 ms *
Pixel 4 0,05 ms *
recomendación (ID de película y género de película como entradas) 1,3 Mb Pixel 3 0,13 ms *
Pixel 4 0,06 ms *

* 4 hilos utilizados.

Usa tus datos de entrenamiento

Además del modelo entrenado, proporcionamos un kit de herramientas de código abierto en GitHub para entrenar modelos con sus propios datos. Puede seguir este tutorial para aprender a usar el kit de herramientas e implementar modelos entrenados en sus propias aplicaciones móviles.

Siga este tutorial para aplicar la misma técnica utilizada aquí para entrenar un modelo de recomendación utilizando sus propios conjuntos de datos.

Consejos para personalizar el modelo con sus datos

El modelo preentrenado integrado en esta aplicación de demostración se entrena con el conjunto de datos MovieLens , es posible que desee modificar la configuración del modelo en función de sus propios datos, como el tamaño del vocabulario, la incorporación de atenuaciones y la longitud del contexto de entrada. Aquí hay algunos consejos:

  • Longitud del contexto de entrada: la mejor longitud del contexto de entrada varía con los conjuntos de datos. Sugerimos seleccionar la longitud del contexto de entrada en función de la correlación de los eventos de etiqueta con los intereses a largo plazo frente al contexto a corto plazo.

  • Selección del tipo de codificador: sugerimos seleccionar el tipo de codificador según la longitud del contexto de entrada. El codificador de bolsa de palabras funciona bien para una longitud de contexto de entrada corta (por ejemplo, <10), los codificadores CNN y RNN brindan más capacidad de resumen para una longitud de contexto de entrada larga.

  • El uso de características subyacentes para representar elementos o actividades del usuario podría mejorar el rendimiento del modelo, acomodar mejor los elementos nuevos, posiblemente reducir la escala de los espacios de incrustación, por lo tanto, reducir el consumo de memoria y ser más amigable en el dispositivo.