Rec²: exploração de receita

Dec 10 2022
Uma lente interativa habilitada para aprendizado de máquina sobre alimentos
Michael Daly, John McNally Introdução A comida é uma das contribuições mais ricas para a experiência humana. Apodera-se das nossas emoções e dos nossos sentidos.

Michael Daly , John McNally

Introdução

A comida é um dos contribuintes mais ricos para a experiência humana. Apodera-se das nossas emoções e dos nossos sentidos. O aroma doce de panquecas frescas, o contraste reconfortante de sopa quente em uma noite fria, o chiado de bife cru encontrando uma grelha ardente. Por milênios, os humanos se uniram para partir o pão. Mais recentemente, receitas escritas surgiram à medida que preservamos e compartilhamos nossas técnicas para elaborar uma boa comida. A refeição certa pode cimentar uma memória. Uma receita especial pode sustentar um vínculo familiar ou uma empresa bilionária. Nossa equipe aqui na Rec² construiu um aplicativo da web para promover a exploração e experimentação de receitas novas e antigas!

Hoje, milhões de receitas de alta qualidade estão disponíveis online. Uma equipe de pesquisa do MIT extraiu mais de 1 milhão deles de sites populares para formar o conjunto de dados Recipe1M+ (Marin, 2019). Cada receita inclui uma mistura de linguagem natural, quantidades e imagens – um rico substrato para aprendizado de máquina. Nossa equipe usou o conjunto de dados Recipe1M+ para desenvolver um conjunto de modelos para interpretar e relacionar essas receitas. Acreditamos que a próxima evolução da descoberta e criatividade de alimentos será aumentada pela ciência de dados. Novas combinações de sabores, substituições de ingredientes ou receitas inteiras podem ser geradas por inteligência artificial. Análises inteligentes podem permitir uma melhor gestão do estoque de alimentos para melhor logística e consumo eficiente.

Para maximizar sua equidade e utilidade, esses modelos precisam ser tão amplamente acessíveis quanto as receitas que descrevem. Nossa equipe priorizou a acessibilidade integrando nossos modelos em um aplicativo da web que pode ser executado sem nenhuma instalação ou experiência em ciência de dados. O painel que apresentamos foi projetado como uma introdução ao aprendizado de máquina para um público amante de comida em geral.

Aqui está o aplicativo . Experimente alguns de seus próprios prompts e imagens!

Métodos

Nosso aplicativo simplesmente requer uma das duas entradas do usuário: o nome de um prato ou uma imagem do prato. Nós fazemos o resto! A figura abaixo apresenta uma visão geral do pipeline que nosso aplicativo usa. Se o usuário inserir o nome de uma receita, o aplicativo retornará ingredientes previstos com combinações comuns, uma divisão do tipo de alimento e etnia e plotará a comida em um gráfico de etnias. Se o usuário enviar uma imagem, o aplicativo preverá o título da receita e fará as mesmas análises. A informação devolvida ao utilizador permite-lhe explorar as suas receitas favoritas de uma nova forma.

Diagrama de blocos de componentes de aplicativos da web.

O aplicativo Rec² é construído com uma biblioteca Python chamada Streamlit, que foi um prazer usar. O Streamlit permite que os desenvolvedores iniciem e hospedem rapidamente seus modelos de aprendizado de máquina a partir de um repositório GitHub. Nosso aplicativo é executado a partir de um script principal que controla a aparência do site e exibe os resultados de scripts de suporte que executam inferências de nossos modelos e dados salvos. As funções simples e poderosas do Streamlit tornaram a implementação de nosso aplicativo simples e fácil de melhorar.

Receita1M+ Conjunto de dados

