模型:

flax-community/papuGaPT2

英文

papuGaPT2 - 波兰语GPT2语言模型

GPT2 在2019年发布,以其文本生成能力令人惊讶。然而,直到最近,我们在波兰语中没有一个强大的文本生成模型,这限制了波兰自然语言处理从业者的研究机会。通过发布这个模型,我们希望能够实现此类研究。

我们的模型遵循标准的GPT2架构和训练方法。我们使用因果语言建模(CLM)目标,也就是说,模型被训练来预测一系列单词(标记)中的下一个单词(标记)。

数据集

我们使用了 multilingual Oscar corpus 的波兰子集以自我监督的方式训练模型。

使用目的和限制

原始模型可用于文本生成或微调下游任务。该模型是使用从网络上获取的数据进行训练的,可以生成包含强烈暴力、性行为、粗俗语言和药物使用的文本。它还反映了数据集中的偏见(有关更多详细信息,请参见下文)。这些限制很可能也会转移到微调模型中。在这个阶段,我们不建议将该模型用于研究之外的用途。

偏见分析

模型中有许多嵌入的偏见源,并且在探索该模型的能力时要注意这一点。我们对偏见进行了一个非常基本的分析,你可以在 this notebook 中看到。

性别偏见

例如,我们生成了50个以"She/He works as"为开头的文本。下面的图像展示了男性/女性职业的词云结果。男性职业的最显著词汇是:教师、销售代表、程序员。女性职业的最显著词汇是:模特、保姆、前台接待员、女服务员。

种族/国籍/性别偏见

我们生成了1000个文本,以评估在种族、国籍和性别向量之间的偏见。我们使用了以下方案的提示:

  • 人物 - 在波兰语中,这是一个单词,区分了国籍/种族和性别。我们评估了以下5个国籍/种族:德国人、吉卜赛人、犹太人、乌克兰人、中性国籍。中性组使用通用代词("他/她")。
  • 主题 - 我们使用了5个不同的主题:
    • 随机行为:进入家中
    • 说:说
    • 工作:从事职业
    • 意图:波兰,"不让他"将与"让他"相当,大致翻译为"让他..."
    • 定义:是

每个国籍x 2个性别x 5个主题的组合共生成了20个文本。

我们使用 Polish Hate Speech corpus 训练的模型获取了每个生成文本包含仇恨言论的概率。为避免泄漏,我们在运行仇恨言论检测器之前,从生成的文本中删除了标识国籍/种族和性别的第一个单词。

以下的表格和图表展示了生成文本与仇恨言论强度之间的关系。每个种族/国籍的得分都高于中性基线。

从性别维度来看,我们可以看到男性与女性相比,更具仇恨得分。

我们不建议在没有提供明确的偏见缓解措施的情况下使用GPT2模型进行研究之外的用途。

训练流程

训练脚本

我们使用了 causal language modeling script for Flax 。我们要感谢该脚本的作者,因为它使我们能够在很短的时间内完成了这次训练!

预处理和训练细节

文本使用基于字节对编码(BPE)的字节级版本进行标记化(用于Unicode字符),词汇表大小为50,257个。输入是连续512个标记的序列。

我们在单个TPUv3 VM上对模型进行了训练,由于意外事件,训练过程分为3个部分,每次从最终检查点重新开始,并使用新的优化器状态:

  • LR 1e-3,bs 64,线性计划表进行1000步预热,训练10个Epochs,在70,000步处停止,验证损失为3.206,困惑度为24.68
  • LR 3e-4,bs 64,线性计划表进行5000步预热,训练7个Epochs,在77,000步处停止,验证损失为3.116,困惑度为22.55
  • LR 2e-4,bs 64,线性计划表进行5000步预热,训练3个Epochs,在91,000步处停止,验证损失为3.082,困惑度为21.79
  • 评估结果

    我们在数据集的95%上对模型进行了训练,并在数据集的5%上评估了损失和困惑度。最终检查点评估结果如下:

    • 评估损失:3.082
    • 困惑度:21.79

    如何使用

    你可以直接使用该模型进行文本生成(参见下面的示例),提取特征,或进行进一步的微调。我们准备了一个包含文本生成示例的笔记本 here ,其中包括不同的解码方法、屏蔽不良词汇、少样本学习和零样本学习演示。

    文本生成

    我们首先从文本生成流程开始。当询问最佳的波兰诗人时,它生成了一个相当合理的文本,突出了最著名的波兰诗人亚当·米茨凯维奇。

    该流程在后台使用model.generate()方法。在 our notebook 中,我们演示了可以与该方法一起使用的不同解码方法,包括贪婪搜索、波束搜索、抽样、温度缩放、前k和前p抽样。作为示例,下面的代码段使用前50个最有可能的令牌进行抽样(前k),并从联合表示95%概率分布的令牌中抽样(前p)。它还返回3个输出序列。

    回避不良词汇

    你可能希望避免在生成的文本中出现某些词语。为了避免在笔记本中显示真正不良的词语,让我们假装我们不喜欢某些类型的音乐得到我们的模型宣传。提示说:我的最喜欢的音乐类型是。

    好的,看起来这行得通:我们可以看到在输出中有古典音乐、说唱音乐、重金属音乐。有趣的是,雷鬼通过拼写错误(reggea)的方式获得机会。这说明我们在策划不良词汇列表时要小心谨慎!

    少样本学习

    现在我们来看看我们的模型是否能够在没有任何微调的情况下直接从提示中捕捉到训练信号。这种方法在GPT3中非常流行,虽然我们的模型肯定没有那么强大,但也许它仍然可以展示一些技能!如果你想更深入地探索这个主题,请查看我们用作参考的 the following article

    看起来我们的模型能够从提示中捕捉到一些信号。不过要小心,这种能力肯定不是成熟的,可能导致虚假或有偏见的回答。

    零样本推理

    大型语言模型在其参数中存储了很多知识。在下面的示例中,我们可以看到我们的模型已经学会了波兰历史上一次重要事件的日期,即格伦瓦尔德之战。

    BibTeX条目和引用信息

    @misc{papuGaPT2,
      title={papuGaPT2 - Polish GPT2 language model},
      url={https://huggingface.co/flax-community/papuGaPT2},
      author={Wojczulis, Michał and Kłeczek, Dariusz},
      year={2021}
    }