- Epicure é um modelo que aprendeu embeddings de 300 dimensões para 1.790 ingredientes padronizados usando dados de 4,14 milhões de receitas e compostos do FlavorDB
- Foi projetado para reduzir os problemas do corpus centrado no inglês do FlavorGraph, da mistura fixa entre sinais químicos e de receitas, e do vocabulário fragmentado de ingredientes
- Cooc, Chem e Core comparam o peso da coocorrência em receitas e dos sinais químicos mudando apenas o esquema de random walk dentro da mesma estrutura
- Os três embeddings recuperam linearmente 27 direções sensoriais e nutricionais e 8 macrorregiões culinárias, além de obter 20 fatores de forma não supervisionada
- Com vizinhos mais próximos e aritmética direcional com SLERP, é possível explorar ingredientes, como rotacionar rice na direção South-Asian, mas o código e os artefatos gerados ainda não foram publicados
Objetivo do Epicure
- Embeddings de ingredientes são a base para encontrar compatibilidade entre ingredientes, ingredientes semelhantes entre diferentes culturas culinárias e sua posição em eixos sensoriais e nutricionais
- Conhecimentos como missô combinar com mirin, dashi e óleo de gergelim, e azeite de oliva combinar com manjericão, tomate e prosciutto, foram acumulados em corpora de receitas de várias culturas e na intuição de chefs
- Isso pode ser usado em ferramentas de apoio a menus e receitas, recomendações com base nos ingredientes disponíveis, exploração de equivalentes do Leste Asiático a partir de ingredientes mediterrâneos e navegação por eixos como sensação de gordura, fermentação, amargor e alto teor de proteína
- Pesquisas anteriores seguiram abordagens baseadas em redes de sabor químicas e em receitas ou grafos de conhecimento
- Ahn et al. [2011] introduziram a rede de sabor e mostraram que diferenças entre culturas aparecem nos compostos compartilhados
- O FlavorDB de Garg et al. [2017] catalogou moléculas aromáticas de 936 entidades alimentares, e o FooDB expandiu o escopo químico para 70.000 compostos
- O FlavorGraph [Park et al., 2021] é um embedding público de alimentos treinado com um grafo heterogêneo de 6.653 ingredientes e 1.645 compostos, combinando FlavorDB e Recipe1M+
- O FoodKG [Haussmann et al., 2019] integrou dados de receitas, nutrição e ontologia em um grafo de conhecimento RDF com foco em recomendação
Limitações do FlavorGraph e o desenho do Epicure
- Em análises anteriores, foram identificadas mais de 15 dimensões culinárias interpretáveis no embedding de 300 dimensões do FlavorGraph, incluindo sabor, textura, nutrição, geografia, cultura e processamento, e a integração de vocabulário reforçada por LLM pareceu fortalecer a maioria dos sinais
- O pré-treinamento fixo do FlavorGraph tinha três limitações
- Dependia de um único corpus centrado no inglês
- Os sinais químicos e os sinais de contexto de receitas eram fundidos com um único viés indutivo fixo, dificultando o controle como eixo de projeto
- O vocabulário de ingredientes permanecia fragmentado, misturando detalhes de preparo e itens não alimentares
- Para reduzir essas limitações, o Epicure foi treinado do zero como três embeddings irmãos de ingredientes com skip-gram
- Reuniu 4,14 milhões de receitas de 11 fontes
- O escopo linguístico inclui inglês, chinês, russo, vietnamita, espanhol, turco, indonésio, alemão e Indian-English
- Strings brutas de ingredientes foram normalizadas em 1.790 itens padronizados por um pipeline reforçado por LLM
- Os três modelos compartilham arquitetura e hiperparâmetros, diferindo apenas no esquema de random walk visto pela função objetivo skip-gram
Dados e os três embeddings
- O Epicure parte de dois tipos de grafo
- O grafo NPMI ingrediente-ingrediente é composto por 203.508 arestas
- O grafo ingrediente-composto do FlavorDB tem 80.019 arestas e inclui 2.247 nós de compostos tipados em 15 categorias
- As três variantes de Metapath2Vec ocupam posições diferentes no espectro entre química e contexto de receitas
-
Cooc
- É o modelo que percorre apenas o grafo de coocorrência em receitas
- Foca no sinal de contexto em que os ingredientes aparecem juntos em receitas reais
-
Chem
- É o modelo que percorre apenas metapaths de compostos tipados
- Foca no sinal químico vindo das relações entre ingredientes e compostos
-
Core
- Usa juntos caminhos baseados em compostos e caminhos ingrediente-ingrediente
- Injeta walks ingrediente-ingrediente em uma proporção de mistura controlada para combinar sinais químicos e sinais de contexto de receitas
- Essa configuração explicita o peso entre química vs. contexto de receitas como um eixo de projeto dentro do mesmo conjunto de dados e estrutura de treinamento
- As diferenças entre os três modelos irmãos foram desenhadas para surgir apenas no esquema de random walk
- Assim, as diferenças de propriedades entre os embeddings podem ser comparadas como efeito do esquema de walk, e não dos dados de entrada
-
Significados culinários recuperados no espaço de embedding
- Os três modelos Epicure recuperam linearmente, em probes supervisionados, 27 direções sensoriais e nutricionais contínuas e 8 macrorregiões culinárias
- O Cohen’s d médio para separabilidade entre cozinhas é 2,43/2,70/3,07 para Cooc/Core/Chem
- O escopo dos probes inclui cuisine, food-group, grau de processamento NOVA, macronutrientes do USDA e 19 categorias sensoriais
- A análise não supervisionada recuperou 20 fatores interpretáveis em cada modelo
- Foi aplicado FastICA estável com múltiplas seeds sobre embeddings residualizados por food-group
- Os itens do quartil superior de cada fator foram particionados com GMM, produzindo de 150 a 200 modos culinários nomeados por modelo
- A consistência média dos modos GMM foi maior que a linha de base de pares aleatórios
- A consistência média de Cooc/Core/Chem é 0,611/0,833/0,703
- As linhas de base correspondentes de pares aleatórios são 0,097/0,348/0,115
- Perspectivas de estudos anteriores sobre embeddings também foram usadas na validação
- A noção de direcionalidade linear do word2vec de Mikolov et al. [2013] fundamenta os 27 probes culinários supervisionados, os 20 fatores FastICA e a operação de rotação SLERP
- Seguindo a perspectiva de isotropia de Mu et al. [2017], a isotropia dos embeddings foi medida diretamente com participation ratio e cosine médio entre pares
- Os três modelos irmãos ocupam posições claramente diferentes no espectro de isotropia, tratado aqui como propriedade do esquema de walk, e não dos dados de entrada
- O WEAT de Caliskan et al. [2017] foi usado como validação auxiliar para diagnosticar se eixos semânticos nomeados se refletem na estrutura geométrica
Operações de exploração e possibilidades de uso
- O Epicure oferece duas famílias complementares de operações no mesmo espaço de embedding de 300 dimensões
-
Pareamento com base em vizinhos mais próximos
- A busca top-K de vizinhos encontra itens próximos ao redor de um ingrediente
- A consulta de pertencimento a modos permite explorar itens que pertencem a um modo culinário específico
-
Aritmética direcional com SLERP
- Rotaciona um ingrediente seed em direção a um vetor polo supervisionado ou a um polo de fator-modo emergente
- O ângulo contínuo θ interpola entre uma busca dominada pela seed e uma busca dominada pelo alvo
- Por exemplo, adicionar a direção South-Asian a rice o desloca para curry leaf, urad dal, chana dal e fenugreek seed
- Tanto direções semânticas supervisionadas quanto modos emergentes não supervisionados podem ser usados para explorar ingredientes
- Ferramentas para chefs podem rotacionar, combinar e buscar ingredientes ao longo de direções sensorial, nutricional e culturalmente coerentes
- Relações baseadas em química e relações baseadas em contexto de receitas podem ser ajustadas pela escolha do modelo e pelo esquema de walk
- O código e os artefatos treinados não estão públicos no momento
-
1 comentários
Comentários do Hacker News
A pesquisa em si é interessante, mas o título induz ao erro
Um título melhor seria algo como “comprimir os ingredientes usados por humanos em 1.800 elementos primitivos”
Quase não há conteúdo sobre receitas de fato, isto é, modos de preparo ou proporções, mas informação do tipo “no mundo todo, tomate combina bem com carne bovina” pode ser um recurso bem útil e interessante na hora de criar combinações de sabores
Não cobre todas as combinações dos 1.800 ingredientes, mas trata muito bem de ervas, especiarias, vegetais e carnes amplamente usados. Mesmo comprimindo esse livro, o tamanho do texto provavelmente não seria tão grande
O problema das receitas geradas por LLM é que elas deixam passar as sutilezas das técnicas de preparo. Muitas vezes o sucesso depende de uma etapa ou de uma proporção, e, por exemplo, há inúmeras variações de “frango frito” no mundo todo, mas tirar a média das receitas não produz um frango frito saboroso
As 11 fontes de dados cobrem vários pratos comuns, mas fontes em inglês e chinês representam 90% do conjunto de dados. África e mundo árabe também não estão nos dados, e só esses dois já somam cerca de 25% da população mundial
Traduzir todos os termos não ingleses para o inglês com IA também é metodologicamente compreensível, mas claramente abre margem para erros
Carne bovina pode ficar dura se for cozida de forma errada, mas a acidez do tomate a amacia novamente
Interessante
Estou tentando comprimir receitas em pequenos diagramas: https://leontrolski.github.io/recipes.html
Sempre imaginei algo assim, e sempre me incomodou quando receitas jogam os ingredientes numa enorme lista sem distinção e depois dizem “misture os ingredientes secos numa tigela funda”
Durante um tempo achei que isso poderia ser lucrativo se alguém implementasse bem, mas agora parece que, assim que surgir uma interface forte, será fácil copiá-la
A tabela me lembrou as receitas do Modernist Cuisine. Lá eles agrupam os ingredientes por etapa do processo e incluem peso, às vezes volume e até proporções
Exemplo: https://modernistcuisine.com/wp-content/uploads/2013/01/Mac-...
Só para constar, o site inteiro https://publicdomainrecipes.com está disponível como um único arquivo de 22MiB em https://browse.library.kiwix.org: https://browse.library.kiwix.org/viewer#publicdomainrecipes....
Dá para adicionar receitas em https://github.com/ronaldl29/public-domain-recipes
Se são “11 fontes em 7 idiomas, como inglês, chinês, russo, vietnamita, espanhol, turco, indonésio, alemão e inglês indiano”, fica difícil chamar isso de toda a culinária da humanidade
Ainda assim, faltam culinárias italiana, japonesa, grega e mexicana, que são muito populares no mundo, e também não há nada da África nem do Oriente Médio, então está incompleto
O próprio artigo reconhece isso rapidamente, mas definitivamente não é um conjunto de dados equilibrado
Em [1], dá para ver uma demo que parece uma iteração anterior do que este artigo descreve
Fiquei curioso sobre que ingredientes a demo escolheu, então testei alguns ingredientes menos familiares de “Organum: Nature, Texture, Intensity, Purity”, de Peter Gilmore[2]. Ele é conhecido pelo restaurante Quay, em Sydney, Austrália
Ele conhece ingredientes bem ousados como zimbro, macadâmia, sementes de nigela, água de flor de laranjeira e verbena-limão, e até diferencia óleo de gergelim de óleo de gergelim torrado. Embora a lista de ingredientes tenha apenas “arroz”, “arroz preto”, “arroz integral” e “arroz glutinoso”, ao escolher “arroz” ele é inteligente o bastante para dizer, no arroz frito, para usar arroz jasmim cozido e resfriado, e no pilaf para deixar o arroz basmati de molho e enxaguar
Se você escolhe “cordeiro” e junto seleciona vegetais comumente usados em braseado, ele sugere cortes como paleta ou músculo
Ele não conhece óleo de semente de uva, orzo, mangostão nem lemon myrtle, e naturalmente também não conhece ingredientes como karkalla, que provavelmente só alguém no nível de Peter Gilmore usaria e a maioria dos chefs nunca nem ouviu falar. Mas como esses ingredientes são muito regionais ou específicos, não acho que isso seja uma limitação tão grande
Ele conhece “semente de abóbora”, mas não “pumpkin”, tratando como “squash”, então precisa de mais localização para melhorar o uso de inglês britânico/americano. Eu esperava que ele montasse uma salada combinando “cordeiro” e “abacate”, mas falhou; depois vi que na lista de ingredientes não havia alface nem rúcula, só a expressão americana “salad greens”. Tentei também com outros ingredientes de salada, com frango, e até sem proteína, mas ele não fazia saladas: continuava gerando apenas pratos falsamente sofisticados com gel de tomate (ágar) e purê de abacate em volta de um bloco de proteína
[1] https://epicure.kaikaku.ai/
[2] https://en.wikipedia.org/wiki/Peter_Gilmore_(chef)
Do ponto de vista americano, existem vários tipos comuns de squash, e pumpkin é só um deles. Os que me vêm à cabeça são acorn, butternut e spaghetti; sendo rigoroso, zucchini também entra
Vi isso no X/Twitter, e é difícil acreditar que seja possível comprimir a culinária humana, todas as técnicas, ingredientes e modos de preparo por contexto cultural em 2 megabytes
É parecido com quando dizem “um modelo de 1 GB capaz de fazer tool calling e programar”, você testa e quase nada funciona. Tecnicamente é um modelo de programação de 1 GB, mas isso não quer dizer que seja um bom modelo
É difícil confiar em um modelo/corpus de comida que inclui inglês e alemão, mas exclui italiano e francês
Receitas realmente escritas em francês ficaram de fora, mas com certeza deve haver receitas de sopa de cebola francesa em inglês
Está escrito que “[Claude] realizou toda a classificação de ingredientes com decodificação determinística (temperature 0–0.1)”, mas, embora isso não seja um grande problema neste contexto, temperature baixa não é o mesmo que determinismo
Tirando o clickbait, é um conceito bem interessante. Fico curioso se esse tipo de embedding pode ter um momento word2vec para ingredientes ou perfis de sabor
Como outras pessoas já apontaram corretamente, dá para refazer isso com fontes de dados mais representativas, e estou curioso para ver como essa abordagem se sai
Coloquei esses dados e informações no Claude Code para implementar algo, e o resultado pareceu bem bom
Talvez funcione melhor para recomendar ingredientes substitutos do que para gerar receitas: https://viz.roshangeorge.dev/recipe-model/