El tema de las redes neuronales excita los corazones de los desarrolladores, científicos y especialistas en marketing no durante el primer año, pero para algunos ni siquiera la primera década. Pero todos sabemos que, a menudo, en los proyectos basados en neuronas hay una gran fecha simple y un boletín de marketing, inflado en el contexto de un encabezado de clickbait. Intentamos evitar tal historia y desarrollamos un proyecto de neuropizza basado en un estudio de compatibilidad molecular de ingredientes, análisis de 300 mil recetas y pura creatividad. Debajo del corte puede encontrar los detalles y encontrar el enlace de código abierto en GitHub.

¿Puede un automóvil crear algo nuevo o está limitado por lo que sabe? Hasta ahora, nadie sabe la respuesta a esta pregunta. Pero ahora, la inteligencia artificial resuelve perfectamente los problemas de analizar grandes datos no estándar.
Una vez en Dodo Pizza decidieron realizar un experimento: sistematizar y describir estructuralmente lo que se considera caótico y subjetivo en todo el mundo: el gusto. La inteligencia artificial ayudó a encontrar las combinaciones más locas de ingredientes que, a pesar de su naturaleza inusual, resultaron sabrosas para la mayoría de las personas.
Mi colega y yo actuamos como especialistas en redes neuronales de MIPT y Skoltech en este proyecto inusual. Hemos desarrollado y entrenado una red neuronal que puede resolver el problema de generar recetas de cocina. En el curso del trabajo, se analizaron más de 300,000 recetas, así como los resultados de la investigación científica sobre la compatibilidad molecular de los ingredientes. En base a esto, AI aprendió a encontrar conexiones no obvias entre los ingredientes y a comprender cómo se combinan entre sí y cómo la presencia de cada uno de ellos afecta la compatibilidad de todos los demás.
Cómo nos metimos en el proyecto Dodo AI-pizza
Todo, como suele suceder, sucedió de repente. Hubo un corto período de tiempo de espera antes de la práctica de verano, acabamos de terminar el curso de Aprendizaje profundo, defendimos el proyecto e intentamos adaptarnos a un ritmo más relajado de estudio / vida. Pero no pudieron: accidentalmente se encontraron reposts en una solicitud personal de BBDO sobre encontrar chicos que pudieran escribir una red neuronal para generar nuevas recetas. Más específicamente: nuevas recetas de pizza para Dodo. Sin dudarlo, decidimos que queríamos intentarlo.
Cuando el proyecto recién comenzaba, no entendíamos completamente si iría más allá, si habría una implementación práctica, simplemente estábamos interesados en la tarea. Una gran cantidad de redbowl e internet rápido nos ayudaron y nos hicieron avanzar. Mirando hacia atrás, entendemos que algunas cosas podrían hacerse de manera diferente, pero esto es normal.
En cualquier caso, después de algunas semanas, el modelo de trabajo de la red neuronal estaba listo, comenzó la etapa de su lanzamiento en producción. Tenemos mucha suerte de que el proyecto no pueda llamarse industrial o técnico en el sentido estricto de estas palabras. El estado del experimento es más adecuado para él.
Usando nuestro modelo, se generaron varias variantes de recetas de pizza, que pasamos a manos de chefs de Dodo muy geniales para realizar pruebas de productos. El momento de degustación de pizza en el Dodo R&D Lab fue un hito en términos de reconocimiento del valor del trabajo que hicimos. Fue muy emocionante ver el producto vendido. De hecho, a menudo todo el desarrollo y las soluciones son algo bastante efímero e intangible, y aquí el resultado no solo puede ser tocado, sino también probado.
Colección primaria de conjunto de datos y chile
Cualquier modelo necesita datos para funcionar. Por lo tanto, para entrenar nuestra IA, recolectamos 300,000 recetas de todas las fuentes disponibles. Era importante para nosotros recolectar no solo recetas de pizza, sino también diversificar la selección tanto como sea posible, mientras tratamos de no ir más allá de lo razonable (por ejemplo, ignorar las recetas de cócteles, dándonos cuenta de que su semántica no afectará en gran medida la semántica de recetas de pizza).
Después de recopilar los datos, obtuvimos más de 100,000 ingredientes únicos. El gran problema era llevarlos a una forma. ¿Pero de dónde vinieron tantos artículos? Todo es simple, por ejemplo, los chiles en las recetas se indican de esta manera: chile, chile, chile, chile. Es obvio para usted que este es el mismo pimiento, pero la red neuronal percibe diferentes ortografías como entidades separadas. Lo arreglamos Después de limpiar los datos y llevarlos a una vista, solo nos quedaban 1,000 posiciones.
Análisis de gustos mundiales
Después de recibir el conjunto de datos listo para trabajar, realizamos el análisis inicial. Primero, observamos qué cocinas del mundo están representadas en nuestro conjunto de datos en una proporción cuantitativa.

Para cada una de las cocinas, hemos identificado los ingredientes más populares.

En estos gráficos, las diferencias en las preferencias de sabor de las personas por país son notables. También queda claro a partir de estas preferencias cómo las personas de diferentes países combinan ingredientes entre sí.
Dos hallazgos de pizza
Después de este análisis global, decidimos estudiar recetas de pizza de todo el mundo con más detalle para encontrar patrones en su composición. Aquí están las conclusiones que hicimos:
- Las recetas de pizza son un orden de magnitud menor que las recetas y postres de carne / pollo.

