Rec² : Exploration de recettes
Michael Daly , John McNally
Introduction
La nourriture est l'un des contributeurs les plus riches de l'expérience humaine. Il s'empare de nos émotions et de nos sens. L'arôme sucré des crêpes fraîches, le contraste réconfortant d'une soupe chaude par une nuit froide, le grésillement d'un steak cru rencontrant un grill enflammé. Depuis des millénaires, les humains se rassemblent pour rompre le pain. Plus récemment, des recettes écrites ont émergé alors que nous préservons et partageons nos techniques de fabrication de bons plats. Le bon repas peut cimenter un souvenir. Une recette spéciale peut étayer un lien familial ou une entreprise d'un milliard de dollars. Notre équipe ici à Rec² a construit une application web pour favoriser l'exploration et l'expérimentation de recettes nouvelles et anciennes !
Aujourd'hui, des millions de recettes de haute qualité sont disponibles en ligne. Une équipe de recherche du MIT en a récupéré plus d'un million sur des sites Web populaires pour former l'ensemble de données Recipe1M+ (Marin, 2019). Chaque recette comprend un mélange de langage naturel, de quantités et d'images - un substrat riche pour l'apprentissage automatique. Notre équipe a utilisé l'ensemble de données Recipe1M+ pour développer un ensemble de modèles permettant d'interpréter et de relier ces recettes. Nous pensons que la prochaine évolution de la découverte et de la créativité alimentaires sera augmentée par la science des données. De nouveaux accords de saveurs, des substitutions d'ingrédients ou des recettes entières pourraient être générés par l'intelligence artificielle. Des analyses intelligentes peuvent permettre une meilleure gestion des stocks alimentaires pour une meilleure logistique et une consommation efficace.
Afin de maximiser leur équité et leur utilité, ces modèles doivent être aussi largement accessibles que les recettes qu'ils décrivent. Notre équipe a donné la priorité à l'accessibilité en intégrant nos modèles dans une application Web qui peut être exécutée sans aucune installation ni expérience en science des données. Le tableau de bord que nous présentons est conçu comme une introduction à l'apprentissage automatique pour un public général amateur de nourriture.
Voici l' appli . Veuillez essayer quelques-unes de vos propres invites et images !
Méthodes
Notre application nécessite simplement l'une des deux entrées de l'utilisateur : soit le nom d'un plat, soit une image du plat. Nous faisons le reste ! La figure ci-dessous présente le pipeline utilisé par notre application. Si l'utilisateur entre le nom d'une recette, l'application renverra les ingrédients prédits avec des appariements communs, une répartition du type d'aliment et de l'ethnicité, et tracera l'aliment sur un graphique des ethnies. Si l'utilisateur télécharge une image, l'application prédira le titre de la recette, puis effectuera les mêmes analyses. Les informations restituées à l'utilisateur lui permettent d'explorer ses recettes préférées d'une nouvelle manière.
L'application Rec² est construite avec une bibliothèque Python appelée Streamlit, qui a été un plaisir à utiliser. Streamlit permet aux développeurs de lancer et d'héberger rapidement leurs modèles d'apprentissage automatique à partir d'un référentiel GitHub. Notre application est exécutée à partir d'un script principal qui contrôle l'apparence du site et affiche les résultats des scripts de prise en charge qui exécutent des déductions à partir de nos modèles et données enregistrés. Les fonctions simples mais puissantes de Streamlit ont rendu la mise en œuvre de notre application simple et facile à améliorer.
Ensemble de données Recipe1M+
L' ensemble de données Recipe1M+ est un ensemble de données volumineux et riche qui peut être utilisé de plusieurs façons. Afin de limiter la portée de ce projet, nous avons choisi de nous concentrer sur la présence d'ingrédients plutôt que sur les quantités exactes de chaque ingrédient. Le premier grand nettoyage des données consistait à supprimer des informations supplémentaires telles que les mesures ou les techniques de préparation des ingrédients. Dans ce cas, nous voulons extraire "oignon" d'une phrase comme "1 tasse d'oignon haché". De même pour les titres des recettes, nous avons voulu extraire les noms des plats sans le remplissage commun qui s'ajoute aux titres des recettes. Par exemple, nous voulons extraire les "biscuits aux pépites de chocolat" des "biscuits aux pépites de chocolat de renommée mondiale de grand-mère Betty". Bien que nous aimerions avoir des biscuits de grand-mère Betty, ces mots de remplissage ne feraient que confondre les modèles.
Pour effectuer ces étapes de nettoyage, un script a été écrit pour convertir le fichier JSON d'origine en une version nettoyée et plus utilisable. La première étape du script consistait à tokeniser et à étiqueter la partie du discours (POS) pour chaque jeton. Ensuite, les mots vides, certaines parties du discours et certaines expressions régulières supplémentaires ont été supprimés des ingrédients et des titres. Le résultat a ensuite été enregistré de deux manières. Le premier était les 999 meilleurs jetons enregistrés en tant que nouveau JSON à utiliser avec le modèle de titre à ingrédient. Ce JSON contenait les jetons avec les 999 premiers comptes avec tous les autres jetons répertoriés comme "autres" pour le 1000e jeton. La deuxième façon dont les données nettoyées ont été enregistrées était dans un CSV nettoyé et condensé, qui peut être facilement chargé dans un Pandas DataFrame. Ce CSV a ensuite été utilisé pour créer les modèles LDA et Word2Vec.
La version initiale des données nettoyées a produit des résultats solides pour nos modèles, mais il y avait une marge d'amélioration substantielle. L'option la plus évidente étant la variation des noms d'ingrédients communs. Par exemple, les recettes qui répertorient la farine comme ingrédient pourraient la répertorier comme ['farine', 'farine tout usage', 'farine AP', etc.]. Pour nos modèles, ce sont des ingrédients différents, mais pour l'utilisateur, ils signifient tous la même chose. Pour corriger cette variation, une cartographie des ingrédients pour les 40 principaux ingrédients a été créée manuellement afin d'améliorer les performances du modèle. Le mappage a été créé en remplaçant les principales variantes de jetons par le jeton le plus courant (par exemple, « farine tout usage » et « farine AP » ont tous deux été remplacés par « farine »). Cette cartographie a considérablement amélioré les performances du modèle et pourrait être encore améliorée avec une cartographie plus grande,
Ensemble de données épicurieux
L'une des faiblesses de l'ensemble de données Recipe1M + était que certaines des images étaient soumises par les utilisateurs aux sites Web que l'équipe avait récupérés. Il y a beaucoup de bruit parmi ces images, et beaucoup ne semblent pas représenter le plat auquel elles sont liées. Plutôt que de tenter d'élaguer manuellement les images bruyantes, un ensemble de données distinct a été sélectionné pour aider à former le modèle image-titre. L' ensemble de données sur les ingrédients alimentaires et les recettes avec images sur Kaggle contient plus de 13 000 recettes d'Epicurious. Bien que cet ensemble de données soit beaucoup plus petit que Recipe1M +, chaque image est la photo principale de la recette réelle, il y a donc une fidélité beaucoup plus élevée entre les titres et les images. De plus, les recettes Epicurious avaient tendance à avoir des titres plus verbeux et descriptifs, nous avons donc pensé que cela conduirait aux résultats les plus intéressants.
Reconnaissance de recette
Le modèle de reconnaissance de recette prend une image de nourriture en entrée et produit une séquence de jetons, idéalement le titre de la recette représentée. Le modèle doit apprendre à la fois à quoi ressemble la nourriture et comment le langage est structuré. Plusieurs architectures de modèles ont été testées, mais celle que nous avons finalement sélectionnée est un transformateur-décodeur avec un embedder d'images, suivant de près le didacticiel de sous-titrage d'images de Tensorflow. L'embedder d'image est un modèle Headless MobileNet de Google (MobileNetV3Small), qui extrait les caractéristiques d'une image pour les transmettre à notre modèle. Les modèles MobileNet sont compacts et ont été formés sur les millions d'images du jeu de données ImageNet. Le modèle de reconnaissance de recette prend ces fonctionnalités et crée séquentiellement un titre de recette.
Malheureusement, alors que le modèle de reconnaissance de recette est assez bon pour produire des noms de plats réalistes, il n'est pas très bon pour faire correspondre l'image d'entrée fournie. Parmi les autres architectures et variantes que nous avons testées, citons un modèle séquence à séquence (seq2seq) avec des intégrations GloVe pour les jetons de titre, un intégrateur d'image basé sur InceptionV3 et un modèle de segmentation d'image associé à un classificateur d'aliments (Bose, 2020). Malheureusement, aucune variante ou architecture n'a été significativement plus efficace dans cette tâche. L'architecture de transformateur-décodeur avec une couche d'extraction de caractéristiques d'image MobileNet a été choisie parce qu'elle était la plus petite, ce qui a permis de garder l'application Web finale légère, et elle produit les prédictions les plus détaillées et les plus divertissantes.
Les cartes d'attention aident à expliquer ce qui cause les mauvaises performances. Les cartes d'attention montrent quelles régions d'une image activent le plus de neurones dans le modèle. Familièrement, il montre où le modèle regarde dans une image lorsqu'il prédit chaque jeton. Comme indiqué ci-dessus, le modèle prédit "mac" en fonction d'une région qui représente distinctement la couleur et la texture des macaronis au fromage. À partir de là, les régions de mise au point se trouvent dans les marges et les coins de l'image, car le modèle semble s'appuyer davantage sur sa compréhension de la grammaire que sur les données contenues dans les pixels de l'image. Le modèle semble également mieux fonctionner sur des photos professionnelles bien éclairées, claires, probablement parce que les données de formation contiennent presque exclusivement des images prises par des professionnels. Un ensemble de données de formation plus diversifié mais plus propre améliorerait probablement considérablement les performances du modèle.
Prédiction des ingrédients
Étant donné le nom d'une recette, le modèle de prédiction des ingrédients génère les ingrédients probables contenus dans cette recette. Afin de limiter la taille du modèle, seuls les 999 jetons de titre et ingrédients les plus fréquents ont été inclus pendant la formation, tous les autres éléments étant affectés à une catégorie "autre". Contrairement au modèle de reconnaissance de recette, le modèle de prédiction des ingrédients utilise des vecteurs clairsemés comme entrées et sorties au lieu de séquences. L'ordre d'une liste d'ingrédients est arbitraire et l'ordre des jetons dans une recette est moins important pour déterminer les ingrédients sous-jacents. Le réseau neuronal se compose de seulement trois couches cachées denses avec des activations ReLU dans une architecture simple d'encodeur-décodeur.
Alors que l'architecture était simple, les méthodes de formation devaient être hautement personnalisées pour cette tâche de classification multi-étiquettes. Pour une recette donnée, la grande majorité des ingrédients connus ne seront pas présents. Par conséquent, un modèle trivial qui produit des probabilités nulles pour tous les ingrédients atteindrait une précision supérieure à 99 % en raison du nombre écrasant de vrais négatifs. Pour compenser le déséquilibre extrême des classes, weighted_cross_entropy_with_logits de Tensorflowfonction a été modifiée pour appliquer un poids beaucoup plus élevé aux prédictions positives. De plus, les pondérations de chaque ingrédient ont été mises à l'échelle de manière linéaire en fonction de la fréquence, de sorte qu'une prédiction précise d'un ingrédient rare était plus pondérée que la prédiction d'un ingrédient commun. Ces pondérations ont aidé à empêcher le modèle de simplement prédire les quelques ingrédients les plus courants pour chaque recette, malgré le déséquilibre dans la distribution des ingrédients.
La recette moyenne de notre partition de test contient moins de 1 % des 1 000 ingrédients connus du modèle (5,05 vrais ingrédients). Bien que le modèle de prédiction des ingrédients obtienne toujours une précision globale supérieure à 99 %, il a également atteint un rappel de 0,50 et une précision de 0,32, ce qui signifie qu'en moyenne, le modèle fait 7,78 prédictions par recette, dont 2,52 sont correctes. Compte tenu de la probabilité brute que tout ingrédient prédit corresponde réellement à la recette (en plus des deux meilleurs ingrédients), ce sont des résultats formidables. Alors que le modèle avait du mal avec des garnitures comme le persil et la coriandre, il identifie correctement presque tous les 50 ingrédients les plus fréquents avec une précision d'au moins 10 %.
Identification culinaire
La partie d'identification de la cuisine de ce projet a pris deux formes : le type d'aliment et l'ethnicité. L'ensemble de données Recipe1M+ n'inclut aucune étiquette pour ces tâches, de sorte que les modèles ont dû être développés avec des méthodes non supervisées. Ainsi, l'identification du type d'aliment a été effectuée à l'aide d'un modèle d'allocation latente de Dirichlet (LDA), et la partie ethnique a été effectuée à l'aide d'un modèle Word2Vec.
Modèle ADL
Trouver l'équilibre entre l'interprétabilité et la description des sujets renvoyés par un modèle de sujet était le principal défi pour cette partie du projet. Moins de sujets créeraient probablement un ensemble de sujets bien définis, mais cela pourrait manquer dans la description des sujets. Plus de sujets peuvent produire des sujets descriptifs, mais ne seraient probablement pas interprétables par un humain. Étant donné que l'ensemble de données n'inclut pas d'étiquettes de vérité au sol pour chacune des recettes, l'équipe a exploré l'utilisation de différents vectoriseurs, modèles, hyperparamètres et techniques d'évaluation. En fin de compte, un modèle LDA avec 20 sujets a été choisi, car il présentait le meilleur équilibre entre l'interprétabilité et la description des sujets. Les compromis pour les modèles LDA entre le nombre de sujets et les métriques calculées (log-vraisemblance, perplexité et cohérence des sujets) sont donnés en annexe.
La tâche d'interprétation et d'étiquetage manuel des vecteurs thématiques de sortie est l'une des parties les plus difficiles de la modélisation thématique. La figure ci-dessous montre certains des jetons renvoyés par deux des vecteurs de sujet et des nuages de mots qui ont été générés à partir des titres de recettes les plus pondérés pour ces sujets. Le sujet 0 peut clairement être identifié comme un sujet de pain ou de pâte, mais le sujet 2 est un peu plus ambigu. Il pourrait être étiqueté comme "casserole", une catégorie générique "italienne", ou quelque chose de complètement différent. L'ambiguïté dans les étiquettes des vecteurs de sujets augmentait avec le nombre de sujets inclus dans le modèle. Nous avons utilisé notre meilleur jugement pour attribuer les étiquettes, mais consulter un expert en la matière serait la meilleure façon de procéder.
Les résultats du modèle LDA sont les versions complètes des vecteurs thématiques présentés ci-dessus. Ces vecteurs de sujet sont enregistrés dans notre application, et nous calculons la similarité cosinusoïdale entre chaque vecteur de sujet et la liste prédite d'ingrédients pour catégoriser la recette.
Modèle Word2Vec
Un modèle word2vec est un réseau de neurones formé sur un corpus de documents pour apprendre l'association entre les mots de ce corpus. Cela signifie que nous pouvons transmettre une étiquette au modèle et lui faire renvoyer les mots les plus similaires à cette étiquette, qui représenteront un vecteur de sujet. Cela nous permet de créer n'importe quel nombre d'étiquettes rudimentaires et de créer des vecteurs de sujet que nous pouvons utiliser pour attribuer ces étiquettes. Au lieu d'utiliser des ethnies, nous pourrions créer des vecteurs thématiques pour les entrées « petit-déjeuner », « dîner » et « dessert » afin de catégoriser la recette d'entrée selon ces étiquettes.
Le modèle word2vec pour cette tâche a été formé avec les ingrédients et les titres de la recette. Les titres des recettes incluent souvent l'ethnicité ou d'autres étiquettes importantes qui aident le modèle à apprendre. Une conséquence de ceci est que les jetons retournés par le modèle word2vec ne sont pas toujours des ingrédients, ils pourraient être d'autres étiquettes similaires à l'entrée. Par exemple, certains des jetons renvoyés pour l'entrée « grec » sont « tzatziki », « feta » et « méditerranéen ». Les jetons qui ne sont pas des ingrédients sont toujours acceptables pour attribuer une origine ethnique à la recette car le modèle word2vec aura toujours des associations avec ces étiquettes à d'autres ingrédients. « Méditerranéen » peut être lié à des ingrédients tels que « pois chiches » ou « concombre », ce qui aidera toujours le modèle à identifier cette recette comme « grecque ».
Une fois que nous avons ces vecteurs thématiques, nous pouvons les tracer sur un graphique t-SNE (Stochastic Neighbor Embedding) distribué pour visualiser comment ils sont liés les uns aux autres. Le graphique t-SNE ci-dessous montre les 10 premiers jetons pour chaque étiquette d'origine ethnique réduits à un graphique 2D. Les tracés T-SNE sont un moyen de visualiser des données de grande dimension dans un espace de dimension inférieure. Ils tentent de rapprocher les points et les clusters similaires et de séparer les dissemblables. En conséquence, nous pouvons voir que quelque chose comme la nourriture indienne a un groupe serré qui est séparé de la plupart des autres cuisines, ou que les étiquettes asiatiques sont séparées à droite, mais sont toujours proches les unes des autres.
Résultats
L'équipe Rec² est ravie de l'endroit où notre application a atterri. Nous avons décidé de créer une application Web conviviale et efficace qui permet à un public général de tirer parti de la puissance de nos modèles. L'application ne nécessite qu'une des deux entrées pour qu'un utilisateur démarre, et le temps d'inférence pour afficher les résultats n'est jamais supérieur à environ 5 secondes. Une métrique arbitraire, mais amusante, est que j'ai envoyé ceci à mon grand-père technologiquement défié qui a pu utiliser et profiter de cette application.
L'efficacité et l'accessibilité de l'application étaient l'un des aspects les plus difficiles de ce projet, mais c'est aussi l'une des plus grandes forces. Afin de respecter nos mesures de vitesse, nous avons dû enregistrer tous nos modèles et pré-calculer toutes les données qui seraient utilisées. Nous avons également pu profiter de certaines des fonctions expérimentales de mémorisation de Streamlit. Ces fonctions ont mémorisé différentes sorties afin que lorsque l'utilisateur interagit avec différentes parties de l'application, il n'ait pas à tout recalculer. Cela a abouti à une intégration transparente entre les différents modèles de l'application.
La principale faiblesse de notre projet est que les modèles eux-mêmes sont défectueux, mais ils constituent toujours des introductions utiles aux capacités d'apprentissage automatique pour les applications alimentaires. Le modèle de prédiction des ingrédients produit en grande partie des listes d'ingrédients logiques, quoique conservatrices. Le modèle de reconnaissance de recette produit parfois une sortie raisonnable, mais génère souvent un concept divertissant pour un nouveau plat qui n'est évidemment pas lié à l'image d'entrée. Les modèles de type d'aliment et d'ethnicité ont été générés à l'aide de techniques non supervisées, ce qui, bien qu'il ne soit pas idéal, donne une idée (* clin d'œil *) de ce qu'un ensemble de données avec des étiquettes de vérité au sol serait capable d'accomplir. Ces modèles ne sont pas prêts à éclairer des décisions sérieuses concernant l'alimentation. Cependant, ils ne sont que le point de départ et certainement efficaces pour l'exploration et l'apprentissage. Alors que les modèles sont une faiblesse du projet, le back-end de notre application permet à ces modèles d'être facilement mis à jour. Si un utilisateur souhaite contribuer à notre projet, il devrait trouver simple de remplacer nos modèles par un modèle qu'il forme lui-même.
Discussion
L'application Rec² Recipe Exploration vise à aider les gens à explorer et à en savoir plus sur la nourriture. Nous voulions créer une plate-forme pour les gourmets et les chefs afin d'explorer de nouvelles recettes et ingrédients préférés. À l'aide de notre application, les gourmets peuvent explorer les cuisines ethniques qui se ressemblent et éventuellement essayer quelque chose de nouveau. Alternativement, les cuisiniers à domicile peuvent rechercher rapidement leurs recettes préférées pour se souvenir de tous les ingrédients dont ils ont besoin au lieu de parcourir 3 pages de texte et de publicités à partir d'une recette en ligne.
Dans l'état actuel de l'application, les préoccupations éthiques sont minimes. Le principal sujet de préoccupation est le biais apparent dans les données. En explorant l'ensemble de données et les résultats des modèles, il est devenu évident que les recettes de nos ensembles de données favorisaient largement un régime américain. Ce biais rend difficile pour les modèles de différencier les différents régimes alimentaires régionaux. Par exemple, le modèle de type de nourriture avait des sujets qui représentaient des choses comme la cuisine cajun et barbecue, mais ne pouvait produire qu'une catégorie générique "asiatique" pour représenter les recettes qu'il voyait dans les différents pays asiatiques. Une autre préoccupation éthique dans cette veine est que les sujets ont été étiquetés en fonction de l'expérience personnelle de l'équipe avec différentes cuisines. Ceci est important à noter car la nourriture est un sujet qui passionne de nombreuses personnes et chacun a des expériences différentes.
Si notre application ou nos modèles devaient être utilisés dans une application commerciale, nous pourrions rencontrer des problèmes de droits d'auteur. Les ensembles de données Recipe1M + et Epicurious ont été extraits de sites Web publics, mais ils peuvent toujours contenir du matériel ou des recettes protégés par des droits d'auteur. Toute conclusion ou apprentissage tiré de l'application ou des modèles pourrait enfreindre la propriété intellectuelle d'un auteur de recette qui a des droits sur leur contenu. Notre application a été développée uniquement à des fins académiques, nous sommes donc probablement protégés en tant qu'utilisation équitable (Walker, 2018).
L'équipe Rec² est ravie et fière de la situation actuelle de notre application, mais aimerait la voir aller beaucoup plus loin ! Nous faisons appel à tous les data scientists, foodies ou chefs passionnés pour nous aider à faire de cette application un espace utile et amusant pour explorer la nourriture. Le code source et les modèles de l'application seront disponibles dans un référentiel GitHub public pour que les utilisateurs puissent les améliorer ou nous faire part de leurs commentaires.
La principale contrainte pour l'application Web est que les fichiers de modèle ne peuvent pas dépasser 75 Mo et doivent rester inférieurs à 50 Mo, car l'application se déploie directement à partir du référentiel GitHub via Streamlit. Les modèles doivent également respecter une liste d'ingrédients définie, avec un traitement et/ou une cartographie correspondants pour extraire les ingrédients d'une recette native. Bien que cette liste d'ingrédients puisse être modifiée, elle doit être partagée entre les modèles de prédiction des ingrédients et d'identification de la cuisine pour maintenir l'alignement. Les architectures de modèles elles-mêmes peuvent être modifiées si elles présentent un gain de performances évident et intéressant, ou les poids et les paramètres peuvent être ajustés.
Il y a quelques fonctionnalités intéressantes que l'équipe Rec² aimerait voir dans notre application, mais n'a pas eu le temps de les mettre en œuvre pour ce projet. Faites-nous savoir si vous pensez qu'il manque quelque chose dans cette liste.
- La mise en œuvre des commentaires des utilisateurs dans nos modèles serait un moyen sympa de crowdsourcer l'amélioration de nos modèles. Cette fonctionnalité permettrait aux utilisateurs d'être d'accord ou non avec les ingrédients ou les étiquettes qui ont été prédits ou d'en suggérer d'autres afin que les modèles puissent être recyclés sur ces commentaires.
- La génération complète de recettes avec des quantités d'ingrédients et des instructions serait un objectif formidable à atteindre. Cela impliquerait beaucoup plus de traitement du langage naturel pour extraire les quantités et la structure des instructions.
- Collecte de recettes plus globales pour tenir compte du biais alimentaire américain dans l'ensemble de données.
- Filtres pour différents régimes (végétarien, casher, etc.) ou ethnies.
Énoncé des travaux
Les deux auteurs, Michael Daly et John McNally, ont collaboré en tandem pour sélectionner et définir les objectifs de ce projet. Ils ont travaillé ensemble pour développer la technique de prétraitement pour nettoyer et préparer les ensembles de données de recette pour le développement du modèle. Michael Daly a dirigé le développement des modèles de reconnaissance des recettes et de prédiction des ingrédients. John McNally a dirigé le développement des modèles d'identification du type de cuisine pour l'ethnicité et le type d'aliment. Les deux auteurs ont partagé les responsabilités d'écriture et d'édition de ce billet de blog.
Références
Bose, Bishal. 2020. Caption-IT : Modèle d'apprentissage profond de l'image à la séquence : du développement au déploiement ! Analytique Vidhya (moyen). Consulté en décembre 2022 à partir dehttps:///analytics-vidhya/caption-it-image-to-sequence-deep-learning-model-development-to-deployment-7f9f04ab5fa0
"Légende d'image avec attention visuelle." 2022. TensorFlow. Consulté en décembre 2022 à partir dehttps://www.tensorflow.org/tutorials/text/image_captioning
Marin, Javier, et al. 2019. "Recipe1M + : un ensemble de données pour l'apprentissage des intégrations intermodales pour les recettes de cuisine et les images d'aliments." Transactions IEEE sur l'analyse de modèles et l'intelligence artificielle. Consulté en décembre 2022 à partir de tpami19.pdf (mit.edu)
Walker, Adam. 2018. "Utilisation équitable - L'exigence de définir la loi pour les algorithmes d'IA." DataDrivenInvestor (moyen). Consulté en décembre 2022 à partir dehttps://medium.datadriveninvestor.com/fair-use-and-ai-87f77721f1ea
Xu, Kevin, et al. 2015. "Montrez, assistez et racontez : Génération de légendes d'images neurales avec attention visuelle." Consulté en décembre 2022 à partir dehttps://arxiv.org/pdf/1502.03044.pdf
annexe
A.1 Rapport supplémentaire
Le travail présenté est une extension d'un projet Milestone II pour notre Master of Applied Data Science à l'Université du Michigan. Ce rapport est lié ici .
A.2 Développement de la prédiction des ingrédients
En plus des poids supplémentaires incorporés dans la fonction de perte, la valeur seuil pour les prédictions positives a été ajustée à 0,02 pour de meilleurs résultats. Un seuil inférieur génère plus de prédictions, mais un seuil supérieur limite les prédictions à celles qui sont les plus fiables. Avec le pipeline de prétraitement amélioré, le seuil de 0,02 conduit à 2,52 prédictions vraies sur un total de 7,78 prédictions sur la partition de test Recipe1M+. Ces recettes contiennent en moyenne 5,05 vrais ingrédients, de sorte que le modèle obtient presque la moitié des ingrédients de chaque recette avec l'avantage de 50 % de suppositions supplémentaires.
A.3 Métriques pour le modèle LDA
La figure ci-dessus montre les mesures de performance de cinq modèles LDA avec différents nombres de sujets. Les modèles les plus performants auront la plus faible perplexité et la plus grande log-vraisemblance et cohérence de sujet. Les graphiques montrent que le modèle avec 40 sujets est globalement le plus performant ; cependant, nous pouvons voir un point d'inflexion clair (à gauche) et un saut (à droite) à 20 sujets. Cela pourrait suggérer qu'il y a des rendements décroissants en ajoutant plus de sujets au modèle.
![Qu'est-ce qu'une liste liée, de toute façon? [Partie 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































