当前位置:   article > 正文

使用 T5 模型来做文本分类任务的一些总结_t5文本分类

t5文本分类

T5

paper:Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer
T5 本身是一个 Text-to-Text 模型,但其不仅仅能做传统的 text2text 任务 (如对话、QA、文本摘要等等),也能做文本分类这种任务,T5 基本可以用于所有的 NLP 任务,并且拥有很好的性能。

text2text 模型如何做 text classification?

简单来说输入就是文本句子,输出就是类别词(如 positive, negative ),当然,这可能有一个问题:模型生成的输出的单词如果不是类别词呢?但作者也在论文中说了,一个在相应数据集上训练过的 T5 模型如果在做文本分类时,模型的输出肯定是类别词,不会出现非类别词,如果模型输出是非类别词,那么很有可能就是模型训练不充分。

在训练时,以下代码即可,其中 labels 就是类别词的编码结果

outputs = model(input_ids=input_ids, attention_mask=attention_mask, labels=labels)
  • 1

推理的代码如下:

out = model.generate(input_ids=input_ids, attention_mask=attention_mask, max_length=2)
  • 1

具体如何做推理的代码可以参考:T5: classification using text2text?

优化器和调度器(optimizer and scheduler)

作者在论文中写了在训练时使用的优化器是 Adafactor,Adafactor 是专门为 Transformer 类模型所设计的,相比于 Adam 占用更少的显存,能够有效减少训练时所需的显存。

paper: Adafactor: Adaptive Learning Rates with Sublinear Memory Cost

关于如何调用 Adafactor,可以参考 HuggingFace Adafactor

可以通过以下示例使用:

Adafactor(model.parameters(), scale_parameter=False, relative_step=False, warmup_init=False, lr=1e-3)
  • 1

有人发现下面这个设置更好:

Adafactor(model.parameters(), scale_parameter=True, relative_step=True, warmup_init=True, lr=None)
  • 1

如果设置 lr=None,那么最好调度器使用 AdafactorSchedule

from transformers.optimization import Adafactor, AdafactorSchedule

optimizer = Adafactor(model.parameters(), scale_parameter=True, relative_step=True, warmup_init=True, lr=None)
lr_scheduler = AdafactorSchedule(optimizer)
  • 1
  • 2
  • 3
  • 4

使用 Adafactor 可以大大减少训练所需的显存,尤其是对于 t5-larget5-3b 这类参数量大的模型,如果数据量也比较大的话,训练时对 GPU 显存的要求比较高,对训练造成了一定困难。

当然也可以选择其他的优化器和调度器,比如 AdamW+线性衰减 等等,这个可选择的就比较多了,但正如上面所说的,Adam 类的优化器在训练时占用的显存比较多,需要足够大的显存来训练。

学习率设置

1e-4 和 3e-4 几乎适用于所有问题(classification, QA, que-gen, summ)

完整训练代码

https://github.com/friedrichor/NLP-HuggingFace-Tutorial/tree/main/text_classification/T5

Reference

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/348474
推荐阅读
相关标签
  

闽ICP备14008679号