HuggingFace | 在HuggingFace中有哪几类模型?
前言
如果你不了解原始的Transformer模型,那么请查看论文: [1706.03762] Attention Is All You Need (arxiv.org)
当然这里有一份可以对照代码来解读原始Transformer模型的参考: The Annotated Transformer (harvard.edu)
在Hugging Face中,所有的模型都在这里: Hugging Face – On a mission to solve NLP, one commit at a time.
以及模型的配置可以在这里查看: Pretrained models — transformers 4.0.0 documentation (huggingface.co)
类别
所有在Hugging Face中的模型都属于下面的其中一类:
- Autoregressive models
- Autoencoding models
- Sequence-to-sequence models
- Multimodal models
- Retrieval-based models
简单介绍一下:
- Autoregressive models(自回归模型)在标准语言建模任务上进行了预训练:即在已读取所有先前token的基础上,预测下一个token。通俗理解为从左向右读取序列。它们对应于原始transformer model的decoder,虽然可以对这些模型进行微调并在许多任务上取得出色的结果,但这一类模型最佳的应用是文本生成,因为其训练方式与文本生成的方式都是从左向右。这种模型的典型示例是GPT;
- Autoencoding models(自编码模型)是通过以某种方式破坏输入的token并尝试在预训练的时候重建原始序列。从某种意义上讲,它们与原始transformer model的encoder相对应,因为它们可以在输入的时候查看整段序列。虽然可以对它们进行微调并在许多任务(例如文本生成)上取得出色的结果,但这一类模型最佳的应用是序列分类或token分类。此类模型的典型示例是BERT;
- Sequence-to-sequence models(序列到序列模型)希望将所有NLP任务都转换到sequence-to-sequence问题。可以将它们微调成许多任务,但最佳的应用是翻译,摘要和阅读理解。原始transformer模型是此类模型的一个示例(仅用于翻译)。此类模型的典型示例是T5;
- Multimodal models(多任务模型)将文本输入与其他类型的输入(例如图像)混合在一起,并且更特定于给定任务;
- Retrieval-based models笔者暂不了解。
他们的典型代表
这里简单介绍一下每一类模型的典型代表是哪些。
Autoregressive models(自回归模型)
Original GPT:
- 在Book Corpus数据集上预训练的第一个基于transformer体系结构的自回归模型
- Paper: language_understanding_paper.pdf (openai.com)
- 模型源码解析: https://huggingface.co/transformers/model_do c/gpt.html
GPT-2:
- GPT的更大更好的版本,已在WebText上进行了预训练
- Paper: Language Models are Unsupervised Multitask Learners (d4mucfpksywv.cloudfront.net)
- 模型源码解析: OpenAI GPT2 — transformers 4.0.0 documentation (huggingface.co)
CTRL:
- 笔者暂不了解该模型
- Paper: [1909.05858] CTRL: A Conditional Transformer Language Model for Controllable Generation (arxiv.org)
- 模型源码解析: CTRL — transformers 4.0.0 documentation (huggingface.co)
Transformer-XL:
- 与常规GPT模型相同,但引入了两个连续段的递归机制(类似于具有两个连续输入的常规RNN),相比于原始Transformer,Transformer-XL不会将长序列切割造成碎片化,且能记住更长序列的文本
- Paper: Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context (arxiv.org)
- 模型源码解析: Transformer XL - transformers 4.0.0 documentation
======================================================
Autoencoding models(自编码模型)
BERT:
- 通过使用随机mask来破坏输入,并配合预测两个序列是否上下文关系来进行预训练
- Paper: BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding (arxiv.org)
- 模型源码解析: BERT - transformers 4.0.0 documentation
RoBERTa:
-
与BERT相同,具有更好的预训练技巧:
# 动态mask:token在每个epoch被不同地mask
# 不使用NSP,不对序列进行截短,使用全长度序列
# 在更大的数据集上训练
# 使用BPE并将字节作为子单元,而不使用字符(由于Unicode字符) - Paper: RoBERTa: A Robustly Optimized BERT Pretraining Approach (arxiv.org)
- 模型源码解析: RoBERTa - transformers 4.0.0 documentation
DistilBERT:
- BERT的蒸馏版本
- Paper: DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter (arxiv.org)
- 模型源码解析: https:// huggingface.co/transfor mers/master/model_doc/distilbert.html
======================================================
Sequence-to-sequence models(序列到序列模型)
BART:
- 破坏的token输入到encoder中,原始正确的token输入到了decoder中(但是像常规的transformers decoder一样,具有mask以隐藏未预测的词)
-
对于encoder,在预训练任务上,将应用以下transformations的组合:
# mask随机token(如BERT)
# 随机删除token
# 用单个掩码token掩码k个token的范围
# 打乱句子
# 旋转文档以使其从特定标记开始 - Paper: BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension (arxiv.org)
- 模型源码解析: BART - transformers 4.0.0 documentation
T5:
- 将所有NLP任务转换成Sequence to Sequence任务,例如,中文翻译成英文的任务,使用T5之前的数据输入是“我喜欢跑步”,输出是“I like running”。使用T5之后数据输入变成了“把中文翻译成英文:我喜欢跑步”,输出是“I like running”
- Paper: Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer (arxiv.org)
- 模型源码解析: T5 - transformers 4.0.0 documentation
======================================================
Multimodal models(多任务模型)
MMBT:
- 在多模式设置中使用的transformers模型,结合文本和图像进行预测
- Paper: Supervised Multimodal Bitransformers for Classifying Images and Text (arxiv.org)
- 模型源码解析:无