微调 GPT2 用于生成式问答

问题描述 投票:0回答:2

我正在尝试微调 gpt2 以实现生成式问答任务。

基本上我的数据格式类似于:

背景:马特今天撞坏了他的车。 问:马特这一天过得怎么样? 答案:不好

我正在查看 Huggingface 文档,以了解如何在自定义数据集上微调 GPT2,并且我确实在此地址找到了有关微调的说明: https://github.com/huggingface/transformers/tree/main/examples/pytorch/language-modeling

问题在于,他们没有提供任何关于如何准备数据以便模型可以从中学习的指导。他们提供了可用的不同数据集,但没有一个格式适合我的任务。

如果有更多经验的人可以帮助我,我将非常感激。

祝你有美好的一天!

machine-learning gpt-2
2个回答
11
投票

您现在的任务不明确,可能是以下任何一个:

  • 通过分类进行 QnA(答案是明确的)
  • 通过提取进行 QnA(答案在文中)
  • 通过语言建模进行 QnA(答案可以是任何内容)

分类


如果所有示例都有

Answer: X
,其中
X
是分类的(即始终“好”、“坏”等...),则可以进行分类。

在此设置中,您将拥有文本标签对:

文字

Context: Matt wrecked his car today.

Question: How was Matt's day?

标签

Bad

对于分类,您可能最好只微调 BERT 风格的模型(例如 RoBERTa)。

提取


如果所有示例都有

Answer: X
,其中
X
是文本中的一个单词(或连续单词)(例如),那么最好使用 BERT 进行 SQuAD 式微调风格的模型。在此设置中,您的输入(基本上)是
text, start_pos, end_pos
三元组:

文字

Context: In early 2012, NFL Commissioner Roger Goodell stated that the league planned to make the 50th Super Bowl "spectacular" and that it would be "an important game for us as a league".

Question: Who was the NFL Commissioner in early 2012?

起始位置、结束位置

6, 8

注意:令牌课程位置的开始/结束位置值,因此这些值将取决于您如何对输入进行令牌化

在此设置中,您最好使用 BERT 风格的模型。事实上,huggingface hub 上已经有了在 SQuAD(和类似数据集) 上训练的模型。他们应该已经擅长这些开箱即用的任务(但您始终可以在此基础上进行微调)。

语言建模


如果你所有的例子都有

Answer: X
,其中
X
基本上可以是任何东西(它不需要包含在文本中,并且不是分类的),那么你需要进行语言建模。

在此设置中,您必须使用 GPT 样式模型,并且您的输入将是整个文本:

Context: Matt wrecked his car today.

Question: How was Matt's day?

Answer: Bad

不需要标签,因为文本本身就是标签(我们要求模型为每个单词预测下一个单词)。像 GPT-3 这样的大型模型应该擅长这些任务,无需任何微调(如果你给它正确的提示+示例),但当然,这些是在 API 后面访问的。 https://cohere.com 还拥有非常强大的法学硕士,还允许您微调模型(通过语言建模),因此您不需要自己运行任何代码。不确定通过微调 GPT-2 这样的较小模型可以获得多少里程。如果这个项目是为了学习,那么是的,一定要继续微调 GPT-2 模型!但如果性能是关键,我强烈建议使用像 https://cohere.com 这样的解决方案,它开箱即用。


-1
投票

微调 GPT ##2

我正在做与你的任务类似的事情,我认为使用 SQUAD 格式进行微调更好

© www.soinside.com 2019 - 2024. All rights reserved.