DeBERTa 使用解耦的注意力和增强的掩码解码器来改进BERT和RoBERTa模型。通过这两项改进,DeBERTa在绝大多数NLU任务中优于RoBERTa,使用了80GB的训练数据。
在 DeBERTa V3 中,我们进一步改进了DeBERTa的效率,使用了梯度解耦嵌入共享的ELECTRA风格的预训练。与DeBERTa相比,我们的V3版本显著提高了模型在下游任务中的性能。您可以在我们的 paper 中找到有关新模型的更多技术细节。
请查看 official repository 以获取更多实现细节和更新。
DeBERTa V3基础模型有12层和隐藏大小为768。它只有86M的主干参数,并且词汇表包含128K个标记,嵌入层中引入了98M个参数。该模型使用160GB的数据进行训练,与DeBERTa V2相同。
在NLU任务上微调我们提出了SQuAD 2.0和MNLI任务的开发结果。
Model | Vocabulary(K) | Backbone #Params(M) | SQuAD 2.0(F1/EM) | MNLI-m/mm(ACC) |
---|---|---|---|---|
RoBERTa-base | 50 | 86 | 83.7/80.5 | 87.6/- |
XLNet-base | 32 | 92 | -/80.2 | 86.8/- |
ELECTRA-base | 30 | 86 | -/80.5 | 88.8/ |
DeBERTa-base | 50 | 100 | 86.2/83.1 | 88.8/88.5 |
DeBERTa-v3-base | 128 | 86 | 88.4/85.4 | 90.6/90.7 |
DeBERTa-v3-base + SiFT | 128 | 86 | -/- | 91.0/- |
我们提出了SQuAD 1.1/2.0和MNLI任务的开发结果。
使用HF transformers进行微调#!/bin/bash cd transformers/examples/pytorch/text-classification/ pip install datasets export TASK_NAME=mnli output_dir="ds_results" num_gpus=8 batch_size=8 python -m torch.distributed.launch --nproc_per_node=${num_gpus} \ run_glue.py \ --model_name_or_path microsoft/deberta-v3-base \ --task_name $TASK_NAME \ --do_train \ --do_eval \ --evaluation_strategy steps \ --max_seq_length 256 \ --warmup_steps 500 \ --per_device_train_batch_size ${batch_size} \ --learning_rate 2e-5 \ --num_train_epochs 3 \ --output_dir $output_dir \ --overwrite_output_dir \ --logging_steps 1000 \ --logging_dir $output_dir
如果您发现DeBERTa对您的工作有用,请引用以下论文:
@misc{he2021debertav3, title={DeBERTaV3: Improving DeBERTa using ELECTRA-Style Pre-Training with Gradient-Disentangled Embedding Sharing}, author={Pengcheng He and Jianfeng Gao and Weizhu Chen}, year={2021}, eprint={2111.09543}, archivePrefix={arXiv}, primaryClass={cs.CL} }
@inproceedings{ he2021deberta, title={DEBERTA: DECODING-ENHANCED BERT WITH DISENTANGLED ATTENTION}, author={Pengcheng He and Xiaodong Liu and Jianfeng Gao and Weizhu Chen}, booktitle={International Conference on Learning Representations}, year={2021}, url={https://openreview.net/forum?id=XPZIaotutsD} }