O conjunto de dados Recipe1M+ é um conjunto de dados grande e rico que pode ser usado de várias maneiras. Para limitar o escopo deste projeto, optamos por focar na presença de ingredientes e não nas quantidades exatas de cada ingrediente. A primeira grande limpeza dos dados envolveu a remoção de informações adicionais, como medições ou técnicas de preparação dos ingredientes. Neste caso, queremos extrair 'cebola' de uma frase como '1 xícara de cebola picada'. Da mesma forma, para os títulos das receitas, queríamos extrair os nomes dos pratos sem o preenchimento comum que é adicionado aos títulos das receitas. Por exemplo, queremos extrair 'biscoitos com gotas de chocolate' de 'Biscoitos com gotas de chocolate mundialmente famosos da vovó Betty'. Embora adoraríamos comer alguns dos biscoitos da vovó Betty, essas palavras de preenchimento apenas confundiriam os modelos.

Para executar essas etapas de limpeza, um script foi escrito para converter o arquivo JSON original em uma versão limpa e mais utilizável. A primeira etapa do script foi tokenizar e rotular a classe gramatical (POS) de cada token. Em seguida, stopwords, certas partes do discurso e alguns regex adicionais foram removidos dos ingredientes e títulos. O resultado foi então salvo de duas maneiras. O primeiro foram os 999 principais tokens salvos como um novo JSON para ser usado com o título para o modelo de ingrediente. Este JSON continha os tokens com as 999 contagens principais com todos os outros tokens listados como 'outros' para o 1000º token. A segunda maneira de salvar os dados limpos foi em um CSV limpo e condensado, que pode ser facilmente carregado em um Pandas DataFrame. Este CSV foi então usado para criar os modelos LDA e Word2Vec.

A versão inicial dos dados limpos produziu resultados sólidos para nossos modelos, mas havia espaço substancial para melhorias. A opção mais aparente é a variação dos nomes dos ingredientes comuns. Por exemplo, receitas que listam a farinha como ingrediente podem listá-la como ['farinha', 'farinha de uso geral', 'farinha AP', etc.]. Para nossos modelos, esses são ingredientes diferentes, mas para o usuário, todos significam a mesma coisa. Para corrigir essa variação, um mapeamento de ingredientes para os 40 principais ingredientes foi criado manualmente para melhorar o desempenho do modelo. O mapeamento foi criado substituindo as principais variações de tokens pelo token mais comum (por exemplo, 'farinha de uso geral' e 'farinha AP' foram ambos substituídos por 'farinha'). Esse mapeamento melhorou significativamente o desempenho do modelo e poderia ser melhorado ainda mais com um mapeamento maior,

Amostra de mapeamentos de ingredientes para dois ingredientes comuns. Todas essas variações de ovo e açúcar sobreviveram ao pré-processamento inicial de limpeza de dados.

Conjunto de dados epicurious

Uma fraqueza do conjunto de dados Recipe1M+ foi que algumas das imagens foram enviadas pelos usuários para os sites que a equipe raspou. Há um ruído considerável entre essas imagens, e muitas não parecem retratar o prato ao qual estão ligadas. Em vez de tentar remover manualmente as imagens com ruído, um conjunto de dados separado foi selecionado para ajudar a treinar o modelo de imagem para título. O conjunto de dados de ingredientes e receitas de alimentos com conjunto de dados de imagens no Kaggle contém mais de 13.000 receitas do Epicurious. Embora esse conjunto de dados seja muito menor do que Recipe1M+, cada imagem é a foto principal da receita real, portanto, há uma fidelidade muito maior entre os títulos e as imagens. Além disso, as receitas Epicurious tendem a ter títulos mais detalhados e descritivos, então acreditamos que isso levaria a resultados mais interessantes.

Reconhecimento de receita

O modelo de reconhecimento de receita pega uma imagem de comida como entrada e gera uma sequência de tokens, idealmente o título da receita representada. O modelo precisa aprender como a comida se parece e como a linguagem é estruturada. Várias arquiteturas de modelo foram testadas, mas a que finalmente selecionamos é um transformador-decodificador com um incorporador de imagem, seguindo de perto o tutorial de legendagem de imagem do Tensorflow. O incorporador de imagens é um modelo Headless MobileNet do Google (MobileNetV3Small), que extrai as características de uma imagem para passar para o nosso modelo. Os modelos MobileNet são compactos e foram treinados em milhões de imagens no conjunto de dados ImageNet. O modelo de reconhecimento de receita usa esses recursos e constrói sequencialmente um título de receita.

