英文

基于CommonGen的T5-base微调

Google's T5 CommonGen 上进行微调,用于生成常识推理。

T5的详细信息

T5模型在 Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer 中由Colin Raffel、Noam Shazeer、Adam Roberts、Katherine Lee、Sharan Narang、Michael Matena、Yanqi Zhou、Wei Li、Peter J. Liu提出。其中摘要如下:

转移学习是一种先在数据丰富的任务上进行预训练,然后在下游任务上进行微调的方法,已经成为自然语言处理(NLP)中的一种强大技术。转移学习的有效性催生了多种方法、方法论和实践。在本文中,我们通过引入一个统一的框架,将每个语言问题转换为文本到文本格式,来探索NLP的转移学习技术领域。我们的系统研究比较了预训练目标、架构、无标签数据集、转移方法和其他因素在数十个语言理解任务上的表现。通过将我们探索的见解与规模和我们的新的“巨大干净爬取语料库”相结合,我们在许多涵盖摘要、问答、文本分类等基准测试中取得了最先进的结果。为了促进未来的NLP转移学习工作,我们发布了我们的数据集、预训练模型和代码。

数据集的详细信息?

CommonGen是一个受约束的文本生成任务,与基准数据集相关联,旨在明确测试机器在生成常识推理方面的能力。给定一组常见的概念,任务是使用这些概念生成一个描述日常情景的连贯句子。

CommonGen具有挑战性,因为它本质上需要1)使用背景常识知识进行关系推理,以及2)组合泛化能力,以应用于未见过的概念组合。我们的数据集由从AMT和现有字幕语料库进行众包的组合构成,总共包含30k个概念集和50k个句子。

Dataset Split # samples
common_gen train 67389
common_gen valid 4018
common_gen test 1497

模型微调?️

训练脚本是 this awesome one 的稍作修改的版本,由 Suraj Patil 提供。

指标?

Metric Score
ROUGE-2 17.10
ROUGE-L 39.47
BLEU WIP

上述指标略有改进,与相同模型和指标在 paper 中展示的结果相比。

模型实践?

from transformers import AutoModelWithLMHead, AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("mrm8488/t5-base-finetuned-common_gen")
model = AutoModelWithLMHead.from_pretrained("mrm8488/t5-base-finetuned-common_gen")

def gen_sentence(words, max_length=32):
  input_text = words
  features = tokenizer([input_text], return_tensors='pt')

  output = model.generate(input_ids=features['input_ids'], 
               attention_mask=features['attention_mask'],
               max_length=max_length)

  return tokenizer.decode(output[0], skip_special_tokens=True)

words = "tree plant ground hole dig"

gen_sentence(words)

# output: digging a hole in the ground to plant trees

Manuel Romero/@mrm8488 创作| LinkedIn

在西班牙制作 ♥