英文

GPT-2大型模型用于芬兰语

预训练的芬兰语GPT-2大型模型使用递进式语言模型(CLM)目标进行训练。GPT-2是在2019年引入的,并且首次在2019年发布。

注意:这个模型是774M参数的变体,与OpenAI的著名的15B参数的大型模型不同。

模型说明

芬兰语GPT-2是一个基于transformers的预训练模型,使用自监督的方式在大规模芬兰语数据上进行预训练。这意味着它仅通过原始文本进行预训练,而没有以任何方式进行人工标注(这就是为什么它可以使用大量公开可用的数据),通过自动流程从这些文本中生成输入和标签。更准确地说,它被训练来猜测句子中的下一个单词。

更准确地说,输入是一定长度的连续文本序列,目标是相同的序列,将每个标记(单词或部分单词)向右移动一个位置。模型在内部使用掩码机制,以确保令牌i的预测只使用从1到i的输入标记,而不使用未来标记。

这样,模型学习了芬兰语的内部表示,然后可以用于提取对下游任务有用的特征。然而,该模型最擅长的是根据提示生成文本。

用途和限制

您可以使用原始模型进行文本生成,或对其进行微调以适应下游任务。您可以查看Fine-tuned版本,以寻找您感兴趣的任务。

如何使用

您可以使用管道直接使用此模型进行文本生成:

>>> from transformers import pipeline
>>> generator = pipeline('text-generation', model='Finnish-NLP/gpt2-large-finnish')
>>> generator("Tekstiä tuottava tekoäly on", max_length=30, num_return_sequences=5)

[{'generated_text': 'Tekstiä tuottava tekoäly on valmis yhteistyöhön ihmisen kanssa: Tekoäly hoitaa ihmisen puolesta tekstin tuottamisen. Se myös ymmärtää, missä vaiheessa tekstiä voidaan alkaa kirjoittamaan'},
 {'generated_text': 'Tekstiä tuottava tekoäly on älykäs, mutta se ei ole vain älykkäisiin koneisiin kuuluva älykäs olento, vaan se on myös kone. Se ei'},
 {'generated_text': 'Tekstiä tuottava tekoäly on ehkä jo pian todellisuutta - se voisi tehdä myös vanhustenhoidosta nykyistä ä tuottava tekoäly on ehkä jo pian todellisuutta - se voisi tehdä'},
 {'generated_text': 'Tekstiä tuottava tekoäly on kehitetty ihmisen ja ihmisen aivoihin yhteistyössä neurotieteiden ja käyttäytymistieteen tutkijatiimin kanssa. Uusi teknologia avaa aivan uudenlaisia tutkimusi'},
 {'generated_text': 'Tekstiä tuottava tekoäly on kuin tietokone, jonka kanssa voi elää. Tekoälyn avulla voi kirjoittaa mitä tahansa, mistä tahansa ja miten paljon. Tässä'}]

以下是如何在PyTorch中使用此模型获取给定文本的特征:

from transformers import GPT2Tokenizer, GPT2Model
tokenizer = GPT2Tokenizer.from_pretrained('Finnish-NLP/gpt2-large-finnish')
model = GPT2Model.from_pretrained('Finnish-NLP/gpt2-large-finnish')
text = "Replace me by any text you'd like."
encoded_input = tokenizer(text, return_tensors='pt')
output = model(**encoded_input)

以及在TensorFlow中:

from transformers import GPT2Tokenizer, TFGPT2Model
tokenizer = GPT2Tokenizer.from_pretrained('Finnish-NLP/gpt2-large-finnish')
model = TFGPT2Model.from_pretrained('Finnish-NLP/gpt2-large-finnish', from_pt=True)
text = "Replace me by any text you'd like."
encoded_input = tokenizer(text, return_tensors='tf')
output = model(encoded_input)

限制和偏见

此模型使用的训练数据包含了大量来自互联网的未经筛选的内容,远非中立。因此,模型可能会产生带有偏见的预测。这种偏见也将影响该模型的所有经过微调的版本。

与所有语言模型一样,很难预测芬兰语GPT-2对特定提示的回应方式,可能会出现冒犯性内容而没有警告。我们建议在发布之前由人工进行内容审查或过滤,既可以对不良内容进行审查,又可以改善结果的质量。

训练数据

这个芬兰语GPT-2模型是在六个数据集的组合上进行预训练的:

原始数据集经过清洗,以过滤掉质量差和非芬兰语的示例。这些经过清洗的数据集总共约为84GB的文本。

训练过程

预处理

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

预训练

模型在TPUv3-8 VM上进行了训练,由 Google TPU Research Cloud 提供赞助,进行了640k步(略高于1个时期,批大小为64)。优化器使用的是带有学习率4e-5的AdamW,学习率热身4000步后采用余弦衰减的方式进行。

评估结果

评估使用的是 mc4_fi_cleaned 数据集的验证集,以 Perplexity 作为评估指标(分数越小越好)。从下表可以看出,该模型(表中的第一行)的性能优于较小的模型变体。

Perplexity
Finnish-NLP/gpt2-large-finnish 30.74
Finnish-NLP/gpt2-medium-finnish 34.08
Finnish-NLP/gpt2-finnish 44.19

致谢

感谢谷歌通过 TPU Research Cloud 慷慨地提供了计算资源。

团队成员

欢迎随时与我们联系以获取更多详细信息?