Diagrama do processo sequencial de predição do título da receita. O título previsto é inicializado como um token inicial ( ). O modelo prevê o próximo token com base no token anterior e na imagem de entrada. O processo se repete até que um token final ( ) é previsto.

Infelizmente, embora o modelo de reconhecimento de receita seja bastante bom em produzir nomes de pratos que soem realistas, não é muito bom em corresponder à imagem de entrada fornecida. Outras arquiteturas e variações que testamos incluíram um modelo sequência a sequência (seq2seq) com incorporações GloVe para os tokens de título, um incorporador de imagem baseado em InceptionV3 e um modelo de segmentação de imagem emparelhado com um classificador de alimentos (Bose, 2020). Infelizmente, nenhuma variação ou arquitetura foi significativamente mais bem-sucedida na tarefa. A arquitetura do transformador-decodificador com uma camada de extração de recurso de imagem MobileNet foi escolhida porque era a menor, o que ajudava a manter o peso do aplicativo da web final e produz as previsões mais detalhadas e divertidas.

Mapas de atenção para reconhecimento de receita de uma imagem de macarrão com queijo. O modelo prevê corretamente “mac and cheese”, mas extrapola “com castanhas e alecrim” com base em regiões vazias da imagem.

Os mapas de atenção ajudam a explicar o que está causando o mau desempenho. Os mapas de atenção mostram quais regiões de uma imagem estão ativando mais neurônios no modelo. Coloquialmente, mostra onde o modelo está olhando dentro de uma imagem quando prevê cada token. Como mostrado acima, o modelo prevê “mac” com base em uma região que representa distintamente a cor e a textura do macarrão com queijo. A partir daí, as regiões de foco estão nas margens e cantos da imagem, já que o modelo parece confiar mais em sua compreensão da gramática do que em qualquer um dos dados contidos nos pixels da imagem. O modelo também parece ter um desempenho melhor em fotos profissionais claras e bem iluminadas, provavelmente porque os dados de treinamento continham quase exclusivamente imagens tiradas profissionalmente. Um conjunto de dados de treinamento mais diversificado, mas mais limpo, provavelmente melhoraria significativamente o desempenho do modelo.

Previsão de Ingrediente

Dado o nome de uma receita, o modelo de previsão de ingredientes gera os prováveis ​​ingredientes contidos nessa receita. Para limitar o tamanho do modelo, apenas os 999 tokens de título e ingredientes mais frequentes foram incluídos durante o treinamento, com todos os outros itens atribuídos a uma categoria “outros”. Ao contrário do modelo de reconhecimento de receita, o modelo de previsão de ingredientes usa vetores esparsos como entradas e saídas em vez de sequências. A ordem de uma lista de ingredientes é arbitrária e a ordem dos tokens em uma receita é menos importante para determinar os ingredientes subjacentes. A rede neural consiste em apenas três camadas ocultas densas com ativações ReLU em uma arquitetura simples de codificador-decodificador.

Arquitetura do modelo de previsão de ingredientes.

Embora a arquitetura fosse direta, os métodos de treinamento precisavam ser altamente personalizados para essa tarefa de classificação de vários rótulos. Para qualquer receita, a grande maioria dos ingredientes conhecidos não estará presente. Portanto, um modelo trivial que gera probabilidade zero para todos os ingredientes alcançaria uma precisão superior a 99% devido ao número esmagador de verdadeiros negativos. Para compensar o desequilíbrio extremo da classe, o Weighted_cross_entropy_with_logits do Tensorflowfunção foi modificada para aplicar um peso muito maior para previsões positivas. Além disso, os pesos para cada ingrediente foram escalados linearmente por frequência, de modo que uma previsão precisa de um ingrediente raro tenha um peso maior do que a previsão de um ingrediente comum. Esses pesos ajudaram a evitar que o modelo simplesmente predissesse os poucos ingredientes mais comuns para cada receita, apesar do desequilíbrio na distribuição dos ingredientes.

