- Epicure คือโมเดลที่ฝึก embedding 300 มิติของวัตถุดิบมาตรฐาน 1,790 รายการจากสูตรอาหาร 4.14 ล้านรายการและข้อมูลสารประกอบจาก FlavorDB
- ออกแบบมาเพื่อลดปัญหาของ คอร์ปัสที่เน้นภาษาอังกฤษ, การผสมสัญญาณเคมีกับสูตรอาหารแบบตายตัว, และคำศัพท์วัตถุดิบที่กระจัดกระจายของ FlavorGraph เดิม
- Cooc, Chem, Core ใช้โครงสร้างเดียวกันแต่เปลี่ยนเพียง สคีมาของ random walk เพื่อเปรียบเทียบน้ำหนักของการเกิดร่วมกันในสูตรกับสัญญาณทางเคมี
- embedding ทั้งสามกู้คืน ทิศทางด้านประสาทสัมผัสและโภชนาการ 27 แบบ และภูมิภาคอาหารขนาดใหญ่ 8 แห่งได้แบบเชิงเส้น และได้ปัจจัย 20 ตัวแบบไม่มีผู้สอน
- สามารถสำรวจวัตถุดิบได้ด้วย nearest neighbors และ เลขคณิตเชิงทิศทางแบบ SLERP เช่น หมุน rice ไปทางทิศ South-Asian แต่โค้ดและผลลัพธ์ที่ฝึกแล้วนั้นยังไม่เปิดเผย
เป้าหมายของ Epicure
- embedding ของวัตถุดิบ เป็นฐานสำหรับค้นหาความเข้ากันได้ของวัตถุดิบ วัตถุดิบที่คล้ายกันในแต่ละวัฒนธรรมอาหาร และตำแหน่งบนแกนด้านประสาทสัมผัสและโภชนาการ
- ความรู้ประเภทที่ว่า miso เข้ากับ mirin, dashi, sesame oil และ olive oil เข้ากับ basil, tomato, prosciutto นั้นสะสมอยู่ในคอร์ปัสสูตรอาหารจากหลายวัฒนธรรมและสัญชาตญาณของเชฟ
- นำไปใช้กับเครื่องมือช่วยเมนูและสูตรอาหาร การแนะนำจากวัตถุดิบที่มีอยู่ การสำรวจย้ายจากวัตถุดิบเมดิเตอร์เรเนียนไปสู่วัตถุดิบคู่เทียบในเอเชียตะวันออก และการสำรวจตามแกนอย่างความมัน การหมัก ความขม หรือโปรตีนสูง
- งานวิจัยเดิมต่อยอดมาจาก เครือข่ายรสชาติที่อิงเคมี และแนวทางที่อิงสูตรอาหารหรือ knowledge graph
- Ahn et al. [2011] นำเสนอเครือข่ายรสชาติและแสดงให้เห็นว่าความแตกต่างระหว่างวัฒนธรรมอาหารปรากฏในสารประกอบที่ใช้ร่วมกัน
- FlavorDB ของ Garg et al. [2017] จัดรายการโมเลกุลกลิ่นของ food entity 936 รายการ และ FooDB ขยายขอบเขตทางเคมีเป็นสารประกอบ 70,000 ชนิด
- FlavorGraph [Park et al., 2021] เป็น embedding ด้านอาหารแบบเปิดที่รวม FlavorDB กับ Recipe1M+ เพื่อสร้าง heterogeneous graph ของวัตถุดิบ 6,653 รายการและสารประกอบ 1,645 ชนิด และฝึกด้วย Metapath2Vec
- FoodKG [Haussmann et al., 2019] รวมข้อมูลสูตรอาหาร โภชนาการ และ ontology เป็น RDF knowledge graph โดยมีเป้าหมายเพื่อการแนะนำ
ข้อจำกัดของ FlavorGraph และการออกแบบของ Epicure
- การวิเคราะห์ก่อนหน้านี้พบว่า embedding 300 มิติของ FlavorGraph มี มิติการทำอาหารที่ตีความได้มากกว่า 15 มิติ รวมถึงรสชาติ เนื้อสัมผัส โภชนาการ ภูมิศาสตร์ วัฒนธรรม และการแปรรูป และการรวมคำศัพท์ที่เสริมด้วย LLM ช่วยเสริมสัญญาณส่วนใหญ่
- การ pretrain แบบตายตัวของ FlavorGraph มีข้อจำกัดอยู่ 3 ประการ
- พึ่งพา คอร์ปัสที่เน้นภาษาอังกฤษ เพียงชุดเดียว
- สัญญาณทางเคมีกับสัญญาณบริบทจากสูตรอาหารถูกหลอมรวมด้วย inductive bias แบบตายตัวหนึ่งเดียว ทำให้ปรับเป็นแกนการออกแบบได้ยาก
- โครงสร้างคำศัพท์วัตถุดิบยังคงกระจัดกระจาย โดยมีทั้งรายละเอียดวิธีเตรียมและรายการที่ไม่ใช่อาหารปะปนอยู่
- เพื่อลดข้อจำกัดเหล่านี้ Epicure จึงประกอบด้วย embedding วัตถุดิบแบบ skip-gram รุ่นพี่น้อง 3 แบบ ที่ฝึกใหม่ตั้งแต่ต้น
- รวบรวมสูตรอาหาร 4.14 ล้านรายการจาก 11 แหล่ง
- ครอบคลุมภาษาอังกฤษ จีน รัสเซีย เวียดนาม สเปน ตุรกี อินโดนีเซีย เยอรมัน และ Indian-English
- ทำ normalization จากสตริงวัตถุดิบดิบให้เป็นวัตถุดิบมาตรฐาน 1,790 รายการด้วย pipeline ที่เสริมด้วย LLM
- ทั้งสามโมเดลใช้สถาปัตยกรรมและไฮเปอร์พารามิเตอร์ร่วมกัน และต่างกันเฉพาะสคีมา random walk ที่ฟังก์ชันวัตถุประสงค์แบบ skip-gram มองเห็น
ข้อมูลและ embedding ทั้งสามแบบ
- Epicure เริ่มต้นจากกราฟ 2 ประเภท
- กราฟ NPMI วัตถุดิบ-วัตถุดิบ ประกอบด้วย 203,508 edge
- กราฟวัตถุดิบ-สารประกอบของ FlavorDB ประกอบด้วย 80,019 edge และมีโหนดสารประกอบที่ระบุประเภท 2,247 โหนดใน 15 หมวดหมู่
- Metapath2Vec ทั้ง 3 แบบอยู่คนละตำแหน่งบนสเปกตรัมระหว่างเคมีกับบริบทของสูตรอาหาร
-
Cooc
- เป็นโมเดลที่เดินเฉพาะ กราฟการเกิดร่วมกัน ของสูตรอาหาร
- โฟกัสที่สัญญาณบริบทจากการที่วัตถุดิบปรากฏร่วมกันจริงในสูตรอาหาร
-
Chem
- เป็นโมเดลที่เดินเฉพาะ metapath ของสารประกอบที่ระบุประเภท
- โฟกัสที่สัญญาณทางเคมีที่มาจากความสัมพันธ์ระหว่างวัตถุดิบกับสารประกอบ
-
Core
- ใช้ทั้งเส้นทางที่อิงสารประกอบและเส้นทางวัตถุดิบ-วัตถุดิบร่วมกัน
- ผสม walk แบบวัตถุดิบ-วัตถุดิบเข้าไปด้วยสัดส่วนที่ควบคุมได้ เพื่อผสมสัญญาณทางเคมีกับสัญญาณบริบทจากสูตรอาหาร
- องค์ประกอบนี้ทำให้สัดส่วน เคมี-vs-บริบทสูตรอาหาร ปรากฏเป็นแกนการออกแบบภายในข้อมูลนำเข้าและโครงสร้างการฝึกเดียวกัน
- ความแตกต่างของโมเดลพี่น้องทั้งสามถูกออกแบบให้เกิดจากสคีมา random walk เท่านั้น
- จึงสามารถเปรียบเทียบความแตกต่างของคุณสมบัติ embedding ว่าเป็นผลของสคีมา walk ไม่ใช่ของข้อมูลนำเข้า
-
ความหมายเชิงการทำอาหารที่กู้คืนได้จาก embedding space
- โมเดล Epicure ทั้งสามกู้คืน ทิศทางต่อเนื่องด้านประสาทสัมผัสและโภชนาการ 27 แบบ และ ภูมิภาคอาหารขนาดใหญ่ 8 แห่ง ได้แบบเชิงเส้นในการ probe แบบมีผู้สอน
- ค่าเฉลี่ย Cohen’s d ของความสามารถในการแยกกลุ่มตามวัฒนธรรมอาหารคือ 2.43/2.70/3.07 ตามลำดับ Cooc/Core/Chem
- ขอบเขตของ probe ครอบคลุม cuisine, food-group, ระดับการแปรรูป NOVA, สารอาหารหลักของ USDA และหมวดหมู่ด้านประสาทสัมผัส 19 แบบ
- การวิเคราะห์แบบไม่มีผู้สอนกู้คืน ปัจจัยที่ตีความได้ 20 ตัว ในแต่ละโมเดล
- ใช้ FastICA แบบหลาย seed ที่มีความเสถียรบน embedding ที่ทำ residualization ตาม food-group แล้ว
- แบ่งรายการในควอไทล์บนสุดของแต่ละปัจจัยด้วย GMM เพื่อให้ได้โหมดการทำอาหารที่ตั้งชื่อได้ 150–200 โหมดต่อโมเดล
- ค่า coherence เฉลี่ยของโหมด GMM สูงกว่าค่า baseline ของคู่แบบสุ่ม
- ค่า coherence เฉลี่ยของ Cooc/Core/Chem คือ 0.611/0.833/0.703
- baseline ของคู่แบบสุ่มที่สอดคล้องกันคือ 0.097/0.348/0.115
- มุมมองจากงานวิจัย embedding เดิมก็ถูกใช้ในการตรวจสอบด้วย
- มุมมองเรื่อง linear directionality ของ word2vec จาก Mikolov et al. [2013] เป็นพื้นฐานของ probe การทำอาหารแบบมีผู้สอน 27 แบบ ปัจจัย FastICA 20 ตัว และการหมุนแบบ SLERP
- ตามมุมมองเรื่อง isotropy ของ Mu et al. [2017] มีการวัด isotropy ของ embedding โดยตรงด้วย participation ratio และค่าเฉลี่ย pairwise cosine
- โมเดลพี่น้องทั้งสามอยู่ในตำแหน่งที่แตกต่างกันชัดเจนบนสเปกตรัมของ isotropy ซึ่งถูกมองว่าเป็นคุณสมบัติของสคีมา walk ไม่ใช่ของข้อมูลนำเข้า
- WEAT ของ Caliskan et al. [2017] ถูกใช้เป็นการตรวจสอบเสริมเพื่อวินิจฉัยว่าแกนความหมายที่ตั้งชื่อไว้สะท้อนอยู่ในโครงสร้างเชิงเรขาคณิตหรือไม่
การดำเนินการเพื่อการสำรวจและความเป็นไปได้ในการใช้งาน
- Epicure มอบชุดการดำเนินการเสริมกัน 2 แบบภายใน embedding space 300 มิติ เดียวกัน
-
การจับคู่ด้วย nearest neighbors
- ใช้การค้นหาเพื่อนบ้าน top-K เพื่อหารายการที่อยู่ใกล้รอบวัตถุดิบ
- ใช้การดู membership ของโหมดเพื่อสำรวจรายการที่อยู่ในโหมดการทำอาหารเฉพาะ
-
เลขคณิตเชิงทิศทางแบบ SLERP
- หมุน seed ingredient ไปทาง pole vector แบบมีผู้สอนหรือไปทาง pole ของ factor-mode ที่เกิดขึ้นเอง
- มุมต่อเนื่อง θ ใช้ interpolate ระหว่างการค้นหาที่ seed ครองอิทธิพลกับการค้นหาที่ target ครองอิทธิพล
- ตัวอย่างเช่น เมื่อนำทิศ South-Asian ไปบวกกับ rice จะเลื่อนไปทาง curry leaf, urad dal, chana dal, fenugreek seed
- ทั้งทิศทางเชิงความหมายแบบมีผู้สอนและโหมด emergent แบบไม่มีผู้สอนสามารถใช้ในการสำรวจวัตถุดิบได้
- เครื่องมือสำหรับเชฟสามารถสำรวจโดยหมุน ผสม และค้นหาวัตถุดิบไปตามทิศทางที่สอดคล้องกันทั้งด้านประสาทสัมผัส โภชนาการ และวัฒนธรรม
- ความสัมพันธ์ที่อิงเคมีกับความสัมพันธ์ที่อิงบริบทสูตรอาหารสามารถปรับได้ผ่านการเลือกโมเดลและสคีมา walk
- โค้ดและผลลัพธ์ที่ฝึกแล้ว ยังไม่ได้เปิดเผยในขณะนี้
-
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ตัวงานวิจัยน่าสนใจ แต่พาดหัวชวนให้เข้าใจผิด
ชื่อที่ดีกว่าน่าจะเป็นประมาณว่า “บีบอัดวัตถุดิบอาหารที่มนุษย์ใช้ให้เหลือองค์ประกอบตั้งต้น 1,800 รายการ”
แทบไม่มีเนื้อหาเกี่ยวกับสูตรทำอาหารจริง ๆ เช่น วิธีเตรียมหรือสัดส่วน แต่ข้อมูลประเภทที่ว่ามะเขือเทศเข้ากับเนื้อวัวได้ดีทั่วโลก ก็อาจเป็นทรัพยากรที่มีประโยชน์และน่าสนใจมากในการสร้างการจับคู่รสชาติ
แม้จะไม่ได้ครอบคลุมทุกคู่ผสมของวัตถุดิบ 1,800 รายการ แต่ก็ครอบคลุมสมุนไพร เครื่องเทศ ผัก และเนื้อสัตว์ที่ใช้กันแพร่หลายได้ดีพอสมควร การบีบอัดหนังสือเล่มนี้ก็คงทำให้ขนาดข้อความไม่ใหญ่มากนัก
ปัญหาของสูตรอาหารที่ LLM สร้างคือมันพลาด ความละเอียดอ่อนของเทคนิคการทำอาหาร ความสำเร็จมักขึ้นอยู่กับขั้นตอนเดียวหรือสัดส่วนเพียงอย่างเดียว เช่น “ไก่ทอด” มีรูปแบบนับไม่ถ้วนทั่วโลก แต่การเอาสูตรมาเฉลี่ยรวมกันไม่ได้ทำให้ได้ไก่ทอดที่อร่อย
แหล่งข้อมูล 11 แห่งครอบคลุมอาหารทั่วไปหลายชนิดก็จริง แต่แหล่งภาษาอังกฤษและภาษาจีนคิดเป็น 90% ของชุดข้อมูล แอฟริกาและโลกอาหรับก็ไม่มีอยู่ในข้อมูล ทั้งสองส่วนนี้รวมกันก็คิดเป็นราว 25% ของประชากรโลกแล้ว
การแปลคำที่ไม่ใช่ภาษาอังกฤษทั้งหมดเป็นอังกฤษด้วย AI ก็พอเข้าใจได้ในเชิงวิธีวิทยา แต่ชัดเจนว่ามีช่องให้เกิดความผิดพลาด
ถ้าต้มผิด เนื้อวัวจะเหนียว แต่กรดจากมะเขือเทศช่วยให้มันนุ่มลงอีกครั้ง
น่าสนใจ
ผมกำลังลองบีบอัดสูตรอาหารให้เป็นแผนภาพเล็ก ๆ อยู่: https://leontrolski.github.io/recipes.html
ผมนึกภาพอะไรแบบนี้มาตลอด และไม่เคยชอบเลยที่สูตรอาหารชอบเรียงวัตถุดิบเป็นรายการยาว ๆ แบบไม่แยกหมวด แล้วค่อยบอกว่า “ผสมของแห้งในชามลึก”
อยู่ช่วงหนึ่งผมคิดว่าถ้าทำสิ่งนี้ออกมาได้ดีคงทำเงินได้ แต่ตอนนี้รู้สึกว่าพอมีอินเทอร์เฟซที่ทรงพลังสักอันออกมา มันก็คงถูกลอกตามได้ง่าย
ตารางทำให้นึกถึงสูตรอาหารใน Modernist Cuisine ที่นั่นจะจัดกลุ่มวัตถุดิบตามแต่ละขั้นตอน พร้อมระบุน้ำหนัก และบางครั้งก็มีปริมาตรกับสัดส่วนด้วย
ตัวอย่าง: https://modernistcuisine.com/wp-content/uploads/2013/01/Mac-...
เผื่อเป็นข้อมูล https://publicdomainrecipes.com ทั้งเว็บมีให้ในรูปแบบไฟล์เดี่ยวขนาด 22MiB ที่ https://browse.library.kiwix.org ที่นี่: https://browse.library.kiwix.org/viewer#publicdomainrecipes....
สามารถเพิ่มสูตรอาหารได้ที่ https://github.com/ronaldl29/public-domain-recipes
ถ้าเป็น “11 แหล่งข้อมูลจาก 7 ภาษา ได้แก่ อังกฤษ จีน รัสเซีย เวียดนาม สเปน ตุรกี อินโดนีเซีย เยอรมัน และ Indian English” ก็เรียกว่าเป็น อาหารของมวลมนุษยชาติทั้งหมด ได้ยาก
เพียงแต่ว่า อาหารอิตาลี ญี่ปุ่น กรีก และเม็กซิกัน ที่ได้รับความนิยมมากทั่วโลกกลับหายไป อีกทั้งแอฟริกาและตะวันออกกลางก็ไม่มีเลย จึงยังไม่สมบูรณ์
ในงานวิจัยก็ยอมรับเรื่องนี้อย่างรวดเร็ว แต่ชัดเจนว่าไม่ใช่ชุดข้อมูลที่สมดุล
ใน [1] ดูเดโมที่เหมือนเป็นเวอร์ชันก่อนหน้าของสิ่งที่บทความนี้อธิบายไว้ได้
ผมสงสัยว่าเดโมเลือกวัตถุดิบแบบไหน เลยลองทดสอบด้วยวัตถุดิบแปลก ๆ จาก “Organum: Nature, Texture, Intensity, Purity” ของ Peter Gilmore[2] เขาเป็นที่รู้จักจากร้าน Quay ในซิดนีย์ ออสเตรเลีย
มันรู้จักวัตถุดิบค่อนข้างท้าทายอย่าง juniper berry, macadamia, เมล็ด nigella, orange flower water, lemon verbena และยังแยกความต่างระหว่างน้ำมันงากับน้ำมันงาคั่วได้ด้วย แม้ในรายการวัตถุดิบจะมีแค่ “ข้าว”, “ข้าวดำ”, “ข้าวกล้อง”, “ข้าวเหนียว” แต่พอเลือก “ข้าว” มันก็ฉลาดพอจะบอกให้ใช้ข้าวหอมมะลิหุงสุกแล้วปล่อยให้เย็นสำหรับข้าวผัด และให้แช่กับล้างข้าวบาสมาติสำหรับ pilaf
ถ้าเลือก “เนื้อแกะ” แล้วเลือกผักที่มักใช้ในการ braise ร่วมกัน มันจะเลือกชิ้นส่วนอย่างไหล่หรือหน้าแข้งให้
มันไม่รู้จักน้ำมันเมล็ดองุ่น, orzo, mangosteen, lemon myrtle และแน่นอนว่าไม่รู้จักวัตถุดิบอย่าง karkalla ที่น่าจะมีแต่ระดับ Peter Gilmore เท่านั้นที่ใช้ และเชฟส่วนใหญ่ก็คงไม่เคยได้ยินด้วยซ้ำ แต่ผมมองว่านั่นไม่ใช่ข้อจำกัดใหญ่ เพราะวัตถุดิบแบบนั้นมีความเฉพาะถิ่นหรือเฉพาะทางสูง
มันรู้จัก “เมล็ดฟักทอง” แต่ไม่รู้จัก “pumpkin” และจัดมันไว้ใต้ “squash” แทน ดังนั้นถ้าจะให้รองรับการใช้ภาษาอังกฤษแบบบริติช/อเมริกันได้ดีขึ้น ก็คงต้องมี localization เพิ่มเติม ผมคาดหวังว่ามันจะทำสลัดจาก “เนื้อแกะ” กับ “อะโวคาโด” ได้ แต่ไม่สำเร็จ พอมาดูทีหลังพบว่าในรายการวัตถุดิบไม่มีผักกาดหอมหรือ arugula มีแต่คำแบบอเมริกันว่า “salad greens” ผมลองแบบอื่นทั้งใส่วัตถุดิบสลัดชนิดอื่น ใส่ไก่ หรือแม้แต่ไม่ใส่โปรตีนเลย แต่มันก็ไม่ทำสลัด และยังคงสร้างแต่จานหรูปลอม ๆ ที่มี tomato gel (agar) กับอะโวคาโดพิวเร่ล้อมรอบก้อนโปรตีนอยู่เรื่อย ๆ
[1] https://epicure.kaikaku.ai/
[2] https://en.wikipedia.org/wiki/Peter_Gilmore_(chef)
สำหรับคนอเมริกัน มี squash หลายชนิดที่ใช้กันทั่วไป และ pumpkin ก็เป็นเพียงหนึ่งในนั้น สิ่งที่นึกออกได้ก็เช่น acorn, butternut, spaghetti และถ้าจะเอาให้ละเอียดจริง ๆ zucchini ก็รวมอยู่ด้วย
เห็นใน X/Twitter แล้วรู้สึกว่ายากจะเชื่อว่าจะบีบอัดการทำอาหารของมนุษย์ พร้อมเทคนิคทั้งหมด วัตถุดิบทั้งหมด และวิธีทำอาหารตามบริบททางวัฒนธรรม ได้เหลือแค่ 2 เมกะไบต์
มันคล้ายกับพวกที่บอกว่าเป็น “โมเดล 1GB ที่เรียกใช้เครื่องมือและเขียนโค้ดได้” พอลองใช้จริงกลับแทบใช้งานไม่ได้ ในเชิงเทคนิคมันอาจเป็นโมเดลเขียนโค้ดขนาด 1GB ก็จริง แต่ก็ไม่ใช่โมเดลที่ดีนัก
คลังข้อมูลหรือคอร์ปัสด้านอาหารที่รวมอังกฤษกับเยอรมัน แต่ตัด อิตาลีและฝรั่งเศส ออกไป เป็นอะไรที่เชื่อถือได้ยาก
สูตรอาหารที่เขียนเป็นภาษาฝรั่งเศสจริง ๆ อาจไม่มี แต่สูตร French onion soup ที่เขียนเป็นภาษาอังกฤษน่าจะมีแน่นอน
มีข้อความว่า “[Claude] ทำการจัดหมวดหมู่วัตถุดิบทั้งหมดด้วย deterministic decoding (temperature 0–0.1)” ซึ่งในบริบทนี้อาจไม่ใช่ปัญหาใหญ่ แต่ temperature ต่ำ ไม่ได้แปลว่าเป็น deterministic เสมอไป
ถ้าไม่นับความคลิกเบต ก็เป็นแนวคิดที่ค่อนข้างน่าสนใจ ผมสงสัยว่าการทำ embedding แบบนี้จะมี ช่วงเวลาแบบ word2vec สำหรับวัตถุดิบหรือโปรไฟล์รสชาติได้ไหม
อย่างที่คนอื่นชี้ไว้ตรงประเด็น มันสามารถทำใหม่โดยใช้แหล่งข้อมูลที่เป็นตัวแทนได้ดีกว่านี้ และก็น่าติดตามว่าแนวทางนี้จะได้ผลออกมาอย่างไร
ผมลองให้ Claude Code เอาข้อมูลชุดนั้นกับข้อมูลประกอบไปทำ implementation ดูแล้ว ผลออกมาค่อนข้างดี
มันอาจเหมาะกับ การแนะนำวัตถุดิบทดแทน มากกว่าการสร้างสูตรอาหาร: https://viz.roshangeorge.dev/recipe-model/