DeBERTaV3:通过梯度解耦嵌入共享的ELECTRA风格预训练改进DeBERTa
DeBERTa通过解耦注意力机制和增强型掩码解码器改进了BERT与RoBERTa模型。凭借这两项创新,DeBERTa在使用80GB训练数据时,在多数自然语言理解任务上超越了RoBERTa的表现。
在DeBERTa V3中,我们采用梯度解耦嵌入共享的ELECTRA风格预训练方法进一步提升了模型效率。相较于前代版本,V3在下游任务中的表现取得显著突破。技术细节详见我们的研究论文。
更多实现细节与更新请访问官方代码库。
DeBERTa V3基础版采用12层网络结构,隐藏层维度为768。主干参数仅8600万,词表包含128K个标记,嵌入层参数达9800万。本模型使用与DeBERTa V2相同的160GB数据进行训练。
自然语言理解任务微调
我们在SQuAD 2.0和MNLI任务上的开发集表现:
模型 |
词表量(K) |
主干参数(M) |
SQuAD 2.0(F1/EM) |
MNLI-m/mm(准确率) |
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/- |
使用HuggingFace 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}
}