Wide & Deep Learning for Recommender Systems/paper/es

    From Marovi AI
    This page is a translated version of the page Wide & Deep Learning for Recommender Systems/paper and the translation is 100% complete.
    Other languages:
    SummarySource
    Research Paper
    Authors Heng-Tze Cheng; Levent Koc; Jeremiah Harmsen; Tal Shaked; Tushar Chandra; Hrishi Aradhye; Glen Anderson; Greg Corrado; Wei Chai; Mustafa Ispir; Rohan Anil; Zakaria Haque; Lichan Hong; Vihan Jain; Xiaobing Liu; Hemal Shah
    Year 2016
    Topic area Machine Learning
    Difficulty Research
    arXiv 1606.07792
    PDF Download PDF

    Wide & Deep Learning for Recommender Systems

    Heng-Tze Cheng Levent Koc Jeremiah Harmsen Tal Shaked Tushar Chandra Hrishi Aradhye Glen Anderson Greg Corrado Wei Chai Mustafa Ispir Rohan Anil Zakaria Haque Lichan Hong Vihan Jain Xiaobing Liu Hemal Shah
    Google Inc.

    Resumen

    Los modelos lineales generalizados con transformaciones no lineales de las características se utilizan ampliamente en problemas de regresión y clasificación a gran escala con entradas dispersas. La memorización de las interacciones entre características mediante un amplio conjunto de transformaciones de producto cruzado es eficaz e interpretable, mientras que la generalización requiere un mayor esfuerzo de ingeniería de características. Con menos ingeniería de características, las redes neuronales profundas pueden generalizar mejor a combinaciones de características no vistas mediante embeddings densos de baja dimensión aprendidos sobre las características dispersas. Sin embargo, las redes neuronales profundas con embeddings pueden sobre-generalizar y recomendar elementos menos relevantes cuando las interacciones usuario-elemento son dispersas y de alto rango. En este artículo presentamos Wide & Deep learning —modelos lineales anchos y redes neuronales profundas entrenadas conjuntamente— para combinar los beneficios de la memorización y la generalización en sistemas de recomendación. Llevamos el sistema a producción y lo evaluamos en Google Play, una tienda de aplicaciones móviles comercial con más de mil millones de usuarios activos y más de un millón de aplicaciones. Los resultados de los experimentos en línea muestran que Wide & Deep aumentó significativamente las adquisiciones de aplicaciones en comparación con modelos exclusivamente wide o exclusivamente deep. Además, hemos publicado nuestra implementación como código abierto en TensorFlow.

    palabras clave:

    Wide & Deep Learning, sistemas de recomendación. ††titlenote: Autor de correspondencia: hengtze@google.com {CCSXML}

    <ccs2012> <concept> <concept_id>10010147.10010257</concept_id> <concept_desc>Computing methodologies Machine learning</concept_desc> <concept_significance>500</concept_significance> </concept> <concept> <concept_id>10010147.10010257.10010293.10010294</concept_id> <concept_desc>Computing methodologies Neural networks</concept_desc> <concept_significance>300</concept_significance> </concept> <concept> <concept_id>10010147.10010257.10010258.10010259</concept_id> <concept_desc>Computing methodologies Supervised learning</concept_desc> <concept_significance>300</concept_significance> </concept> <concept> <concept_id>10002951.10003317.10003347.10003350</concept_id> <concept_desc>Information systems Recommender systems</concept_desc> <concept_significance>300</concept_significance> </concept> </ccs2012>

    \ccsdesc

    [500]Computing methodologies Machine learning \ccsdesc[300]Computing methodologies Neural networks \ccsdesc[300]Computing methodologies Supervised learning \ccsdesc[300]Information systems Recommender systems

    \printccsdesc

    1 Introducción

    Un sistema de recomendación puede verse como un sistema de búsqueda y ranking en el que la consulta de entrada es un conjunto de información del usuario y del contexto, y la salida es una lista ordenada de elementos. Dada una consulta, la tarea de recomendación consiste en encontrar los elementos relevantes en una base de datos y luego ordenarlos en función de ciertos objetivos, como clics o compras.

    Uno de los desafíos de los sistemas de recomendación, similar al problema general de ranking de búsqueda, es lograr a la vez la memorización y la generalización. La memorización puede definirse, a grandes rasgos, como aprender la coocurrencia frecuente de elementos o características y explotar la correlación disponible en los datos históricos. La generalización, en cambio, se basa en la transitividad de la correlación y explora nuevas combinaciones de características que nunca o rara vez han ocurrido en el pasado. Las recomendaciones basadas en la memorización suelen ser más temáticas y directamente relevantes con respecto a los elementos sobre los que el usuario ya ha realizado acciones. Comparada con la memorización, la generalización tiende a mejorar la diversidad de los elementos recomendados. En este artículo nos centramos en el problema de recomendación de aplicaciones de la tienda Google Play, pero el enfoque debería aplicarse a sistemas de recomendación genéricos.

    Para los sistemas de recomendación y ranking en línea a gran escala en entornos industriales, los modelos lineales generalizados como la regresión logística se utilizan ampliamente porque son simples, escalables e interpretables. Estos modelos suelen entrenarse sobre características dispersas binarizadas mediante codificación one-hot. Por ejemplo, la característica binaria “user_installed_app=netflix” vale 1 si el usuario instaló Netflix. La memorización puede lograrse de forma eficaz mediante transformaciones de producto cruzado sobre características dispersas, como AND(user_installed_app=netflix, impression_app=pandora”), cuyo valor es 1 si el usuario instaló Netflix y posteriormente se le mostró Pandora. Esto explica cómo la coocurrencia de un par de características se correlaciona con la etiqueta objetivo. La generalización puede añadirse usando características menos granulares, como AND(user_installed_category=video, impression_category=music), aunque a menudo se requiere ingeniería de características manual. Una limitación de las transformaciones de producto cruzado es que no generalizan a pares de características consulta-elemento que no aparezcan en los datos de entrenamiento.

    Los modelos basados en embeddings, como las factorization machines [5] o las redes neuronales profundas, pueden generalizar a pares de características consulta-elemento no vistos previamente al aprender un vector de embedding denso de baja dimensión para cada característica de la consulta y del elemento, con menor carga de ingeniería de características. Sin embargo, es difícil aprender representaciones de baja dimensión efectivas para consultas y elementos cuando la matriz subyacente consulta-elemento es dispersa y de alto rango, como ocurre con usuarios de preferencias muy específicas o elementos de nicho con un atractivo muy concreto. En tales casos, no debería haber interacción entre la mayoría de los pares consulta-elemento, pero los embeddings densos producirán predicciones distintas de cero para todos esos pares y, por lo tanto, pueden sobre-generalizar y dar lugar a recomendaciones menos relevantes. Por otro lado, los modelos lineales con transformaciones de producto cruzado pueden memorizar estas “reglas excepción” con muchos menos parámetros.

    Refer to caption

    En este artículo presentamos el marco Wide & Deep learning para lograr tanto la memorización como la generalización en un único modelo, entrenando conjuntamente un componente de modelo lineal y un componente de red neuronal, como se muestra en la Figura 1.

    Las principales contribuciones del artículo son:

    • El marco Wide & Deep learning para entrenar conjuntamente redes neuronales con propagación hacia adelante con embeddings y un modelo lineal con transformaciones de características para sistemas de recomendación genéricos con entradas dispersas.

    • La implementación y evaluación del sistema de recomendación Wide & Deep llevado a producción en Google Play, una tienda de aplicaciones móviles con más de mil millones de usuarios activos y más de un millón de aplicaciones.

    • Hemos publicado nuestra implementación como código abierto junto con una API de alto nivel en TensorFlow111Véase el tutorial de Wide & Deep en http://tensorflow.org..

    Aunque la idea es sencilla, mostramos que el marco Wide & Deep mejora significativamente la tasa de adquisición de aplicaciones en la tienda de aplicaciones móviles, satisfaciendo al mismo tiempo los requisitos de velocidad de entrenamiento y de servicio.

    2 Resumen del sistema de recomendación

    En la Figura 2 se muestra una visión general del sistema de recomendación de aplicaciones. Cuando un usuario visita la tienda de aplicaciones se genera una consulta, que puede incluir diversas características del usuario y del contexto. El sistema de recomendación devuelve una lista de aplicaciones (también denominadas impresiones) sobre las que los usuarios pueden realizar ciertas acciones, como clics o compras. Estas acciones del usuario, junto con las consultas y las impresiones, se registran en los logs como datos de entrenamiento para el aprendiz.

    Dado que la base de datos contiene más de un millón de aplicaciones, es inviable puntuar exhaustivamente cada aplicación para cada consulta dentro de los requisitos de latencia de servicio (a menudo del orden de $ {\textstyle O\hspace{0pt}{(10)}} $ milisegundos). Por ello, el primer paso al recibir una consulta es la recuperación. El sistema de recuperación devuelve una lista breve de elementos que mejor se ajustan a la consulta utilizando diversas señales, normalmente una combinación de modelos aprendidos y reglas definidas por humanos. Tras reducir el conjunto de candidatos, el sistema de ranking ordena todos los elementos por sus puntuaciones. Las puntuaciones suelen ser $ {\textstyle P\hspace{0pt}{(\left. y \middle| \mathbf{x} \right.)}} $, la probabilidad de una etiqueta de acción del usuario $ {\textstyle y} $ dadas las características $ {\textstyle \mathbf{x}} $, que incluyen características del usuario (p. ej., país, idioma, datos demográficos), características del contexto (p. ej., dispositivo, hora del día, día de la semana) y características de la impresión (p. ej., antigüedad de la aplicación, estadísticas históricas de la aplicación). En este artículo nos centramos en el modelo de ranking que utiliza el marco Wide & Deep learning.

    Refer to caption

    3 Wide & Deep Learning

    3.1 El componente wide

    El componente wide es un modelo lineal generalizado de la forma $ {\textstyle y = {{\mathbf{w}^{T}\hspace{0pt}\mathbf{x}} + b}} $, como se ilustra en la Figura 1 (izquierda). $ {\textstyle y} $ es la predicción, $ {\textstyle \mathbf{x} = {\lbrack x_{1},x_{2},\ldots,x_{d}\rbrack}} $ es un vector de $ {\textstyle d} $ características, $ {\textstyle \mathbf{w} = {\lbrack w_{1},w_{2},\ldots,w_{d}\rbrack}} $ son los parámetros del modelo y $ {\textstyle b} $ es el sesgo. El conjunto de características incluye características de entrada en bruto y características transformadas. Una de las transformaciones más importantes es la transformación de producto cruzado, definida como:

    $ {\displaystyle {{\phi_{k}\hspace{0pt}{(\mathbf{x})}} = {\prod\limits_{i = 1}^{d}x_{i}^{c_{k\hspace{0pt}i}}}}\quad{c_{k\hspace{0pt}i} \in {\{ 0,1\}}}} $ (1)

    donde $ {\textstyle c_{k\hspace{0pt}i}} $ es una variable booleana que vale 1 si la $ {\textstyle i} $-ésima característica forma parte de la $ {\textstyle k} $-ésima transformación $ {\textstyle \phi_{k}} $, y 0 en caso contrario. Para características binarias, una transformación de producto cruzado (p. ej., “AND(gender=female, language=en)”) vale 1 si y sólo si todas las características que la componen (“gender=female” y “language=en”) valen 1, y 0 en caso contrario. Esto captura las interacciones entre las características binarias y añade no linealidad al modelo lineal generalizado.

    3.2 El componente deep

    El componente deep es una red neuronal con propagación hacia adelante, como se muestra en la Figura 1 (derecha). Para las características categóricas, las entradas originales son cadenas de características (p. ej., “language=en”). Cada una de estas características categóricas dispersas y de alta dimensión se convierte primero en un vector real de baja dimensión y denso, comúnmente llamado vector de embedding. La dimensionalidad de los embeddings suele ser del orden de $ {\textstyle O\hspace{0pt}{(10)}} $ a $ {\textstyle O\hspace{0pt}{(100)}} $. Los vectores de embedding se inicializan aleatoriamente y luego sus valores se entrenan para minimizar la función de pérdida final durante el entrenamiento del modelo. Estos vectores de embedding densos y de baja dimensión se introducen luego en las capas ocultas de una red neuronal en la pasada hacia adelante. Concretamente, cada capa oculta realiza el siguiente cómputo:

    $ {\displaystyle a^{({l + 1})} = {f\hspace{0pt}{({{W^{(l)}\hspace{0pt}a^{(l)}} + b^{(l)}})}}} $ (2)

    donde $ {\textstyle l} $ es el número de capa y $ {\textstyle f} $ es la función de activación, a menudo unidades lineales rectificadas (ReLUs). $ {\textstyle a^{(l)}} $, $ {\textstyle b^{(l)}} $ y $ {\textstyle W^{(l)}} $ son las activaciones, el sesgo y los pesos del modelo en la capa $ {\textstyle l} $-ésima.

    3.3 Entrenamiento conjunto del modelo Wide & Deep

    El componente wide y el componente deep se combinan utilizando una suma ponderada de sus log odds de salida como predicción, que luego se introduce en una función de pérdida logística común para el entrenamiento conjunto. Conviene distinguir entre entrenamiento conjunto y ensamblado. En un ensamblado, los modelos individuales se entrenan por separado sin conocerse entre sí, y sus predicciones se combinan únicamente en el momento de la inferencia y no durante el entrenamiento. En cambio, el entrenamiento conjunto optimiza todos los parámetros simultáneamente teniendo en cuenta tanto la parte wide como la parte deep, así como los pesos de su suma, durante el entrenamiento. Esto también tiene implicaciones para el tamaño del modelo: en un ensamblado, al ser el entrenamiento disjunto, cada modelo individual suele necesitar ser de mayor tamaño (p. ej., con más características y transformaciones) para alcanzar una precisión razonable que haga viable el ensamblado. En comparación, en el entrenamiento conjunto la parte wide sólo necesita complementar las debilidades de la parte deep con un pequeño número de transformaciones de producto cruzado, en lugar de un modelo wide a tamaño completo.

    El entrenamiento conjunto de un modelo Wide & Deep se realiza retropropagando los gradientes desde la salida hacia la parte wide y la parte deep del modelo simultáneamente, utilizando optimización estocástica por mini-lotes. En los experimentos utilizamos el algoritmo Follow-the-regularized-leader (FTRL) [3] con regularización $ {\textstyle L_{1}} $ como optimizador para la parte wide del modelo, y AdaGrad [1] para la parte deep.

    El modelo combinado se ilustra en la Figura 1 (centro). Para un problema de regresión logística, la predicción del modelo es:

    $ {\displaystyle {P\hspace{0pt}{({Y = \left. 1 \middle| \mathbf{x} \right.})}} = {\sigma\hspace{0pt}{({{\mathbf{w}_{w\hspace{0pt}i\hspace{0pt}d\hspace{0pt}e}^{T}\hspace{0pt}{\lbrack\mathbf{x},{\phi\hspace{0pt}{(\mathbf{x})}}\rbrack}} + {\mathbf{w}_{d\hspace{0pt}e\hspace{0pt}e\hspace{0pt}p}^{T}\hspace{0pt}a^{(l_{f})}} + b})}}} $ (3)

    donde $ {\textstyle Y} $ es la etiqueta de clase binaria, $ {\textstyle \sigma\hspace{0pt}{( \cdot )}} $ es la función sigmoide, $ {\textstyle \phi\hspace{0pt}{(\mathbf{x})}} $ son las transformaciones de producto cruzado de las características originales $ {\textstyle \mathbf{x}} $ y $ {\textstyle b} $ es el término de sesgo. $ {\textstyle \mathbf{w}_{w\hspace{0pt}i\hspace{0pt}d\hspace{0pt}e}} $ es el vector de todos los pesos del modelo wide, y $ {\textstyle \mathbf{w}_{d\hspace{0pt}e\hspace{0pt}e\hspace{0pt}p}} $ son los pesos aplicados sobre las activaciones finales $ {\textstyle a^{(l_{f})}} $.

    4 Implementación del sistema

    La implementación de la canalización de recomendación de aplicaciones consta de tres etapas: generación de datos, entrenamiento del modelo y servicio del modelo, como se muestra en la Figura 3.

    Refer to caption

    4.1 Generación de datos

    En esta etapa se utilizan datos de impresiones de usuario y de aplicaciones dentro de un período de tiempo para generar los datos de entrenamiento. Cada ejemplo corresponde a una impresión. La etiqueta es la adquisición de la aplicación: 1 si la aplicación impresa fue instalada y 0 en caso contrario.

    En esta etapa también se generan los vocabularios, que son tablas que asocian cadenas de características categóricas a identificadores enteros. El sistema calcula el espacio de identificadores para todas las características de tipo cadena que aparecen un número mínimo de veces. Las características continuas con valores reales se normalizan al intervalo $ {\textstyle \lbrack 0,1\rbrack} $ mapeando un valor de característica $ {\textstyle x} $ a su función de distribución acumulada $ {\textstyle P\hspace{0pt}{({X \leq x})}} $, dividida en $ {\textstyle n_{q}} $ cuantiles. El valor normalizado es $ {\textstyle \frac{i - 1}{n_{q} - 1}} $ para los valores que caen en el $ {\textstyle i} $-ésimo cuantil. Los límites de los cuantiles se calculan durante la generación de datos.

    4.2 Entrenamiento del modelo

    La estructura del modelo que utilizamos en el experimento se muestra en la Figura 4. Durante el entrenamiento, nuestra capa de entrada toma los datos de entrenamiento y los vocabularios y genera características dispersas y densas junto con una etiqueta. El componente wide consta de la transformación de producto cruzado de las aplicaciones instaladas por el usuario y las aplicaciones de la impresión. Para la parte deep del modelo, se aprende un vector de embedding de 32 dimensiones para cada característica categórica. Concatenamos todos los embeddings junto con las características densas, lo que da lugar a un vector denso de aproximadamente 1200 dimensiones. El vector concatenado se introduce a continuación en 3 capas ReLU y, finalmente, en la unidad de salida logística.

    Los modelos Wide & Deep se entrenan con más de 500 mil millones de ejemplos. Cada vez que llega un nuevo conjunto de datos de entrenamiento, el modelo debe reentrenarse. Sin embargo, reentrenar desde cero cada vez es computacionalmente costoso y retrasa el tiempo entre la llegada de los datos y la puesta en servicio de un modelo actualizado. Para abordar este desafío, implementamos un sistema de warm-starting que inicializa un modelo nuevo con los embeddings y los pesos del modelo lineal del modelo anterior.

    Refer to caption

    Antes de cargar los modelos en los servidores de modelos, se realiza una ejecución de prueba (dry run) para asegurarse de que no causen problemas al servir tráfico en vivo. Validamos empíricamente la calidad del modelo frente al modelo anterior como comprobación de cordura.

    4.3 Servicio del modelo

    Una vez entrenado y verificado el modelo, lo cargamos en los servidores de modelos. Para cada solicitud, los servidores reciben un conjunto de aplicaciones candidatas del sistema de recuperación de aplicaciones y características del usuario para puntuar cada aplicación. A continuación, las aplicaciones se ordenan de mayor a menor puntuación y se muestran al usuario en ese orden. Las puntuaciones se calculan ejecutando una pasada de inferencia hacia adelante sobre el modelo Wide & Deep.

    Para servir cada solicitud en el orden de 10 ms, optimizamos el rendimiento mediante paralelismo con multihilo, ejecutando lotes más pequeños en paralelo en lugar de puntuar todas las aplicaciones candidatas en una única inferencia por lotes.

    5 Resultados experimentales

    Para evaluar la eficacia de Wide & Deep learning en un sistema de recomendación del mundo real, realizamos experimentos en vivo y evaluamos el sistema en varios aspectos: adquisiciones de aplicaciones y rendimiento de servicio.

    Modelo AUC fuera de línea Ganancia de adquisición en línea
    Wide (control) 0.726 0%
    Deep 0.722 +2.9%
    Wide & Deep 0.728 +3.9%

    5.1 Adquisiciones de aplicaciones

    Realizamos experimentos en vivo en un marco de pruebas A/B durante 3 semanas. Para el grupo de control, se seleccionó aleatoriamente al 1 % de los usuarios y se les presentaron recomendaciones generadas por la versión anterior del modelo de ranking, que es un modelo de regresión logística sólo wide altamente optimizado con abundantes transformaciones de producto cruzado. Para el grupo experimental, se presentó al 1 % de los usuarios recomendaciones generadas por el modelo Wide & Deep, entrenado con el mismo conjunto de características. Como se muestra en la Tabla 1, el modelo Wide & Deep mejoró la tasa de adquisición de aplicaciones en la página principal de la tienda de aplicaciones en un +3,9 % respecto del grupo de control (estadísticamente significativo). Los resultados también se compararon con otro grupo del 1 % que utilizaba sólo la parte deep del modelo con las mismas características y la misma estructura de red neuronal, y el modelo Wide & Deep obtuvo una ganancia adicional del +1 % sobre el modelo deep-only (estadísticamente significativa).

    Además de los experimentos en línea, también mostramos el área bajo la curva característica operativa del receptor (AUC) sobre un conjunto de retención fuera de línea. Aunque Wide & Deep tiene un AUC fuera de línea ligeramente superior, el impacto es más significativo sobre el tráfico en línea. Una posible razón es que las impresiones y las etiquetas en los conjuntos de datos fuera de línea son fijas, mientras que el sistema en línea puede generar nuevas recomendaciones exploratorias mezclando generalización con memorización y aprender de las nuevas respuestas de los usuarios.

    5.2 Rendimiento de servicio

    Servir con alto throughput y baja latencia es desafiante dado el alto nivel de tráfico al que se enfrenta nuestra tienda de aplicaciones móviles comercial. En picos de tráfico, nuestros servidores de recomendación puntúan más de 10 millones de aplicaciones por segundo. Con un solo hilo, puntuar todos los candidatos en un único lote tarda 31 ms. Implementamos multihilo y dividimos cada lote en tamaños más pequeños, lo que redujo significativamente la latencia del lado del cliente a 14 ms (incluyendo la sobrecarga de servicio), como se muestra en la Tabla 2.

    6 Trabajo relacionado

    La idea de combinar modelos lineales wide con transformaciones de producto cruzado y redes neuronales profundas con embeddings densos está inspirada en trabajos previos, como las factorization machines [5], que añaden generalización a los modelos lineales factorizando las interacciones entre dos variables como un producto escalar entre dos vectores de embedding de baja dimensión. En este artículo ampliamos la capacidad del modelo aprendiendo interacciones altamente no lineales entre embeddings mediante redes neuronales en lugar de productos escalares.

    En los modelos de lenguaje, se ha propuesto el entrenamiento conjunto de redes neuronales recurrentes (RNNs) y modelos de máxima entropía con características n-gram para reducir significativamente la complejidad de la RNN (p. ej., el tamaño de las capas ocultas) aprendiendo pesos directos entre las entradas y las salidas [4]. En visión por computador, deep residual learning [2] se ha utilizado para reducir la dificultad de entrenar modelos más profundos y mejorar la precisión mediante conexiones de atajo que saltan una o más capas. El entrenamiento conjunto de redes neuronales con modelos gráficos también se ha aplicado a la estimación de la pose humana a partir de imágenes [6]. En este trabajo exploramos el entrenamiento conjunto de redes neuronales con propagación hacia adelante y modelos lineales, con conexiones directas entre las características dispersas y la unidad de salida, para problemas de recomendación y ranking genéricos con datos de entrada dispersos.

    En la literatura sobre sistemas de recomendación, se ha explorado el deep learning colaborativo acoplando deep learning para la información de contenido y filtrado colaborativo (CF) para la matriz de calificaciones [7]. También ha habido trabajos previos sobre sistemas de recomendación de aplicaciones móviles, como AppJoy, que usaba CF sobre los registros de uso de aplicaciones de los usuarios [8]. A diferencia de los enfoques basados en CF o en contenido del trabajo previo, nosotros entrenamos conjuntamente modelos Wide & Deep sobre datos de usuario y de impresiones para sistemas de recomendación de aplicaciones.

    7 Conclusión

    Tanto la memorización como la generalización son importantes en los sistemas de recomendación. Los modelos lineales wide pueden memorizar de forma eficaz las interacciones de características dispersas mediante transformaciones de producto cruzado, mientras que las redes neuronales profundas pueden generalizar a interacciones de características no vistas previamente mediante embeddings de baja dimensión. Presentamos el marco Wide & Deep learning para combinar las fortalezas de ambos tipos de modelo. Llevamos el marco a producción y lo evaluamos en el sistema de recomendación de Google Play, una tienda de aplicaciones comercial a gran escala. Los resultados de los experimentos en línea mostraron que el modelo Wide & Deep produjo una mejora significativa en las adquisiciones de aplicaciones frente a los modelos sólo wide y sólo deep.

    Tamaño de lote Número de hilos Latencia de servicio (ms)
    200 1 31
    100 2 17
    50 4 14

    Referencias

    • [1] J. Duchi, E. Hazan, y Y. Singer. Adaptive subgradient methods for online learning and stochastic optimization. Journal of Machine Learning Research, 12:2121–2159, julio de 2011.
    • [2] K. He, X. Zhang, S. Ren, y J. Sun. Deep residual learning for image recognition. Proc. IEEE Conference on Computer Vision and Pattern Recognition, 2016.
    • [3] H. B. McMahan. Follow-the-regularized-leader and mirror descent: Equivalence theorems and l1 regularization. En Proc. AISTATS, 2011.
    • [4] T. Mikolov, A. Deoras, D. Povey, L. Burget, y J. H. Cernocky. Strategies for training large scale neural network language models. En IEEE Automatic Speech Recognition & Understanding Workshop, 2011.
    • [5] S. Rendle. Factorization machines with libFM. ACM Trans. Intell. Syst. Technol., 3(3):57:1–57:22, mayo de 2012.
    • [6] J. J. Tompson, A. Jain, Y. LeCun, y C. Bregler. Joint training of a convolutional network and a graphical model for human pose estimation. En Z. Ghahramani, M. Welling, C. Cortes, N. D. Lawrence, y K. Q. Weinberger, editores, NIPS, páginas 1799–1807. 2014.
    • [7] H. Wang, N. Wang, y D.-Y. Yeung. Collaborative deep learning for recommender systems. En Proc. KDD, páginas 1235–1244, 2015.
    • [8] B. Yan y G. Chen. AppJoy: Personalized mobile application discovery. En MobiSys, páginas 113–126, 2011.