A receita média em nossa partição de teste contém menos de 1% dos 1.000 ingredientes conhecidos pelo modelo (5,05 ingredientes verdadeiros). Embora o modelo de previsão de ingredientes ainda obtenha mais de 99% de precisão geral, ele também alcançou um recall de 0,50 e precisão de 0,32, o que significa que, em média, o modelo faz 7,78 previsões por receita, 2,52 das quais corretas. Dada a probabilidade bruta de qualquer ingrediente previsto realmente corresponder à receita (além dos principais ingredientes), esses são resultados tremendos. Embora o modelo tenha lutado com guarnições como salsa e coentro, ele identifica corretamente quase todos os 50 ingredientes mais frequentes com pelo menos 10% de precisão.

Desempenho do modelo de previsão de ingredientes, conforme medido pelo número de previsões verdadeiras em comparação com ocorrências verdadeiras e previsões totais, para os 50 principais ingredientes mais frequentes.

Identificação da cozinha

A parte de identificação da culinária deste projeto assumiu duas formas: tipo de comida e etnia. O conjunto de dados Recipe1M+ não inclui nenhum rótulo para essas tarefas, então os modelos tiveram que ser desenvolvidos com métodos não supervisionados. Assim, a identificação do tipo de alimento foi feita usando um modelo Latent Dirichlet Allocation (LDA) e a porção de etnia foi feita usando um modelo Word2Vec.

Modelo LDA
Encontrar o equilíbrio entre interpretabilidade e descritividade dos tópicos retornados por um modelo de tópico foi o principal desafio para esta parte do projeto. Menos tópicos provavelmente criariam um conjunto de tópicos bem definidos, mas podem não ser tão descritivos quanto os tópicos. Mais tópicos podem produzir tópicos descritivos, mas provavelmente não seriam interpretáveis ​​para um ser humano. Como o conjunto de dados não inclui rótulos reais para cada uma das receitas, a equipe explorou o uso de diferentes vetorizadores, modelos, hiperparâmetros e técnicas de avaliação. Em última análise, um modelo LDA com 20 tópicos foi escolhido, pois apresentou o melhor equilíbrio entre interpretabilidade e descritividade dos tópicos. As compensações para modelos LDA entre o número de tópicos e as métricas calculadas (log-verossimilhança, perplexidade e coerência de tópico) são fornecidas no apêndice.

A tarefa de interpretar e rotular manualmente os vetores de tópicos de saída é uma das partes mais difíceis da modelagem de tópicos. A figura abaixo mostra alguns dos tokens retornados por dois dos vetores de tópicos e nuvens de palavras que foram geradas a partir dos títulos de receita mais ponderados para esses tópicos. O Tópico 0 pode ser claramente identificado como um tópico de pão ou massa, mas o Tópico 2 é um pouco mais ambíguo. Pode ser rotulado como 'caçarola', uma categoria genérica 'italiana' ou algo totalmente diferente. A ambigüidade nos rótulos dos vetores de tópicos aumentou com o número de tópicos incluídos no modelo. Usamos nosso melhor julgamento para atribuir os rótulos, mas consultar um especialista no assunto seria a melhor maneira de fazer isso.

Tabela mostrando a desconexão entre ingredientes crus e os títulos das receitas que eles representam.

A saída do modelo LDA são as versões completas dos vetores de tópicos mostrados acima. Esses vetores de tópicos são salvos em nosso aplicativo e calculamos a semelhança de cosseno entre cada vetor de tópicos e a lista prevista de ingredientes para categorizar a receita.

Modelo Word2Vec
Um modelo word2vec é uma rede neural que é treinada em um corpus de documentos para aprender a associação entre palavras nesse corpus. Isso significa que podemos passar um rótulo para o modelo e fazer com que ele retorne as palavras mais semelhantes a esse rótulo, o que representará um vetor de tópico. Isso nos permite criar qualquer número de rótulos rudimentares e criar vetores de tópicos que podemos usar para atribuir esses rótulos. Em vez de usar etnias, poderíamos criar vetores de tópicos para as entradas 'café da manhã', 'jantar' e 'sobremesa' para categorizar a receita de entrada para esses rótulos.

