在我们日常生活中,选择吃什么往往是一个令人头疼的问题。有时我们需要考虑饮食偏好,有时需要考虑健康限制,有时则是想尝试新的口味。来自伦斯勒理工学院的研究团队Fnu Mohbat和Mohammed J. Zaki教授看到了这一需求,他们在2025年5月20日发表于计算语言学协会年会(ACL 2025)的研究论文《KERL: Knowledge-Enhanced Personalized Recipe Recommendation using Large Language Models》(知识增强型个性化食谱推荐系统)中,提出了一个名为KERL的统一系统,它巧妙地结合了食品知识图谱和大语言模型的优势,为用户提供个性化的食谱推荐并生成详细的制作步骤和营养信息。有兴趣深入了解的读者可以通过https://github.com/mohbattharani/KERL访问完整的代码和数据集。
一、为什么我们需要更聪明的食谱推荐系统?
想象一下,你是一个需要控制胆固醇的素食主义者,同时你喜欢使用某些特定的食材,如菠菜和黄油,但不能接受坚果类食物。当你想找到符合这些特殊要求的食谱时,传统的食谱网站可能会让你感到束手无策。你需要花费大量时间筛选,逐一检查每个食谱的成分是否符合你的需求。这正是KERL系统试图解决的核心问题。
近年来,随着大语言模型(LLM)技术的进步和海量食品数据的积累,研究人员开始尝试利用先进的人工智能技术来提升食品理解领域。许多研究已经开始使用知识图谱(Knowledge Graphs,简称KG)和大语言模型来组织食品数据和提供推荐。例如,一些研究团队构建了食品本体和知识图谱(如FoodKG),另一些则利用这些知识图谱进行个性化食品推荐,还有团队专注于利用大语言模型生成食谱和估算营养信息。
然而,Mohbat和Zaki教授注意到,现有的系统往往各自为战,没有一个统一的解决方案能够同时考虑用户的个人偏好、健康约束,并提供完整的食谱生成和营养分析。更重要的是,尽管大语言模型在多个领域取得了显著的成功,但它们容易产生幻觉和提供过时的信息。而知识图谱虽然可以提供可靠的结构化信息,但缺乏自然语言理解和生成的灵活性。
KERL系统的创新之处在于它巧妙地结合了两者的优势:利用FoodKG作为可靠的知识来源,并使用大语言模型的自然语言处理能力来理解复杂的用户需求并生成个性化的推荐内容。这就像是把一个博学多才的厨师(知识图谱)和一个善于交流的服务员(大语言模型)结合在一起,为用户提供最适合他们需求的美食体验。
二、KERL如何运作?一个由三个精专组件构成的美食智能管家
想象KERL是一个精心设计的美食管家团队,由三位专业成员组成:一位精通食谱搜索的推荐专家(KERL-Recom),一位擅长烹饪指导的厨师(KERL-Recipe),以及一位了解营养知识的营养师(KERL-Nutri)。这三位专家共同协作,为用户提供全方位的美食服务。
当用户提出一个自然语言问题,比如"给我推荐几道低蛋白质的食谱,要包含小苏打、番茄酱、青葱、肉桂粉、面粉,但不要有橙片、糯米粉、黄蛋糕粉,且胆固醇含量不超过0.07,每100克盐含量在0.14到0.26之间",KERL系统就会启动一个精密的工作流程。
首先,KERL-Recom模块会从这个问题中提取关键实体,如标签(低蛋白质)、喜好的食材(小苏打、番茄酱等)、不喜欢的食材(橙片、糯米粉等)以及营养限制(胆固醇、盐含量)。接着,它会基于这些实体构建一个SPARQL查询,从FoodKG中检索相关的子图。这些子图包含了所有可能符合条件的食谱信息,包括食谱名称、食材列表和营养信息。然后,这些信息作为上下文,连同原始问题一起输入到经过微调的大语言模型中,该模型会分析所有条件,并从中筛选出最符合用户需求的食谱。
在上面的例子中,系统可能会推荐"佩格姨妈的香蕉面包"、"带糖浆浇头的甜薯砂锅"和"新鲜杏果糖浆黄油"这三道满足所有条件的食谱。这就像是一个资深美食顾问,不仅理解你的各种复杂需求,还能在海量的食谱库中精准地找到最适合你的选择。
一旦系统选出了推荐的食谱,KERL-Recipe模块接手工作,为每道食谱生成详细的烹饪步骤。这就像是一位私人厨师,不仅告诉你应该吃什么,还教你如何一步步制作出美味的菜肴。同时,KERL-Nutri模块则为每道食谱提供详细的微量营养素信息,包括卡路里、蛋白质、脂肪、碳水化合物、纤维、钠含量等,就像是一位营养师,确保你不仅能享受美食的乐趣,还能了解它们对你健康的影响。
这三个模块共享同一个基础语言模型(Phi-3-mini),但使用不同的低秩适应(LoRA)适配器进行微调,这种设计使系统能够高效地完成不同的任务,同时保持模型的小巧灵活。
三、打造完美的美食助手:KERL的技术解析
在KERL系统的核心,使用了一种名为"知识检索增强生成"(Retrieval-Augmented Generation, RAG)的技术。这种技术就像是给大语言模型配备了一本随时可查的百科全书(知识图谱),使它能够提供更准确、更可靠的信息。
### 3.1 KERL-Recom:精准的食谱推荐专家
KERL-Recom模块的任务是理解用户的复杂查询,并从知识图谱中检索符合条件的食谱。想象它是一位精通食谱的图书管理员,能够根据你描述的各种条件,在浩如烟海的食谱库中找出最符合你需求的那几本。
首先,系统会解析用户查询中的关键实体。例如,从前面提到的查询中,它会识别出标签(如"低蛋白质")、所需食材(如"小苏打"、"番茄酱")、排除的食材(如"橙片"、"糯米粉")以及营养约束(如"胆固醇不超过0.07")。
接着,系统会根据这些实体生成一个SPARQL查询(这是一种用于查询知识图谱的专门语言,就像是图书馆的检索系统)。这个查询会从FoodKG中提取相关的子图,包含可能符合用户需求的食谱信息。
然后,系统将这些子图序列化为文本序列,连同原始查询一起作为上下文输入到经过微调的语言模型中。这个模型经过训练,能够从上下文中选择满足所有查询约束的食谱。
在训练过程中,研究团队采用了一种巧妙的方法。对于标签tj(例如"低蛋白质"),令R(tj)表示带有该标签的所有食谱集合,R+(tj)表示满足所有查询约束的正例食谱子集,R-(tj)表示剩余的食谱(不满足所有约束)。在训练时,系统会选择最多K个食谱作为上下文,其中最多K/2个正例和最多K/2个负例,这样模型就能学会从各种上下文中正确地选择满足约束的食谱。
在推理阶段,系统会遍历R(tj)中的食谱,将查询和R(tj)的子集作为上下文输入到模型中,然后组合来自多次调用的响应生成最终答案。这种方法允许系统在大规模食谱集合上进行推理,即使这些食谱的总数超过了模型的序列长度限制。
### 3.2 KERL-Recipe:创意厨师般的食谱生成
KERL-Recipe模块负责生成食谱的烹饪步骤。这就像是一位经验丰富的厨师,能够为你提供清晰、详细的烹饪指导。
这个模块可以利用任何食谱生成模型,如LLaVA-Chef或FoodMMM。但研究团队选择了Phi-3-mini作为基础模型,因为它比前代模型性能更优越。KERL-Recipe使用LoRA训练方法,这种方法减少了训练参数的数量,缩短了训练时间,同时保持了良好的生成质量。
KERL-Recipe可以根据食谱名称、食材列表或两者的组合来生成详细的烹饪步骤。例如,给定"佩格姨妈的香蕉面包"这个名称和相应的食材列表,KERL-Recipe会生成详细的步骤,从预热烤箱到最终的冷却和上桌指导。
### 3.3 KERL-Nutri:精确的营养分析专家
KERL-Nutri模块则专注于生成食谱的微量营养素信息。就像一位专业的营养师,能够告诉你每道菜的卡路里、蛋白质、脂肪、纤维等营养成分含量。
这个模块同样基于LoRA微调的Phi-3-mini模型,它可以从食谱名称、食材列表、烹饪步骤或它们的组合中生成营养信息。例如,当输入"佩格姨妈的香蕉面包"及其食材列表时,KERL-Nutri会生成一份详细的营养报告,包括卡路里、蛋白质、碳水化合物、脂肪、胆固醇、钠含量等信息。
这种营养信息的生成有助于用户更好地了解推荐食谱的健康属性,使他们能够做出更加明智的饮食选择。
四、创建强大的基准数据集:知识驱动的食谱推荐挑战
为了评估KERL系统的性能,研究团队创建了两个大规模的基准数据集,涵盖了各种复杂的查询场景。这些数据集就像是一系列精心设计的考试题,用来测试系统在各种情况下的表现。
### 4.1 个性化偏好生成
在现实生活中,人们的饮食选择受到多种因素的影响,包括个人喜好和健康限制。为了模拟这种复杂性,研究团队生成了包含两大类约束的个性化查询:食材偏好和营养约束。
食材偏好考虑了食谱应包含或不应包含的食材。例如,一个查询可能要求食谱包含菠菜和黄油,但不能包含坚果。对于每个标签tj,研究团队创建了一个食材集合I(tj),这是所有带有该标签的食谱中使用的食材。然后,他们随机采样两个互斥的子集:I+(tj)代表用户喜欢的食材,I-(tj)代表用户希望避免的食材。
营养约束则定义了对营养素的限制,格式为<营养素><限制><值>。例如,"盐含量少于0.5克"。限制可以是"少于"、"多于"或"落在定义范围内"三种之一。阈值通过在相关食谱营养素平均值周围两个标准差范围内采样随机数来确定。
通过组合这些约束,研究团队生成了各种复杂的查询,如"给我推荐低蛋白质的食谱,要包含小苏打、番茄酱、青葱、肉桂粉、面粉,但不要有橙片、糯米粉、黄蛋糕粉,且胆固醇含量不超过0.07,每100克盐含量在0.14到0.26之间"。
### 4.2 KGQA基准数据集
研究团队基于FoodKG创建了一个包含77,900个问题-答案对的大规模知识图谱问答(KGQA)基准数据集。FoodKG包含超过100万个食谱,标记有490个唯一标签,每个食谱可能有多个标签。
这些问题是基于健康相关的标签生成的,如无乳糖、素食主义者、无乳制品、无麸质、低碳水化合物等。数据集被分为80%用于训练,10%用于验证,10%用于测试。
这个基准数据集的规模相当可观:对于给定标签的食谱数量(上下文大小)从7到4,445不等,而满足所有约束的食谱(正确答案)数量从1到954不等。此外,这个数据集比现有的pFoodReq数据集(仅有6,918个问题)大约大10倍,展示了其巨大的规模和多样性。
### 4.3 营养生成基准数据集
由于缺乏标准化的微量营养素基准,研究团队从Recipe1M(因此也是FoodKG)和其他来源收集了大约500,000个食谱样本的营养信息。他们使用Recipe1M的预定义训练-测试分割,将19,000个食谱用作测试集,其余用作营养生成基准的训练集。
研究团队使用GPT-4生成了约40个模板提示,这些提示旨在从食谱的不同属性(如标题、食材、烹饪指南或它们的组合)生成营养信息。这些提示的设计使模型能够从食谱的不同方面学习营养信息。
### 4.4 食谱生成基准数据集
食谱生成基准数据集利用了Recipe1M数据集,其中包含超过100万个食谱,分为训练、测试和验证集。训练集包含720,639个食谱,而测试集使用了LLaVA-Chef中经过筛选的Recipe1M测试集,包含50,000个食谱。
这些提示旨在从给定的标题、食材列表或两者中生成食谱。例如,"详细说明制作<名称>的方法"或"使用<食材>生成一个食谱"。
五、实验结果:KERL系统的卓越表现
研究团队对KERL系统的三个模块进行了全面评估,将其与多个开源大语言模型和现有方法进行比较。结果令人印象深刻,展示了KERL在各个方面的优越性。
### 5.1 KERL-Recom评估
与开源大语言模型的比较:研究团队将KERL-Recom与多个最先进的开源大语言模型(如internLM2、Mistral、Phi-2、Llama-2、Llama-3.1和Phi-3-mini)进行了比较。结果显示,尽管internLM2和Llama-3.1在各种基准测试中表现优异,但它们都无法理解KGQA基准问题中的复杂约束。Phi-3-mini-128K的表现略好于Phi-3-mini-4K,这可能是由于其处理较长序列的能力。
KERL-Recom大幅超越所有基线模型,在F1分数上比Phi-3-mini-128K提高了56个百分点,比Llama-2-7B提高了26个百分点。这表明KERL-Recom能够更好地理解和满足用户的复杂查询需求。
不同食谱类型的影响:研究团队还评估了KERL-Recom在各种食谱类型(如无乳糖、素食、无乳制品、无麸质等)上的表现。结果显示,KERL-Recom在几乎所有类型上都明显优于其他模型。特别是,对于无乳制品食谱,只有Llama-2和KERL-Recom能够推荐正确的食谱。
KERL-Recom在大多数食谱类型上表现一致,除了无乳制品和无麸质食谱略差一些。这可能是由于这些类型的训练样本较少所致。总体而言,这些结果表明KERL-Recom能够很好地泛化到不同类型的食谱。
与pFoodReq基准的比较:研究团队还将KERL-Recom与pFoodReq(一种基于嵌入的方法)进行了比较。结果显示,KERL-Recom在F1分数上比pFoodReq高出21.7个百分点,比Llama-2-7B高出56.5个百分点。这表明基于知识增强的大语言模型方法比传统的嵌入方法更有效。
### 5.2 KERL-Recipe评估
研究团队评估了KERL-Recipe在食谱生成任务上的表现,将其与预训练的大语言模型和微调后的模型进行比较。结果显示,KERL-Recipe不仅优于其基础的Phi-3模型,而且在多个指标上表现最佳。
LLaVA-Chef(基于LLaVA)是这个任务上的最先进模型,它比预训练的LLaVA和LLaMA基线表现更好。然而,KERL-Recipe超越了LLaVA-Chef。例如,在BLEU-1指标上,LLaVA-Chef比其基础LLaVA模型提高了约7个百分点,而KERL-Recipe比Phi-3提高了约20个百分点。
此外,当提供食材信息时,LLaVA-Chef和KERL-Recipe的表现都比仅使用食谱标题时更好,这表明食材在食谱生成中起着重要作用。值得注意的是,LLaVA-Chef能够处理图像,因此可以从食物图像生成食谱,而KERL-Recipe是一个纯文本模型。
总体而言,KERL-Recipe不仅在大多数指标上表现最佳,而且它只需要训练少量参数(LoRA适配器),就能显著提升基础模型的性能。
### 5.3 KERL-Nutri评估
营养生成模块(KERL-Nutri)也是基于LoRA微调的Phi-3模型。研究团队将其与微调后的LLaVA-Chef模型在营养生成基准上进行了比较。
结果显示,KERL-Nutri明显优于其他模型。LLaVA-Chef在仅提供食谱标题时对营养估计稍好,而KERL-Nutri在食材信息中表现最佳,这是合理的,因为食材包含实际的营养成分。
从仅用烹饪指南生成营养信息的平均绝对误差略高,这可能是因为烹饪指南可能不会明确提及所有食材。总体而言,当提供完整的食谱(包括标题、食材和烹饪指南)时,KERL-Nutri的误差最低。
六、未来展望:个性化美食推荐的无限可能
KERL系统展示了结合知识图谱和大语言模型在食品推荐领域的巨大潜力。但研究团队认为,这仅仅是个开始。在未来,他们计划利用链式思考(Chain-of-Thought)推理和检索增强生成进一步提升系统性能,同时纳入食材替代、个人健康信息和文化偏好等功能。
然而,KERL系统也存在一些局限性。首先,它依赖于从FoodKG检索的食谱子图,如果知识图谱中没有符合所有约束的食谱,系统将无法推荐任何食谱。其次,系统目前不能直接建立人的健康状况与相应饮食限制之间的关系。例如,它可以推荐无糖食谱,但可能无法准确推荐适合糖尿病患者的食谱。最后,KERL-Nutri虽然能够为大多数食谱生成微量营养信息,但对于极端情况(如热量极高或极低的食谱)可能无法准确生成详细的微量营养信息。
尽管存在这些局限性,KERL系统代表了个性化食品推荐领域的重要进步。通过巧妙地结合知识图谱的可靠性和大语言模型的灵活性,它提供了一个统一的解决方案,不仅能够根据个人偏好和健康约束推荐食谱,还能生成详细的烹饪步骤和营养信息。
随着人们对健康饮食的关注不断增加,像KERL这样的系统将在帮助人们做出更明智的饮食选择方面发挥越来越重要的作用。无论是严格的饮食限制,还是简单的口味偏好,KERL都能提供个性化的推荐,使每个人都能享受到健康美味的食物。
好文章,需要你的鼓励
这项研究探索了如何通过"LLM情境调节"和"持续工作流程提示"技术来提高大型语言模型在验证化学分子式时的准确性。研究者发现,普通提示方法往往不可靠,因为LLM倾向于自动"纠正"错误而非指出它们。然而,通过精心设计的情境调节提示,研究成功引导Gemini 2.5 Pro不仅识别出文本中的错误,还发现了之前人工审阅未察觉的图像中的分子式错误。这一概念验证研究表明,即使不修改模型本身,也能通过适当的提示策略显著提高LLM在科学技术文档细节验证中的表现。
复旦大学研究团队开发的uLLSAM模型成功将多模态大语言模型(MLLMs)与分割一切模型(SAM)结合,解决了显微镜图像分析的跨域泛化难题。通过创新的视觉-语言语义对齐模块(VLSA)和语义边界正则化(SBR)技术,该模型在9个领域内数据集上提升了7.71%的分割准确度,在10个从未见过的数据集上也展现了10.08%的性能提升。这一统一框架能同时处理光学和电子显微镜图像,大大提高了生物医学图像分析的效率和准确性,为科研人员提供了强大的自动化分析工具。
斯坦福大学等机构研究团队利用强化学习训练大语言模型,使其能够优化汇编代码性能。研究构建了8,072个程序的数据集,并通过近端策略优化(PPO)训练模型生成既正确又高效的汇编代码。实验表明,训练后的Qwen2.5-Coder-7B-PPO模型实现了96.0%的测试通过率和1.47倍平均加速比,超越包括Claude-3.7-sonnet在内的所有其他模型。研究发现模型能识别编译器忽略的优化机会,如用单一指令替代整个循环,为性能敏感应用提供了有价值的优化途径。
这项研究提出了一种改进的声乐效果风格迁移方法,通过在推理时间优化过程中引入高斯先验知识,解决了传统ST-ITO方法忽视参数合理性的问题。研究团队基于DiffVox数据集构建了专业效果器参数分布模型,将风格迁移转化为最大后验概率估计问题。实验结果表明,该方法显著优于基准方法,参数均方误差降低了33%,并在主观听感测试中获得最高评分。这一创新为音频处理领域融合数据驱动和专业知识提供了新思路。