据我了解,Huggingface库实现的 RoBERTa 模型使用了BPE分词器。这是文档的链接:
RoBERTa 具有与 BERT 相同的架构,但使用字节级 BPE 作为标记器(与 GPT-2 相同)并使用不同的预训练方案。
但是,我有一个基于WordPiece标记化的自定义标记器,并且我使用了BertTokenizer。
因为我的自定义标记器与我的任务更相关,所以我不喜欢使用 BPE。
当我使用我的自定义标记器从头开始预训练 RoBERTa (RobertaForMaskedLM) 时,MLM 任务的损失比 BPE 的损失要好得多。然而,在微调方面,模型(RobertaForSequenceClassification)表现不佳。我几乎可以肯定问题不在于标记器。我想知道 RobertaForSequenceClassification 的拥抱脸库是否与我的标记器不兼容。
有关微调的详细信息:
任务:具有不平衡标签的多标签分类。
时代:20
损失:BCEWithLogitsLoss()
优化器:Adam,weight_decay_rate:0.01,lr:2e-5,correct_bias:True
F1 和 AUC 非常低,因为标签的输出概率与实际标签不符(即使阈值非常低),这意味着模型无法学习任何东西。
*
注意:使用 BPE 分词器进行预训练和微调的 RoBERTa 比使用自定义分词器进行预训练和微调的 RoBERTa 表现更好,尽管使用自定义分词器的 MLM 的损失要好于 BPE。