🚀 芬兰语T5-base-nl36模型
这是一个基于芬兰语的预训练T5模型,采用基于跨度的掩码语言建模(MLM)目标进行训练。T5模型最早在 这篇论文 中被提出,并在 此页面 首次发布。
⚠️ 重要提示
Hugging Face推理小部件已停用,因为该模型需要在特定下游任务上进行文本到文本的微调才能在实际中发挥作用。作为微调后的芬兰语T5模型示例,你可以查看 Finnish-NLP/t5-small-nl24-casing-punctuation-correction,该模型经过微调,可纠正芬兰语文本中缺失的大小写和标点符号。
✨ 主要特性
- 自监督预训练:在大量芬兰语数据上以自监督方式进行预训练,无需人工标注。
- 基于跨度的掩码语言建模:采用基于跨度的掩码语言建模(MLM)目标进行训练,学习芬兰语的内在表示。
- 高效架构:使用 T5 v1.1 改进和 高效架构,具有更好的下游性能。
📦 安装指南
暂未提供安装相关内容。
💻 使用示例
基础用法
from transformers import T5Tokenizer, T5ForConditionalGeneration
tokenizer = T5Tokenizer.from_pretrained("Finnish-NLP/t5-base-nl36-finnish")
model = T5ForConditionalGeneration.from_pretrained("Finnish-NLP/t5-base-nl36-finnish")
高级用法
from transformers import T5Tokenizer, TFT5ForConditionalGeneration
tokenizer = T5Tokenizer.from_pretrained("Finnish-NLP/t5-base-nl36-finnish")
model = T5ForConditionalGeneration.from_pretrained("Finnish-NLP/t5-base-nl36-finnish", from_pt=True)
📚 详细文档
模型描述
T5是一种编码器 - 解码器模型,以文本到文本的格式处理所有自然语言处理问题。
芬兰语T5是一个以自监督方式在大量芬兰语数据语料库上进行预训练的Transformer模型。这意味着它仅在原始文本上进行预训练,没有人工进行任何标注(因此可以使用大量公开可用的数据),并通过自动过程从这些文本中生成输入和输出。
更准确地说,它是使用基于跨度的掩码语言建模(MLM)目标进行预训练的。输入序列的跨度被所谓的哨兵标记(即唯一的掩码标记)掩盖,输出序列由相同的哨兵标记和实际被掩盖的标记拼接而成。通过这种方式,模型学习到芬兰语的内在表示。
与原始T5模型相比,该模型在预训练期间使用了 T5 v1.1 的改进:
- 前馈隐藏层使用GEGLU激活函数,而不是ReLU - 详见 此处
- 预训练期间关闭了Dropout(提高了质量)。微调期间应重新启用Dropout
- 仅在基于跨度的掩码语言建模(MLM)目标上进行预训练,不混合下游任务
- 嵌入层和分类器层之间不共享参数
该模型还采用了 这篇论文 中提出的“高效”T5架构。简而言之,该论文指出,与参数数量相似的其他模型架构相比,深度 - 窄化的模型架构在下游任务中表现更优。更准确地说,模型深度定义为依次堆叠的Transformer块的数量。
该模型使用 t5-efficient-base-nl36 架构的层深度,这意味着编码器和解码器都有36个Transformer层,而原始T5“基础”模型架构只有12个Transformer层。
该模型总共有8.14亿个参数。
预期用途和局限性
该模型仅以自监督方式进行预训练,不包括任何有监督训练。因此,与谷歌的原始T5模型不同,该模型必须在下游任务(如文本分类)上进行微调才能使用。
⚠️ 重要提示
你很可能需要以全fp32精度对这些T5模型进行微调,而不是混合精度。例如,你还可以从 这里 找到更多微调技巧。
局限性和偏差
该模型使用的训练数据包含大量来自互联网的未过滤内容,远非中立。因此,模型的预测可能存在偏差。这种偏差也会影响该模型的所有微调版本。
训练数据
这个芬兰语T5模型是在六个数据集的组合上进行预训练的:
原始数据集经过自动清理,以过滤掉质量不佳和非芬兰语的示例。此外,使用仅用非常干净的芬兰语文本训练的KenLM模型为所有文本计算了 困惑度 分数。这个困惑度分数可以用来确定文本中包含的芬兰语的“干净”程度。最后,将所有数据集拼接起来,并使用前90%的困惑度分数作为过滤阈值,过滤掉质量最差的10%的文本。这些清理后的数据集总共约76GB文本。
训练过程
预处理
使用WordPiece对文本进行分词,词汇表大小为32000。输入和输出是由512个连续标记组成的序列。文本不进行小写处理,因此该模型区分大小写:“finnish”和“Finnish”是不同的。
预训练
该模型在由 Google TPU Research Cloud 赞助的TPUv3 - 8虚拟机上进行了100万步的训练,批次大小为64(总共330亿个标记)。使用的优化器是AdaFactor,学习率在10000步内进行预热,恒定学习率为1e - 2,然后学习率进行逆平方根衰减(指数衰减)。
训练代码来自基于Google的Jax/Flax的 t5x框架,并且一些t5x任务定义改编自 Per的t5x工作。
评估结果
通过在两个不同的带标签芬兰语数据集 Yle News 和 Eduskunta 上对模型进行下游文本分类任务的微调来进行评估。分类微调使用的序列长度为128个标记。
当在这些数据集上进行微调时,该模型(表格中的第六行)与我们的其他T5模型及其参数数量相比,取得了以下准确率结果:
模型名称 |
模型参数 |
Yle News准确率 |
Eduskunta准确率 |
Finnish - NLP/t5 - tiny - nl6 - finnish |
3100万 |
92.80 |
69.07 |
Finnish - NLP/t5 - mini - nl8 - finnish |
7200万 |
93.89 |
71.43 |
Finnish - NLP/t5 - small - nl16 - finnish |
1.84亿 |
94.46 |
74.00 |
Finnish - NLP/t5 - small - nl24 - finnish |
2.6亿 |
94.68 |
74.90 |
Finnish - NLP/byt5 - base - finnish |
5.82亿 |
92.33 |
73.13 |
Finnish - NLP/t5 - base - nl36 - finnish |
8.14亿 |
94.40 |
75.97 |
Finnish - NLP/t5 - large - nl36 - finnish |
14.25亿 |
94.17 |
73.50 |
在相同数据集上对谷歌的多语言mT5模型进行微调,我们可以清楚地看到,我们的单语言芬兰语T5模型在芬兰语文本分类上取得了更好的结果:
模型名称 |
模型参数 |
Yle News准确率 |
Eduskunta准确率 |
google/mt5 - small |
3.01亿 |
91.51 |
64.10 |
google/mt5 - base |
5.83亿 |
92.71 |
68.40 |
🔧 技术细节
该模型使用了基于跨度的掩码语言建模(MLM)目标进行预训练,在预训练过程中采用了T5 v1.1的改进和高效架构,并且在TPUv3 - 8虚拟机上进行训练,使用AdaFactor优化器和特定的学习率策略。
📄 许可证
本项目采用Apache - 2.0许可证。
致谢
如果没有谷歌通过 TPU Research Cloud 慷慨提供的计算资源,这个项目是不可能完成的。
团队成员
如有更多详情,请随时联系我们 🤗