O modelo word2vec para esta tarefa foi treinado com os ingredientes e títulos da receita. Os títulos das receitas geralmente incluem etnia ou outros rótulos importantes que ajudam o modelo a aprender. Uma consequência disso é que os tokens retornados pelo modelo word2vec nem sempre são ingredientes, podem ser outros rótulos semelhantes ao input. Por exemplo, alguns dos tokens retornados para a entrada 'Greek' são 'tzatziki', 'feta' e 'Mediterrâneo'. Os tokens que não são ingredientes ainda são aceitáveis ​​para atribuir etnia à receita porque o modelo word2vec ainda terá associações com esses rótulos para outros ingredientes. 'Mediterrâneo' pode estar vinculado a ingredientes como 'grão de bico' ou 'pepino', o que ainda ajudará o modelo a identificar essa receita como 'grega'.

Assim que tivermos esses vetores de tópicos, podemos plotá-los em um gráfico Stochastic Neighbor Embedding (t-SNE) distribuído em t para visualizar como eles estão relacionados entre si. O gráfico t-SNE abaixo mostra os 10 principais tokens para cada rótulo de etnia reduzidos a um gráfico 2-D. Os gráficos T-SNE são uma maneira de visualizar dados de alta dimensão em espaço de dimensão inferior. Eles tentam manter os pontos e clusters semelhantes mais próximos e separar os diferentes. Como resultado, podemos ver que algo como a comida indiana tem um agrupamento compacto que é separado da maioria das outras culinárias, ou que os rótulos asiáticos são separados à direita, mas ainda próximos uns dos outros.

Vetores de tópicos étnicos reduzidos a um gráfico 2D para mostrar a relação entre as cozinhas. Os 5 principais tokens de cada rótulo são mostrados e alguns ingredientes se sobrepõem (por exemplo, 'arroz' no canto superior esquerdo).

Resultados

A equipe Rec² está entusiasmada com a chegada do nosso aplicativo. Nós nos propusemos a criar um aplicativo da web amigável e eficiente que permite que o público em geral aproveite o poder de nossos modelos. O aplicativo requer apenas uma das duas entradas para um usuário começar, e o tempo de inferência para exibir os resultados nunca é superior a ~ 5 segundos. Uma métrica arbitrária, mas divertida, é que enviei isso para meu avô com deficiência tecnológica, que conseguiu usar e aproveitar este aplicativo.

A eficiência e acessibilidade do aplicativo foi um dos aspectos mais desafiadores deste projeto, mas também é um dos maiores pontos fortes. Para atender às nossas métricas de velocidade, tivemos que salvar todos os nossos modelos e pré-calcular todos os dados que seriam usados. Também pudemos aproveitar algumas das funções de memorização experimentais do Streamlit. Essas funções memorizaram diferentes saídas para que, quando o usuário estiver interagindo com diferentes partes do aplicativo, não seja necessário recalcular tudo. Isso resultou na integração perfeita entre os diferentes modelos no aplicativo.

A principal fraqueza do nosso projeto é que os próprios modelos são falhos, mas ainda são introduções úteis aos recursos de aprendizado de máquina para aplicativos baseados em alimentos. O modelo de previsão de ingredientes produz em grande parte listas de ingredientes lógicas, embora conservadoras. O modelo de reconhecimento de receita ocasionalmente produz uma saída razoável, mas muitas vezes gera um conceito divertido para um novo prato que não está obviamente relacionado à imagem de entrada. Os modelos de tipo de alimento e etnia foram gerados usando técnicas não supervisionadas, que, embora não sejam ideais, dão uma amostra (*piscada*) do que um conjunto de dados com rótulos de verdade seria capaz de realizar. Esses modelos não estão prontos para informar nenhuma decisão séria sobre alimentação. No entanto, eles são apenas o ponto de partida e certamente eficazes para exploração e aprendizado. Embora os modelos sejam um ponto fraco do projeto, o back-end de nosso aplicativo permite que esses modelos sejam facilmente atualizados. Se um usuário quiser contribuir com nosso projeto, ele deve achar fácil substituir nossos modelos por um que ele mesmo treine.

