- [’17 Nucleic Acids Research] FlavorDB: a database of flavor molecules
- [’17 CVPR] Learning Cross-modal Embeddings for Cooking Recipes and Food Images
- [’19 IJCAI] KitcheNette: Predicting and Recommending Food Ingredient Pairings using Siamese Neural Networks
- [’21 Nature Scientific Reports] FlavorGraph: a large‑scale food‑chemical graph for generating food representations and recommending food pairings
- [’24 Nature Communications] Predicting and improving complex beer flavor through machine learning
- [’24 NeurIPS] SMELLNET: A Large-scale Dataset for Real-world Smell Recognition
1. 들어가며
음식 페어링(Food Pairing)이란 어떤 음식과 잘 어울리는 재료나 음료를 함께 조합하는 것을 말합니다. 예를 들어, 소고기 스테이크는 보통 화이트 와인보다 레드 와인과 더 잘 어울린다고 알려져 있죠. 이런 궁합은 전통적으로 요리사의 경험이나 미식가의 직관에 의존해왔고, 오랜 시간 축적된 실전 감각에 기반한 영역이었습니다.
하지만 최근에는 음식 데이터를 체계적으로 분석하려는 시도가 활발해지고 있습니다. FlavorDB처럼 식재료의 화학 성분과 향미 분자를 수집해 데이터베이스화하려는 연구도 있고, 요리 레시피 데이터를 기반으로 패턴을 추출해보려는 접근도 늘고 있습니다. 이런 흐름 속에서 2019년 IJCAI에 발표된 KitcheNette 논문은 주목할 만한 시도를 보여줍니다.
이 논문은 대규모 요리 레시피 데이터셋(Recipe1M)을 기반으로, 음식 재료 쌍이 얼마나 잘 어울리는지를 점수화하고, 이를 예측하는 모델을 학습합니다. 여기서 흥미로운 점은, 별도의 화학적 성분 정보를 쓰지 않고 오직 텍스트 기반 정보만으로 음식 궁합을 학습한다는 점입니다. 단어 임베딩(word2vec)을 활용해 재료 간의 의미론적 관계를 추출하고, Siamese Neural Network 구조를 통해 재료 쌍의 페어링 점수를 예측하는 구조를 제안합니다.
이번 글에서는 KitcheNette 논문이 제안하는 전체 접근 방식과 모델 구조, 그리고 실험 결과를 정리해보며, 데이터 기반으로 음식 궁합을 예측하는 방식이 어떻게 작동하는지를 함께 살펴보겠습니다.
2. KitcheNette
먼저 KitcheNette 모델의 핵심 내용을 정리해보겠습니다. KitcheNette 모델 부분은 크게 두가지의 주요 내용으로 구성되어 있는데요. 먼저 Word2Vec 학습 부분입니다. KitcheNette은 Recipe1M 데이터셋만을 사용합니다. Recipe1M 데이터셋은 요리 이미지와 그 재료, 조리법이 매칭되어 있는 데이터셋인데요. 이번 KitcheNette에서는 텍스트 형태의 재료와 그 조리법 데이터셋 활용을 극대화하기 위한 방법을 제안합니다. 이를 위해 텍스트 데이터셋을 word2vec으로 학습하는 방법을 알아보고, 이어서 그 Architecture는 어떻게 구성했는지 살펴보겠습니다.
2-1. Word2Vec
이제 Recipe1M 데이터셋의 텍스트 부분인 각 요리별 재료와 조리법을 활용해 어떻게 모델을 학습했는지 살펴보겠습니다. 최종 모델에 텍스트 형태가 입력으로 들어가야 하는데요. 이를 위해서는 string 형태인 텍스트를 의미 기반의 벡터로 변환해주는 작업이 필요합니다. 이를 위한 다양한 방법이 있는데, 저자들은 word2vec 방식을 사용합니다.
word2vec의 핵심 컨셉은 ‘같은 문장에 있는 단어들은 서로 유사한 의미다’ 를 학습하는 겁니다. 예를 들어, “Stir the olive oil and onion in a pan over medium heat” 라는 레시피의 문장이 있었다고 가정해볼게요. 그럼 여기에 나오는 olive oil, onion 등은 벡터 공간에서 유사한 공간에 위치하도록 학습해주는거죠. 이러한 방식으로 수십만개의 레시피 문장을 word2vec 방식으로 학습하게 되면, 결과적으로는 레시피에서 같이 등장하는 횟수가 많을수록 해당 재료의 벡터들은 비슷한 공간에 위치하게 될 것입니다. 이렇게 단순히 재료를 랜덤 벡터로 매핑하여 모델을 학습하는것 보다, 재료 자체의 문맥적 의미를 학습한 뒤 모델에서 그 관계를 학습해주는게 훨씬 더 모델 성능에 도움이 됩니다.
2-2. Dataset
이렇게 word2vec을 학습해주었으면, 이제 이 재료 벡터들을 활용하여 모델을 학습해야 하는데요. 이때 모델이 학습하는 목표는 재료간의 페어링 점수입니다. 예를 들어, 소고기 스테이크와 레드 와인은 얼마나 높은 페어링 점수를 갖는지를 학습하겠다는건데요. 생각해보면 이러한 점수를 정량화 한다는게 쉽지 않습니다. 사람이 평가한다면 사람마다 서로 다른 점수를 주겠죠. 그래서 KitcheNette에서는 ‘레시피에서 동시에 등장하는 재료들은 페어링 점수가 높다’ 는 가정을 합니다. 예를 들어, 많은 레시피에서 소고기 스테이크를 만들때, 레드 와인을 같이 먹으라고 나올텐데요, 이렇게 같이 등장하는 횟수에 따라 정규화한 점수를 생성해주는거죠. 많이 등장할수록 1점으로, 같이 등장하지 않을수록 -1점으로 매핑해줍니다. 이렇게 라벨링한 데이터셋을 논문에서는 Silver Standard 라고 부릅니다.
물론 이러한 라벨링 규칙이 실제 페어링과 얼마나 유사하냐에 대해서는 논란의 여지가 있어 보입니다. 하지만 사람 전문가가 직접 라벨링을 할 수는 없으니 대안으로 선택한 방법이라고 봐야겠습니다. 논문에서는 이렇게 라벨링된 데이터셋의 예시를 보여주고 있습니다. 예를 들어 바닐라와 다른 재료들과의 점수를 보면, 베이킹 소다는 0.376점, 코코아와는 0.36점, 콩 소스와는 -0.48점을 보여주고 있습니다. 흠,, 빵 만들때를 생각해보면 바닐라와 베이킹 소다, 코코아는 잘 어울리는게 맞을것 같고, 콩 소스와는 확실히 이상한 맛일것 같긴 하죠..?
2-3. Architecture
이제 이렇게 만든 라벨링 데이터셋을 학습할 모델을 살펴보겠습니다. 핵심 내용만 보면 아래 구조를 갖고 있습니다.
![['19 IJCAI] KitcheNette: Predicting and Recommending Food Ingredient Pairings using Siamese Neural Networks 1 그림1. KitcheNette Architecture](https://ffighting.net/wp-content/uploads/2025/10/image-7-1024x461.png)
우선 하나의 MLP 네트워크로 두개의 서로 다른 재료 벡터를 입력 받습니다. 그렇게 두개의 Feature를 추출합니다. 이제 Deep Layer와 Wide Layer를 통해 서로 다른 연산 방식으로 Feature를 재구성한 뒤 최종 score를 추출하는데요.
Deep Layer는 두개의 Feature를 Concat 한 뒤 다시 MLP를 태우는 일반적인 방식입니다. 두개의 Feature 벡터로부터 비선형적인 관계를 찾아내겠다는 의도임을 알 수 있어요. 반면 Wide Layer는 두개의 Feature 벡터의 외적 (Outer Product)를 해주는 모습인데요. 굳이 Concat Feature외에 Outer Product를 추가해주는 이유는 뭘까요? 이건 각 재료 벡터의 차원별 의미를 갖고 있을거라는 가정이 추가된것으로 볼 수 있습니다. 외적 연산은 두개의 벡터의 인자별로 곱셈을 해주잖아요. 따라서 Concat 방식과 달리 두개 벡터의 차원별 연산 의미를 최대한 살리겠다는 의미임을 알 수 있습니다.
논문에서 사용한 Architecture 그림은 아래와 같습니다.
![['19 IJCAI] KitcheNette: Predicting and Recommending Food Ingredient Pairings using Siamese Neural Networks 2 그림2. KitcheNette 논문 Architecture](https://ffighting.net/wp-content/uploads/2025/10/image-8.png)
3. Experiments
이제 이렇게 제안한 모델의 비교 실험 결과를 살펴보겠습니다. 다양한 baseline 모델들을 사용하는데요. 단순한 cosine similarity 방식과, 다양한 머신러닝 모델들, 그리고 wide & deep layer가 빠진 단순한 Siamese Network와 성능 비교를 진행했습니다.
![['19 IJCAI] KitcheNette: Predicting and Recommending Food Ingredient Pairings using Siamese Neural Networks 3 그림3. 실험 결과](https://ffighting.net/wp-content/uploads/2025/10/image-9.png)
위에서 설명한 방식으로 페어링 점수 라벨링을 진행하여 얻은 약 35만개의 라벨링 데이터를 사용하여 평가를 진행하였는데요. 논문에서 정확한 비율을 설명하지는 않았지만, 약 10%씩을 validation과 test용으로 사용했을것으로 보입니다.
위 실험 결과는 크게 두가지로 나누어 생각해볼 수 있는데요. 우선 모델을 사용하여 학습을 했을때, 더 많은 복잡한 관계를 파악할 수 있는 모델일수록 성능이 좋아진다는 면에서 논문에서 제작한 페어링 점수 라벨링 데이터가 일리가 있음을 알 수 있습니다. 그리고 두 번째로 저자들이 제안한 모델의 architecture가 일반적인 머신러닝 방식들보다 페어링 점수의 복잡성을 더 잘 파악하는 능력이 있으며, 또한 저자들이 제안한 deep&wide layer 방식이 해당 문제에서 효과적이었음을 알 수 있습니다.
4. Qualitative Analysis
앞서 정량적인 실험에서는 KitcheNette가 기존에 라벨링된 재료 페어링 점수를 얼마나 잘 예측하는지를 수치적으로 평가했습니다. 하지만 이러한 평가만으로는 모델이 실제로 유의미한 페어링을 제안할 수 있는지를 충분히 확인하기 어렵습니다.
따라서 논문에서는 추가적으로 정성적인 분석(qualitative analysis)을 통해, 모델이 실제 요리 문맥에서 타당한 페어링을 제안할 수 있는지, 나아가 새로운 조합을 발견할 수 있는 가능성까지 탐색합니다. 이 장에서는 세 가지 실험을 통해 KitcheNette의 실질적인 활용 가능성을 평가합니다.
첫 번째는 기존 레시피에 등장하지 않았던 재료 조합들, 즉 unknown pair에 대해 KitcheNette가 얼마나 일관성 있게 점수를 예측하는지를 살펴봅니다. 두 번째는 KitcheNette와 FlavorDB의 재료 추천 랭킹을 비교하여 실제 요리 맥락에서 더 현실적인 결과를 도출하는지를 확인합니다. 마지막으로, KitcheNette를 활용하여 음료와 음식 간의 새로운 페어링을 제안할 수 있는지에 대한 가능성을 검토합니다.
4-1. Finding Unknown Pairings
첫 번째 정성적 분석은 페어링 점수가 존재하지 않는 재료 조합, 즉 모델이 한 번도 본 적 없는 조합에 대해 KitcheNette가 어떤 예측을 하는지를 살펴보는 실험입니다. 이 실험의 핵심 목적은 KitcheNette가 기존 학습 데이터를 기반으로 유추적 추론(analogical reasoning)을 수행할 수 있는지를 확인하는 것입니다.
실험에서는 대표적인 예로 탄산 화이트 와인 계열 세 가지 (champagne, sparkling wine, prosecco) 를 중심으로, 다양한 재료들과의 페어링 점수를 예측해봅니다. 일부 조합은 실제 레시피에서 자주 등장한 known pair이지만, 대부분은 unknown pair로 사전에 점수가 라벨링되지 않은 조합입니다.
예를 들어, champagne & orange twist는 비교적 많이 등장하는 조합이기 때문에 labeled score가 존재합니다. 반면 prosecco & lime twist나 sparkling wine & orange wedge처럼 드물게 등장하거나 거의 등장하지 않는 조합은 라벨이 없는 unknown pair입니다. 이 조합들에 대해 KitcheNette가 예측한 점수는 다음과 같은 양상을 보입니다:
![['19 IJCAI] KitcheNette: Predicting and Recommending Food Ingredient Pairings using Siamese Neural Networks 4 그림4. Finding unknown pairings](https://ffighting.net/wp-content/uploads/2025/10/image-10.png)
- champagne & orange twist: 0.33
- sparkling wine & orange twist: 0.39
- prosecco & orange twist: 0.42
- sparkling wine & orange wedge: 0.43
- prosecco & lime twist: 0.40
흥미로운 점은, 이들 모두 실제 조리법에서는 거의 등장하지 않는 조합이지만, KitcheNette는 일관되게 높은 점수(0.33~0.45 범위)를 예측했다는 것입니다. 즉, champagne & orange twist처럼 이미 잘 알려진 페어링을 기준 삼아, 유사한 재료(예: orange twist → lime twist)와 유사한 음료(예: champagne → prosecco) 사이의 새로운 조합을 유추해내는 방식으로 예측이 이루어진 것입니다.
또 다른 사례로는 onion과의 조합이 있습니다. champagne & onion은 실제 라벨이 존재하는 조합이며, -0.20이라는 낮은 점수를 갖습니다. 모델은 여기에 기반해 sparkling wine & onion, prosecco & onion 역시 각각 -0.14, -0.17로 비슷하게 낮은 점수를 예측했습니다. 이는 모델이 단순히 데이터를 외운 것이 아니라, 재료 간의 관계를 일반화해서 유추하는 능력을 가졌음을 보여줍니다.
이러한 결과는 KitcheNette가 unknown pair에 대해서도 논리적이고 의미 있는 점수를 예측할 수 있다는 가능성을 제시하며, 단순히 기존 데이터에 의존하는 것이 아니라 새로운 조합을 추천할 수 있는 능력도 지녔음을 보여줍니다.
4-2. Comparison of Food Pairing Ranking Results
두 번째 정성적 분석에서는, KitcheNette 모델이 예측한 페어링 점수들을 기반으로 특정 재료의 상위 페어링 조합(top-k pairings)을 정렬한 결과를, 기존의 대표적인 flavor database인 FlavorDB와 비교합니다. 이 비교를 통해 KitcheNette가 실제 요리 현장에서의 사용성과 얼마나 부합하는지를 확인하고자 했습니다.
실험 대상은 우리가 요리에서 자주 사용하는 대표 재료 4가지입니다: tomato, onion, pepper, cinnamon. 각 재료에 대해 KitcheNette 모델이 예측한 점수를 기준으로 상위 10개의 페어링을 정렬하고, 이를 FlavorDB가 제시하는 추천 조합과 비교했습니다.
![['19 IJCAI] KitcheNette: Predicting and Recommending Food Ingredient Pairings using Siamese Neural Networks 5 그림5. Comparison of Food Pairing Ranking Results](https://ffighting.net/wp-content/uploads/2025/10/image-11.png)
결과를 살펴보면, KitcheNette는 실제 요리 문맥에서 자주 함께 사용되는 재료들을 상위에 배치했습니다. 예를 들어, tomato의 상위 페어링으로는 lettuce, avocado, cucumber, eggplant 등이 추천되었는데, 이는 샐러드나 샌드위치, 파스타 등에서 토마토와 자연스럽게 함께 쓰이는 조합들입니다. 반면 FlavorDB는 tea, guava, grape와 같이 실험적이거나 비현실적인 조합을 제시한 경우가 많았습니다.
또한 onion의 경우, KitcheNette는 ground beef, carrot, celery, potato 등을 상위 추천했는데, 이는 수프나 볶음 요리에서 흔히 쓰이는 조합입니다. 반면 FlavorDB는 cocoa, peanut, mango 등의 재료를 제안했는데, 이는 flavor compound 상의 유사성에는 기반할 수 있지만, 실제 요리에서는 어울리지 않는 경우가 많습니다.
이러한 차이는 두 시스템의 접근 방식에서 기인합니다. FlavorDB는 화학 성분 기반의 flavor compound 공유 정도에 초점을 맞춘 반면, KitcheNette는 레시피 데이터에서 실제로 자주 함께 등장하는 조합을 기반으로 점수를 학습합니다. 즉, KitcheNette는 요리사의 실제 경험이나 관찰에 가까운 정보를 반영하고 있다고 볼 수 있습니다.
요약하자면, KitcheNette는 데이터 기반으로 훈련된 모델임에도 불구하고, FlavorDB보다 더 현실적이고 요리 친화적인 페어링 추천 결과를 보여주었습니다. 이는 향후 실사용 가능한 요리 추천 시스템이나 레시피 생성 모델의 구성에도 도움이 될 수 있는 결과입니다.
4-3. Discovering New Drink-Food Pairings
마지막 분석에서는 KitcheNette 모델이 음료와 음식 재료 간의 새로운 페어링을 얼마나 잘 제안할 수 있는지를 평가합니다. 기존에는 대부분 음식-음식 간 페어링에 초점이 맞춰졌지만, 실제 요리나 외식 환경에서는 음료(특히 술)와 음식 간의 조화도 매우 중요한 요소입니다.
이를 위해 논문에서는 레드 와인, 화이트 와인, 진(Gin), 사케(Sake) 네 가지 음료를 기준으로, 각각과 잘 어울리는 음식 재료 상위 추천 리스트를 생성했습니다. 그리고 이 결과를 전문가의 추천이 담긴 도서 《The Flavor Bible》(Page and Dornenburg, 2008) 및 《What to Drink with What You Eat》(Dornenburg and Page, 2009)와 비교했습니다.
![['19 IJCAI] KitcheNette: Predicting and Recommending Food Ingredient Pairings using Siamese Neural Networks 6 그림6. Discovering New Drink-Food Pairings](https://ffighting.net/wp-content/uploads/2025/10/image-12-1024x449.png)
예를 들어, 레드 와인과의 페어링으로 KitcheNette는 beef stock, lamb shank, pan juices, oxtail, tomato paste 등을 상위에 배치했습니다. 이는 실제로 많은 요리사들이 레드 와인과 어울린다고 평가하는 고기 재료 및 감칠맛 재료들이며, 위 책들에 소개된 추천 재료들과도 다수 일치했습니다.
반면 사케의 경우 KitcheNette는 mirin, konnyaku, dashi, miso, burdock root, sashimi 등 일본 전통 요리에서 자주 등장하는 재료들을 상위에 배치했습니다. 이는 Recipe1M 데이터셋이 서구 요리에 치우쳐 있음에도 불구하고, 사케와 잘 어울리는 동아시아 재료들을 정확히 포착해낸 사례로 주목할 만합니다.
또한 진(Gin)의 경우 orange twist, cucumber, elderflower liqueur, basil, lime juice 등, 실제 칵테일 바에서 흔히 볼 수 있는 향신료 및 시트러스 계열 재료들이 상위에 추천되었습니다.
이러한 결과는 KitcheNette가 기존 데이터 기반 학습을 통해 단순히 알려진 음식 조합을 복제하는 것을 넘어, 문화적 맥락이나 새로운 조합까지 확장 가능한 잠재력을 가지고 있음을 시사합니다. 특히 pairing label이 존재하지 않았던 unknown pair임에도 높은 점수를 부여한 경우, 기존의 전통적 추천 방식보다 더 폭넓은 활용이 가능하다는 점에서 의미가 큽니다.
5. 마치며
이번 글에서는 2019년 IJCAI에 발표된 KitcheNette 논문을 바탕으로, 음식 재료 간의 페어링 점수를 예측하고 새로운 조합을 추천하는 데이터 기반 접근 방식을 살펴보았습니다.
전통적으로 요리사의 경험에 의존하던 음식 페어링을, 대규모 요리 레시피 데이터와 심층 신경망을 활용해 모델링했다는 점에서 이 논문은 의미 있는 시도를 보여줍니다. 특히, word2vec을 활용한 재료 임베딩, Siamese Network 기반의 구조, 그리고 wide & deep 방식의 결합은 복잡한 재료 간 상호작용을 효과적으로 학습하는 데 기여했습니다.
실험 결과에서도 확인할 수 있었듯이, KitcheNette는 단순한 유사도 기반 모델보다 훨씬 더 높은 예측 성능을 보였으며, 정성적 분석에서는 실제 요리 문맥에 부합하는 합리적인 추천을 보여주었습니다. 또한 unknown pair에 대해서도 유추적 추론을 통해 일관성 있는 점수를 예측할 수 있다는 점에서, 향후 새로운 레시피 생성이나 페어링 추천 시스템으로의 확장 가능성도 충분히 기대할 수 있습니다.
물론 Silver Standard 방식의 라벨링이 완벽하지는 않으며, 전문 셰프의 평가나 화학적 분석 기반 데이터와의 융합이 추가된다면 더 정교한 모델로 발전할 수 있을 것입니다. 그럼에도 불구하고 KitcheNette는 “요리는 감이 아니라 데이터로도 가능하다”는 것을 잘 보여주는 흥미로운 사례로, 앞으로의 데이터 기반 요리 연구의 방향성을 제시하는 출발점이 될 수 있다고 생각합니다.
![['19 IJCAI] KitcheNette: Predicting and Recommending Food Ingredient Pairings using Siamese Neural Networks 7 Aragon Headshot Jongyub Seok 26](https://ffighting.net/wp-content/uploads/2025/10/Aragon-Headshot-Jongyub-Seok-26.jpg)


![['17 Nucleic Acids Research] FlavorDB: a database of flavor molecules 15 flavorDB](https://ffighting.net/wp-content/uploads/2025/10/image.png)
![['17 CVPR] Learning Cross-modal Embeddings for Cooking Recipes and Food Images 16 Im2Recipe Model](https://ffighting.net/wp-content/uploads/2025/10/image-1-1024x328.png)