An Extensive Evaluation of Factual Consistency in Large Language Models for Data-to-Text Generation

本文是LLM系列文章,针对《An Extensive Evaluation of Factual Consistency in Large Language Models for Data-to-Text Generation》的翻译。

摘要

大型语言模型(LLM)在各种数据到文本生成(DTG)任务中表现出了卓越的性能。然而,对于LLM来说,在DTG中生成事实一致的文本仍然具有挑战性。尽管如此,目前的文献中仍然缺少对DTG LLM事实一致性的深入评估。本文通过对DTG LLM中事实一致性的广泛评估来解决这一差距。我们的评估涵盖了五个广泛使用的DTG数据集(E2E、ViGGo、WikiTableText、DART和WebNLG)和五个著名的LLM家族(T5、BART、OPT、BLOOM和Llama 2)。为了确保对事实一致性的全面评估,我们使用了四种最先进的自动指标,并包括基本的人工评估。我们的广泛评估揭示了关于DTG LLM事实一致性的三个关键发现。首先,Llama 2通常擅长生成事实一致的文本,尽管像T5和BART这样的较小模型可以在更大、词汇多样性更低的数据集上实现很强的事实一致性。其次,平均变化率(AROC)表明,增加模型大小(模型可训练参数的数量)通常会提高DTG中LLM的事实一致性。第三,我们观察到源引用分歧(即当引用文本在语义上与源文本分歧时)通常会降低DTG中LLM的事实一致性。

1 引言

2 相关工作

3 前言

4 实验设置

5 事实一致性评价:结果与讨论

6 来源参考分歧对事实一致性的影响

7 人类评价