Discussão

O aplicativo Rec² Recipe Exploration visa ajudar as pessoas a explorar e aprender mais sobre comida. Queríamos criar uma plataforma para gourmets e chefs explorarem receitas e ingredientes novos e favoritos. Usando nosso aplicativo, os gourmets podem explorar quais cozinhas étnicas são semelhantes entre si e possivelmente experimentar algo novo. Como alternativa, os cozinheiros domésticos podem pesquisar rapidamente suas receitas favoritas para lembrar de todos os ingredientes de que precisam, em vez de vasculhar 3 páginas de texto e anúncios de uma receita on-line.

Como o aplicativo está atualmente, há preocupações éticas mínimas. O principal ponto de preocupação é o aparente viés nos dados. Ao explorar o conjunto de dados e as descobertas dos modelos, ficou claro que as receitas em nossos conjuntos de dados favoreciam amplamente uma dieta americana. Esse viés torna difícil para os modelos diferenciar entre diferentes dietas regionais. Por exemplo, o modelo de tipo de comida tinha tópicos que representavam coisas como Cajun e comida de churrasco, mas só podia produzir uma categoria genérica 'Asiática' para representar as receitas que viu de diferentes países asiáticos. Outra preocupação ética nesse sentido é que os temas foram rotulados com base na experiência pessoal da equipe com diferentes cozinhas. Isso é importante observar porque a comida é um assunto pelo qual muitas pessoas são apaixonadas e todos têm experiências diferentes.

Se nosso aplicativo ou modelos forem usados ​​em um aplicativo comercial, podemos ter problemas de direitos autorais. Os conjuntos de dados Recipe1M+ e Epicurious foram retirados de sites públicos, mas ainda podem conter receitas ou materiais protegidos por direitos autorais. Quaisquer conclusões ou aprendizados extraídos do aplicativo ou dos modelos podem estar infringindo a propriedade intelectual do autor de uma receita que detém os direitos sobre seu conteúdo. Nosso aplicativo foi desenvolvido exclusivamente para fins acadêmicos, portanto, provavelmente estamos protegidos como uso justo (Walker, 2018).

A equipe Rec² está animada e orgulhosa de onde nosso aplicativo está hoje, mas adoraria vê-lo ir muito além! Convidamos todos os cientistas de dados apaixonados, gourmets ou chefs para nos ajudar a transformar este aplicativo em um espaço útil e divertido para explorar a comida. O código-fonte e os modelos do aplicativo estarão disponíveis em um repositório GitHub público para que as pessoas possam melhorar ou nos fornecer feedback.

A principal restrição para o aplicativo da Web é que os arquivos de modelo não podem exceder 75 MB e devem permanecer abaixo de 50 MB, pois o aplicativo é implantado diretamente do repositório GitHub por meio do Streamlit. Os modelos também devem aderir a uma lista de ingredientes definida, com um processamento correspondente e/ou mapeamento para extração de ingredientes de uma receita nativa. Embora essa lista de ingredientes possa ser editada, ela deve ser compartilhada entre os modelos de previsão de ingredientes e identificação de cozinha para manter o alinhamento. As próprias arquiteturas do modelo podem ser alteradas se apresentarem um ganho de desempenho óbvio e valioso, ou os pesos e parâmetros podem ser ajustados.

Existem alguns recursos interessantes que a equipe do Rec² gostaria de ver em nosso aplicativo, mas não teve tempo de implementar neste projeto. Deixe-nos saber se você acha que algo está faltando nesta lista.

  • Implementar o feedback do usuário em nossos modelos seria uma maneira legal de colaborar com a melhoria de nossos modelos. Esse recurso permitiria que os usuários concordassem ou discordassem dos ingredientes ou rótulos que foram previstos ou sugerissem outros adicionais para que os modelos pudessem ser treinados novamente com base nesse feedback.
  • A geração completa de receitas com quantidades de ingredientes e instruções seria uma meta incrível a ser alcançada. Isso envolveria muito mais processamento de linguagem natural para extrair quantidades e estrutura de instruções.
  • Coletando mais receitas globais para explicar o viés da dieta americana no conjunto de dados.
  • Filtros para diferentes dietas (vegetariana, Kosher, etc.) ou etnias.

