英文

T5-base 在SQuAD v2上微调

在 Q&A 下游任务中,将 Google's T5 进行了 SQuAD v2 的微调。

T5 模型的详细信息

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

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

下游任务(Q&A)的详细信息 - 数据集 ? ? ❓

数据集 ID:squad_v2,来自 Huggingface/NLP

Dataset Split # samples
squad_v2 train 130319
squad_v2 valid 11873

如何从 nlp 加载它

train_dataset  = nlp.load_dataset('squad_v2', split=nlp.Split.TRAIN)
valid_dataset = nlp.load_dataset('squad_v2', split=nlp.Split.VALIDATION)

NLP Viewer 中了解更多关于此数据集和其他数据集的信息

模型微调 ?️‍

训练脚本是 this one 的稍微修改版本

结果 ?

Metric # Value
EM 77.64
F1 81.32

模型展示 ?

from transformers import AutoModelForSeq2SeqLM, AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("mrm8488/t5-base-finetuned-squadv2")
model = AutoModelForSeq2SeqLM.from_pretrained("mrm8488/t5-base-finetuned-squadv2")

def get_answer(question, context):
  input_text = "question: %s  context: %s" % (question, context)
  features = tokenizer([input_text], return_tensors='pt')

  output = model.generate(input_ids=features['input_ids'], 
               attention_mask=features['attention_mask'])
  
  return tokenizer.decode(output[0])

context = "Manuel have created RuPERTa-base with the support of HF-Transformers and Google"
question = "Who has supported Manuel?"

get_answer(question, context)

# output: 'HF-Transformers and Google'

Manuel Romero/@mrm8488 | LinkedIn 创建

西班牙制造,用 ♥ 制作