Fine-tuning Language Models for Recipe Generation: A Comparative Analysis and Benchmark Study [PDF] [Copy] [Kimi] [REL] Authors: Anneketh Vij, Changhao Liu, Rahul Anil Nair, Theo Ho, Edward Shi, Ayan Bhowmick This research presents an exploration and study of the recipe generation task by fine-tuning various very small language models, with a focus on developing robust evaluation metrics and comparing across different language models the open-ended task of recipe generation. This study presents extensive experiments with multiple model architectures, ranging from T5-small (Raffel et al., 2023) and SmolLM-135M (Allal et al., 2024) to Phi-2 (Research, 2023),implementing both traditional NLP metrics and custom domain-specific evaluation metrics. Our novel evaluation framework incorporates recipe-specific metrics for assessing content quality and introduces an approach to allergen substitution. The results indicate that, while larger models generally perform better on standard metrics, the relationship between model size and recipe quality is more nuanced when considering domain-specific metrics. We find that SmolLM-360M and SmolLM-1.7B demonstrate comparable performance despite their size difference, while Phi-2 shows limitations in recipe generation despite its larger parameter count. Our comprehensive evaluation framework and allergen substitution system provide valuable insights for future work in recipe generation and broader NLG tasks that require domain expertise and safety considerations.
08-10
这篇论文《Fine-tuning Language Models for Recipe Generation: A Comparative Analysis and Benchmark Study》探讨了使用小型语言模型进行食谱生成任务的微调效果,并提出了新的评估框架和过敏原替代系统。以下是该研究的核心内容总结和相关代码示例。 --- ## 核心内容概述 1. **研究目标**: - 探索并比较不同小型语言模型在食谱生成任务上的表现。 - 开发新的领域特定评估指标,评估生成食谱的内容质量。 - 引入一个过敏原替代系统,以增强生成食谱的安全性。 2. **模型选择**: - 使用的模型包括:T5-small、SmolLM-135M、SmolLM-360M、SmolLM-1.7B 和 Phi-2。 - 所有模型都在食谱数据集上进行了微调。 3. **评估指标**: - **传统NLP指标**:BLEU、ROUGE、METEOR。 - **领域特定指标**:食材多样性、步骤逻辑性、菜系相关性等。 - **过敏原替代评估**:检查模型是否能用安全食材替代过敏原食材。 4. **主要发现**: - 较大的模型(如 Phi-2)在标准NLP指标上表现较好,但在食谱生成方面不如 SmolLM 系列模型。 - SmolLM-360M 和 SmolLM-1.7B 在生成质量和过敏原替代方面表现接近,说明模型大小并非唯一决定因素。 - 提出的评估框架为未来食谱生成和其他领域特定生成任务提供了新思路。 --- ## 示例代码:使用 HuggingFace Transformers 微调 T5 模型用于食谱生成 以下是一个使用 `transformers` 库微调 T5 模型用于食谱生成的代码示例: ```python from transformers import T5Tokenizer, T5ForConditionalGeneration, Seq2SeqTrainingArguments, Seq2SeqTrainer from datasets import load_dataset # 加载数据集(假设是JSON格式,包含"input"和"target"字段) dataset = load_dataset('json', data_files={'train': 'recipes_train.json', 'validation': 'recipes_val.json'}) # 初始化 tokenizer 和模型 tokenizer = T5Tokenizer.from_pretrained("t5-small") model = T5ForConditionalGeneration.from_pretrained("t5-small") # 数据预处理函数 def preprocess_function(examples): inputs = [f"generate recipe: {title}" for title in examples["title"]] model_inputs = tokenizer(inputs, max_length=128, truncation=True) # 设置标签 labels = tokenizer(examples["recipe"], max_length=128, truncation=True) model_inputs["labels"] = labels["input_ids"] return model_inputs # 对数据集应用预处理 tokenized_datasets = dataset.map(preprocess_function, batched=True) # 设置训练参数 training_args = Seq2SeqTrainingArguments( output_dir="t5-recipe-generation", evaluation_strategy="epoch", learning_rate=2e-5, per_device_train_batch_size=8, per_device_eval_batch_size=8, weight_decay=0.01, save_total_limit=3, num_train_epochs=3, predict_with_generate=True, fp16=True, ) # 定义 Trainer trainer = Seq2SeqTrainer( model=model, args=training_args, train_dataset=tokenized_datasets["train"], eval_dataset=tokenized_datasets["validation"], tokenizer=tokenizer, ) # 开始训练 trainer.train() ``` ### 代码解释: - **数据集加载**:使用 `datasets` 库加载本地的 JSON 食谱数据集。 - **T5 模型**:使用 HuggingFace 的 `T5ForConditionalGeneration` 来进行序列到序列的任务。 - **预处理函数**:将输入标题加上前缀 `"generate recipe:"`,并使用 tokenizer 对输入和输出文本进行编码。 - **训练参数**:设置训练轮数、学习率、批大小等。 - **Trainer**:使用 HuggingFace 提供的 `Seq2SeqTrainer` 类来封装训练过程。 --- ## 示例代码:过敏原替代逻辑(伪代码) ```python def substitute_allergen(ingredients, allergen): # 假设我们有一个替代字典 allergen_substitutes = { "milk": ["oat milk", "almond milk", "soy milk"], "nuts": ["sunflower seeds", "pumpkin seeds"], "eggs": ["chia seeds", "flax seeds"], "gluten": ["gluten-free flour", "rice flour"], } if allergen in allergen_substitutes: return [allergen_substitutes[allergen][0] if ing == allergen else ing for ing in ingredients] else: return ingredients # 示例 ingredients = ["flour", "eggs", "milk"] allergen = "eggs" new_ingredients = substitute_allergen(ingredients, allergen) print(new_ingredients) # 输出: ['flour', 'chia seeds', 'milk'] ``` ### 代码解释: - 该函数接受一个食材列表和一个过敏原名称,返回替换后的食材列表。 - 使用了一个简单的替代字典来实现替换逻辑。 - 可以扩展为更复杂的规则系统或使用语言模型生成替代建议。 --- ##
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UnknownBody

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值