Declaração de trabalho

Ambos os autores, Michael Daly e John McNally, colaboraram em conjunto para selecionar e definir os objetivos deste projeto. Eles trabalharam juntos para desenvolver a técnica de pré-processamento para limpar e preparar os conjuntos de dados da receita para o desenvolvimento do modelo. Michael Daly liderou o desenvolvimento dos modelos de reconhecimento de receitas e predição de ingredientes. John McNally liderou o desenvolvimento dos modelos de identificação do tipo de cozinha para etnia e tipo de comida. Ambos os autores compartilharam as responsabilidades de redação e edição desta postagem no blog.

Referências

Bose, Bishal. 2020. Legenda-TI: Imagem para Sequência Modelo Deep Leaning: Desenvolvimento para Implantação! Analytics Vidhya (Médio). Acessado em dezembro de 2022 emhttps:///analytics-vidhya/caption-it-image-to-sequence-deep-learning-model-development-to-deployment-7f9f04ab5fa0

“Legenda de imagem com atenção visual.” 2022. TensorFlow. Acessado em dezembro de 2022 emhttps://www.tensorflow.org/tutorials/text/image_captioning

Marín, Javier, e outros. 2019. “Recipe1M+: A Dataset for Learning Cross-Modal Embeddings for Cooking Recipes and Food Images.” Transações IEEE em Análise de Padrões e Inteligência de Máquina. Acessado em dezembro de 2022 em tpami19.pdf (mit.edu)

Walker, Adão. 2018. “Fair Use — The Exigency to Define the Law for AI Algorithms.” DataDrivenInvestor (Médio). Acessado em dezembro de 2022 emhttps://medium.datadriveninvestor.com/fair-use-and-ai-87f77721f1ea

Xu, Kevin, e outros. 2015. “Mostrar, assistir e contar: geração de legenda de imagem neural com atenção visual.” Acessado em dezembro de 2022 emhttps://arxiv.org/pdf/1502.03044.pdf

Apêndice

A.1 Relatório Suplementar

O trabalho apresentado é uma expansão de um projeto Milestone II para nosso Master of Applied Data Science na Universidade de Michigan. Esse relatório está vinculado aqui .

A.2 Desenvolvimento de previsão de ingredientes

Análise de sensibilidade para hiperparâmetros do modelo de previsão de ingredientes, ilustrando as compensações entre precisão e recall no desenvolvimento do modelo.

Além dos pesos adicionais incorporados na função de perda, o valor limite para previsões positivas foi ajustado para 0,02 para melhores resultados. Um limite inferior gera mais previsões, mas um limite superior limita as previsões àquelas com maior confiança. Com o pipeline de pré-processamento aprimorado, o limite de 0,02 leva a 2,52 previsões verdadeiras de 7,78 previsões totais na partição de teste Recipe1M+. Essas receitas têm 5,05 ingredientes verdadeiros em média, então o modelo está obtendo quase metade dos ingredientes de cada receita com o benefício de 50% a mais de palpites.

A.3 Métricas para o Modelo LDA

Verossimilhança logarítmica e coerência média de tópicos para um número variável de tópicos para Alocação de Dirichlet Latente (LDA).

A figura acima mostra as métricas de desempenho de cinco modelos LDA com diferentes números de tópicos. Os modelos de melhor desempenho terão a menor perplexidade e a maior probabilidade logarítmica e coerência de tópico. Os gráficos mostram que o modelo com 40 tópicos apresenta o melhor desempenho geral; no entanto, podemos ver um claro ponto de inflexão (à esquerda) e pular (à direita) em 20 tópicos. Isso pode sugerir que há retornos decrescentes ao adicionar mais tópicos ao modelo.