- Muchos de los ingredientes que se encuentran en las recetas de pizza son limitados. La variabilidad de los productos es mucho menor que en otros platos.

Como probamos el modelo
Encontrar combinaciones de sabores reales no es lo mismo que revelar la compatibilidad de las moléculas. Todos los quesos tienen una composición molecular similar, pero esto no significa que las combinaciones exitosas se encuentren solo en el área de los ingredientes más cercanos.

Sin embargo, deberíamos ver exactamente la compatibilidad de ingredientes similares al nivel molecular cuando traducimos todo a las matemáticas. Debido a que los objetos similares (los mismos quesos) deben seguir siendo similares, sin importar cómo los describamos. Entonces podemos determinar que describió estos objetos correctamente.
Convertir receta a matemática
Para presentar la receta en una forma comprensible para la red neuronal, utilizamos el muestreo negativo Skip-Gram (SGNS), el algoritmo word2vec, que se basa en la aparición de palabras en contexto. Decidimos no usar los modelos word2vec previamente entrenados, porque nuestra receta es obviamente diferente en estructura semántica de los textos simples. Usando tales modelos, podríamos perder información importante.
Puede evaluar el resultado de word2vec mirando los vecinos semánticos más cercanos. Por ejemplo, esto es lo que nuestro modelo sabe sobre el queso:

Para probar cómo los modelos semánticos pueden capturar las interacciones de las recetas de los ingredientes, aplicamos un modelo de modelado temático para todas las recetas de la muestra. Es decir, intentaron dividir el conjunto de datos de recetas en grupos de acuerdo con patrones matemáticamente identificados.

Sabiendo de antemano que cierta muestra de recetas pertenece a varias clases reales obtenidas de los datos, construimos la distribución de pertenencia de cada clase real a las generadas identificadas.

La más obvia fue la clase de postres, que formó el tema 0 y 1, generado por el modelo temático. Además de los postres, casi no hay otras clases en estas materias, lo que sugiere que los postres se separan fácilmente de otras clases de platos. También en cada asignatura hay una clase que lo describe mejor. Esto significa que nuestros modelos se adaptaron bien a la descripción matemática del significado no obvio de "gusto".
Generación de recetas
Para crear nuevas recetas, utilizamos dos redes neuronales recurrentes. Para hacer esto, sugerimos que en el espacio común de recetas hay un subespacio responsable de las recetas de pizza. Para que la red neuronal aprenda a crear nuevas recetas de pizza, tuvimos que encontrar este subespacio.
Tal tarea es similar en significado a la codificación automática de imágenes cuando presentamos una imagen como un vector de pequeña dimensión. En este caso, los vectores pueden contener una gran cantidad de información específica sobre la imagen.
Por ejemplo, para el reconocimiento facial en la foto, dichos vectores pueden almacenar información sobre el color del cabello humano en una celda separada. Elegimos este enfoque precisamente por las propiedades únicas del subespacio oculto.
Para identificar el subespacio de pizza, ejecutamos recetas a través de dos redes neuronales recurrentes. El primero recibió una receta de pizza en la entrada y buscó su representación en forma de un vector oculto. El segundo recibió un vector oculto de la primera red neuronal y tuvo que ofrecer una receta basada en él. Las recetas en la entrada de la primera red neuronal y en la salida de la segunda deberían haber coincidido.
Entonces, dos redes neuronales en el formato de decodificación del codificador aprendieron a transmitir correctamente la receta a un vector oculto (latente) y viceversa. En base a esto, pudimos descubrir un subespacio oculto que es responsable de todas las recetas de pizza.


Compatibilidad molecular
Cuando resolvimos el problema de crear una receta de pizza, tuvimos que agregar el criterio de compatibilidad molecular al modelo. Para esto, utilizamos los resultados de un
estudio conjunto de científicos de Cambridge y varias universidades de EE. UU.
Como resultado del estudio, se descubrió que los ingredientes con el mayor número de pares moleculares totales se combinan mejor. Por lo tanto, al crear la receta, la red neuronal prefería ingredientes con una estructura molecular similar.
Resultado e IA Pizza
Como resultado, nuestra red neuronal ha aprendido a crear con éxito recetas de pizza. Al ajustar los coeficientes, la IA puede producir tanto recetas clásicas (como Margarita o Pepperoni) como locas. Una de esas recetas locas formó la base de la primera pizza molecularmente perfecta del mundo con diez ingredientes: salsa de tomate, melón, pera, pollo, tomates cherry, atún, menta, brócoli, queso mozzarella, granola. La edición limitada incluso se puede comprar en una de las pizzerías de Dodo. Y aquí hay algunas recetas más interesantes que puedes intentar cocinar en casa:
- espinacas, queso, tomate, aceituna negra, aceituna, ajo, pimienta, albahaca, cítricos, melón, brotes, suero de leche, limón, lubina, nuez, colinabo;
- cebolla, tomate, aceituna, pimienta negra, pan, masa;
- pollo, cebolla, aceituna negra, queso, salsa, tomate, aceite de oliva, queso mozzarella;
- tomate, mantequilla, queso crema, pimienta, aceite de oliva, queso, pimienta negra, queso mozzarella;
Todo esto sería basura si no le damos un enlace a lo más interesante: