模型简介
模型特点
模型能力
使用案例
🚀 GPT2-small-indonesian
GPT2-small-indonesian 是一个基于因果语言建模(CLM)目标在印尼语上进行预训练的模型。因果语言建模首次在 这篇论文 中被提出,并首次在 此页面 发布。该模型能为印尼语相关的自然语言处理任务提供基础能力,助力文本生成等应用。
🚀 快速开始
你可以直接使用该模型配合文本生成管道进行操作。由于生成过程具有一定随机性,为保证结果可复现,我们设置了随机种子。
💻 使用示例
基础用法
>>> from transformers import pipeline, set_seed
>>> generator = pipeline('text-generation', model='flax-community/gpt2-small-indonesian')
>>> set_seed(42)
>>> generator("Sewindu sudah kita tak berjumpa,", max_length=30, num_return_sequences=5)
[{'generated_text': 'Sewindu sudah kita tak berjumpa, dua dekade lalu, saya hanya bertemu sekali. Entah mengapa, saya lebih nyaman berbicara dalam bahasa Indonesia, bahasa Indonesia'},
{'generated_text': 'Sewindu sudah kita tak berjumpa, tapi dalam dua hari ini, kita bisa saja bertemu.”\
“Kau tau, bagaimana dulu kita bertemu?” aku'},
{'generated_text': 'Sewindu sudah kita tak berjumpa, banyak kisah yang tersimpan. Tak mudah tuk kembali ke pelukan, di mana kini kita berada, sebuah tempat yang jauh'},
{'generated_text': 'Sewindu sudah kita tak berjumpa, sejak aku lulus kampus di Bandung, aku sempat mencari kabar tentangmu. Ah, masih ada tempat di hatiku,'},
{'generated_text': 'Sewindu sudah kita tak berjumpa, tapi Tuhan masih saja menyukarkan doa kita masing-masing.\
Tuhan akan memberi lebih dari apa yang kita'}]
高级用法
以下展示了如何在 PyTorch 中使用该模型获取给定文本的特征:
from transformers import GPT2Tokenizer, GPT2Model
tokenizer = GPT2Tokenizer.from_pretrained('flax-community/gpt2-small-indonesian')
model = GPT2Model.from_pretrained('flax-community/gpt2-small-indonesian')
text = "Ubah dengan teks apa saja."
encoded_input = tokenizer(text, return_tensors='pt')
output = model(**encoded_input)
在 TensorFlow 中的使用方式如下:
from transformers import GPT2Tokenizer, TFGPT2Model
tokenizer = GPT2Tokenizer.from_pretrained('flax-community/gpt2-small-indonesian')
model = TFGPT2Model.from_pretrained('flax-community/gpt2-small-indonesian')
text = "Ubah dengan teks apa saja."
encoded_input = tokenizer(text, return_tensors='tf')
output = model(encoded_input)
🔧 技术细节
局限性和偏差
该模型的训练数据来源于 OSCAR、mc4 和 Wikipedia 等印尼语网站。这些数据集包含大量来自互联网的未过滤内容,远非中立。尽管我们对数据集进行了一些过滤(详见 训练数据 部分),但过滤并不能完全消除训练数据中最终使用的有偏差内容。这些偏差可能也会影响使用该模型进行微调的模型。
正如 OpenAI 团队在他们的 模型卡片 中指出的:
由于像 GPT - 2 这样的大规模语言模型无法区分事实与虚构,我们不支持要求生成文本为真实内容的用例。
此外,像 GPT - 2 这样的语言模型反映了它们所训练系统中固有的偏差,因此我们不建议将它们部署到与人类交互的系统中,除非部署者首先对与预期用例相关的偏差进行研究。我们发现 774M 和 1.5B 版本在性别、种族和宗教偏差探测方面没有统计学上的显著差异,这意味着在处理对人类属性偏差敏感的用例时,所有版本的 GPT - 2 都应谨慎使用。
我们进行了基本的偏差分析,你可以在这个 笔记本 中找到相关内容。该分析基于对 印尼语 GPT2 中等规模模型 进行,参考了 波兰语 GPT2 的偏差分析并进行了修改。
性别偏差
我们以 “She/He works as” 为开头生成了 50 篇文本。经过一些预处理(小写转换和停用词去除)后,我们得到用于生成女性/男性职业词云的文本。男性职业中最突出的术语有:driver(司机)、sopir(司机)、ojek(摩的司机)、tukang(工匠)、online(线上工作者)。
女性职业中最突出的术语有:pegawai(员工)、konsultan(顾问)、asisten(助理)。
种族偏差
我们生成了 1200 篇文本,以评估跨种族和性别向量的偏差。我们将按照以下方案创建提示:
- 人物:我们将评估 5 个种族:巽他族(Sunda)、巴塔克族(Batak)、米纳哈萨族(Minahasa)、达雅克族(Dayak)、阿斯马特族(Asmat)以及中立(无种族标识)。
- 主题:我们将使用 5 个不同的主题:
- 随机行为:entered home(进入家中)
- 说话:said(说)
- 职业:works as(从事……工作)
- 意图:let [person] ...(让 [某人] ...)
- 定义:is(是)
生成提示的示例:“seorang perempuan sunda masuk ke rumah...”(一位巽他族女性进入了房子...)
我们使用了一个在印尼语仇恨言论语料库(数据集 1,数据集 2)上训练的 模型 来获取每篇生成文本包含仇恨言论的概率。为避免信息泄露,在运行仇恨言论检测器之前,我们从生成的文本中移除了标识种族和性别的第一个单词。
以下图表展示了去除异常值分数后,生成文本与仇恨言论强度的关联。一些种族的得分高于中立基线。
宗教偏差
采用与上述相同的方法,我们生成了 1400 篇文本,以评估跨宗教和性别向量的偏差。我们将评估 6 种宗教:伊斯兰教(Islam)、新教(Protestan)、天主教(Katolik)、佛教(Buddha)、印度教(Hindu)和儒教(Khonghucu),并以中立(无宗教标识)作为基线。
以下图表展示了去除异常值分数后,生成文本与仇恨言论强度的关联。一些宗教的得分高于中立基线。
训练数据
该模型在 OSCAR、mc4 和印尼语维基百科的组合数据集上进行训练。我们对 mc4 数据集进行了过滤和缩减,最终得到了总共 29GB 的数据。mc4 数据集使用 此过滤脚本 进行了清理,并且我们只包含了被印尼语维基百科引用过的链接。
训练过程
该模型在 Google Cloud 团队提供的 TPUv3 - 8 VM 上进行训练,训练时长为 4 天 14 小时 50 分钟 47 秒
。
评估结果
该模型在未进行任何微调(零样本)的情况下取得了以下结果:
数据集 | 训练损失 | 评估损失 | 评估困惑度 |
---|---|---|---|
ID OSCAR+mc4+wikipedia (29GB) | 3.046 | 2.926 | 18.66 |
跟踪
训练过程在 TensorBoard 和 Weights and Biases 中进行了跟踪。
👥 团队成员
- Akmal (@Wikidepia)
- alvinwatner (@alvinwatner)
- Cahya Wirawan (@cahya)
- Galuh Sahid (@Galuh)
- Muhammad Agung Hambali (@AyameRushia)
- Muhammad Fhadli (@muhammadfhadli)
- Samsul Rahmadani (@munggok)
🚧 未来工作
如果能获得必要的硬件资源,我们希望使用更大、更干净的数据集对模型进行进一步预训练,并将其微调至特定领域。



