模型:

google/electra-large-discriminator

英文

ELECTRA:将文本编码器作为判别器而非生成器的预训练

ELECTRA 是一种用于自我监督语言表示学习的新方法。它可以使用较少的计算资源来预训练变压器网络。ELECTRA 模型被训练为区分由另一个神经网络生成的“真实”输入标记与“伪造”输入标记,类似于 GAN 的判别器。即使在小规模上,ELECTRA 在仅使用单个GPU进行训练时也能取得强大的结果。在大规模上,ELECTRA 在 SQuAD 2.0 数据集上取得了最先进的结果。

有关详细的描述和实验结果,请参阅我们的论文 ELECTRA: Pre-training Text Encoders as Discriminators Rather Than Generators

该存储库包含用于预训练 ELECTRA 的代码,包括在单个GPU上的小型 ELECTRA 模型。它还支持在后续任务上对 ELECTRA 进行微调,包括分类任务(例如 GLUE ),问答任务(例如 SQuAD )和序列标注任务(例如 text chunking )。

如何在 transformers 中使用判别器

from transformers import ElectraForPreTraining, ElectraTokenizerFast
import torch

discriminator = ElectraForPreTraining.from_pretrained("google/electra-large-discriminator")
tokenizer = ElectraTokenizerFast.from_pretrained("google/electra-large-discriminator")

sentence = "The quick brown fox jumps over the lazy dog"
fake_sentence = "The quick brown fox fake over the lazy dog"

fake_tokens = tokenizer.tokenize(fake_sentence)
fake_inputs = tokenizer.encode(fake_sentence, return_tensors="pt")
discriminator_outputs = discriminator(fake_inputs)
predictions = torch.round((torch.sign(discriminator_outputs[0]) + 1) / 2)

[print("%7s" % token, end="") for token in fake_tokens]

[print("%7s" % int(prediction), end="") for prediction in predictions.tolist()]