papuGaPT2项目介绍
项目背景
papuGaPT2是一个基于GPT2架构的波兰语语言模型。GPT2由OpenAI在2019年发布,以其强大的文本生成能力让业界感到惊艳。然而,直到最近,波兰语还没有一个同等强大的文本生成模型,这限制了波兰自然语言处理(NLP)研究的机会。papuGaPT2的发布,旨在为波兰的NLP研究人员提供更多的研究可能。
模型架构及训练方式
papuGaPT2遵循标准的GPT2架构,使用的是因果语言建模目标。即模型被训练来预测一串单词(词元)中的下一个单词。通过这种方式,模型能够学习生成流畅自然的文本。
数据集
训练papuGaPT2所用的数据集来源于多语言的Oscar语料库中的波兰语部分。这个数据集是通过自监督的方式进行训练的。
from datasets import load_dataset
dataset = load_dataset('oscar', 'unshuffled_deduplicated_pl')
使用意图与局限性
papuGaPT2的原始模型可以用于文本生成或对下游任务进行微调。由于模型的训练数据来自网络爬取,因此生成的文本可能包含暴力、性内容、粗俗语言和毒品使用的描述。此外,模型还会反映训练数据中的偏见。因此,我们建议在研究以外的用途时要谨慎。
偏见分析
papuGaPT2中嵌入了多种偏见,尤其在性别、种族和民族等方面存在显著偏见。
性别偏见
在"她/他从事的工作是"这类提示词下,生成的文本表现出明确的性别倾向。例如,男性职业主要集中在教师、销售代表、程序员等,而女性职业则倾向于模特、护理人员、接待员、服务员等。
种族/国籍/性别偏见
针对不同的种族、国籍以及性别向量,我们生成了1000个文本来评估偏见。这些文本展示了对不同民族的更高仇恨评分,相较于中立的基线,有着明显的偏差。
训练过程
papuGaPT2在单个TPUv3虚拟机上进行训练,训练过程被分为三个阶段,每次从最终检查点开始重置,使用一个新的优化器状态。模型的训练脚本使用了Flax的因果语言建模脚本。
评估结果
模型在95%的数据集上进行训练,在5%的数据集上进行评估。最终检查点的评估结果为:损失(loss)3.082,困惑度(perplexity)21.79。
使用方法
papuGaPT2模型可直接用于文本生成、特征提取或进一步微调。我们还提供了一个笔记本,展示文本生成的不同解码方法,包括贪心搜索、束搜索、温度缩放、top-k和top-p采样。
文本生成
用户可以通过简单的提示词输入生成合理的波兰语文本。例如,输入“最大的波兰诗人是”,模型会生成有关著名波兰诗人亚当·密茨凯维奇的内容。
from transformers import pipeline, set_seed
generator = pipeline('text-generation', model='flax-community/papuGaPT2')
set_seed(42)
generator('Największym polskim poetą był')
防止不当词汇
用户可以设定禁止出现的词汇,以避免生成不当或不希望的内容。
少样本学习和零样本推理
使用少样本学习或零样本推理,模型能够在没有微调的情况下从提示中提取训练信号,展示出一定的推理能力,比如识别波兰历史事件的相关信息。
未来展望
当前阶段,我们不建议在研究范畴之外使用该模型,除非能够明确缓解模型中存在的偏见。
通过papuGaPT2的发布,波兰语NLP研究领域有望被进一步拓展,同时也呼吁在模型使用中注重对偏见的关注和缓解。