外观
迁移学习
迁移学习有关概念
预训练模型:一般情况下预训练模型都是大型模型,具备复杂的网络结构,众多的参数量,以及在足够大的数据集下进行训练而产生的模型。在NLP领域,预训练模型往往是语言模型。因为语言模型的训练是无监督的,可以获得大规模语料,同时语言模型又是许多典型NLP任务的基础,如机器翻译,文本生成,阅读理解等,常见的预训练模型有BERT, GPT, roBERTa, transformer-XL等。
微调:根据给定的预训练模型,改变它的部分参数或者为其新增部分输出结构后,通过在小部分数据集上训练,来使整个模型更好的适应特定任务。
两种迁移模式:
- 直接使用预训练模型,进行相同任务的处理,不需要调整参数或模型结构,这些模型开箱即用。但是这种情况一般只适用于普适任务, 如:fasttest工具包中预训练的词向量模型。另外,很多预训练模型开发者为了达到开箱即用的效果,将模型结构分各个部分保存为不同的预训练模型,提供对应的加载方法来完成特定目标。
- 更加主流的迁移学习方式是发挥预训练模型特征抽象的能力,然后再通过微调的方式,通过训练更新小部分参数以此来适应不同的任务。这种迁移方式需要提供小部分的标注数据来进行监督学习。
NLP 常见的预训练模型
- BERT
- GPT
- GPT-2
- Transformer-XL
- XLNet
- XLM
- RoBERTa
- DistilBERT
- ALBERT
- T5
- XLM-RoBERTa
BERT 及其变体
- bert-base-uncased:编码器具有 12 个隐层,输出 768 维张量,12 个自注意力头,共 110M 参数量,在小写的英文文本上进行训练而得到。
- bert-large-uncased:编码器具有 24 个隐层,输出 1024 维张量,16 个自注意力头,共 340M 参数量,在小写的英文文本上进行训练而得到。
- bert-base-cased:编码器具有 12 个隐层,输出 768 维张量,12 个自注意力头,共 110M 参数量,在不区分大小写的英文文本上进行训练而得到。
- bert-large-cased:编码器具有 24 个隐层,输出 1024 维张量,16 个自注意力头,共 340M 参数量,在不区分大小写的英文文本上进行训练而得到。
- bert-base-multilingual-uncased:编码器具有 12 个隐层,输出 768 维张量,12 个自注意力头,共 110M 参数量,在小写的 102 种语言文本上进行训练而得到。
- bert-large-multilingual-uncased:编码器具有 24 个隐层,输出 1024 维张量,16 个自注意力头,共 340M 参数量,在小写的 102 种语言文本上进行训练而得到。
- bert-base-chinese:编码器具有 12 个隐层,输出 768 维张量,12 个自注意力头,共 110M 参数量,在简体和繁体中文文本上进行训练而得到。
GPT
- openai-gpt:编码器具有 12 个隐层,输出 768 维张量,12 个自注意力头,共 110M 参数量,由 OpenAI 在英文语料上进行训练而得到。
GPT-2 及其变体
- gpt2:编码器具有 12 个隐层,输出 768 维张量,12 个自注意力头,共 117M 参数量,在 OpenAI GPT-2 英文语料上进行训练而得到。
- gpt2-xl:编码器具有 48 个隐层,输出 1600 维张量,25 个自注意力头,共 1558M 参数量,在大型的 OpenAI GPT-2 英文语料上进行训练而得到。
Transformer-XL
- transfo-xl-wt103:编码器具有 18 个隐层,输出 1024 维张量,16 个自注意力头,共 257M 参数量,在 wikitext-103 英文语料进行训练而得到。
XLNet 及其变体
- xlnet-base-cased:编码器具有 12 个隐层,输出 768 维张量,12 个自注意力头,共 110M 参数量,在英文语料上进行训练而得到。
- xlnet-large-cased:编码器具有 24 个隐层,输出 1024 维张量,16 个自注意力头,共 240 参数量,在英文语料上进行训练而得到。
XLM
- xlm-mlm-en-2048:编码器具有 12 个隐层,输出 2048 维张量,16 个自注意力头,在英文文本上进行训练而得到。
RoBERTa 及其变体
- roberta-base:编码器具有 12 个隐层,输出 768 维张量,12 个自注意力头,共 125M 参数量,在英文文本上进行训练而得到。
- roberta-large:编码器具有 24 个隐层,输出 1024 维张量,16 个自注意力头,共 355M 参数量,在英文文本上进行训练而得到。
DistilBERT 及其变体
- distilbert-base-uncased:基于 bert-base-uncased 的蒸馏(压缩)模型,编码器具有 6 个隐层,输出 768 维张量,12 个自注意力头,共 66M 参数量。
- distilbert-base-multilingual-cased:基于 bert-base-multilingual-uncased 的蒸馏(压缩)模型,编码器具有 6 个隐层,输出 768 维张量,12 个自注意力头,共 66M 参数量。
ALBERT
- albert-base-v1:编码器具有 12 个隐层,输出 768 维张量,12 个自注意力头,共 125M 参数量,在英文文本上进行训练而得到。
- albert-base-v2:编码器具有 12 个隐层,输出 768 维张量,12 个自注意力头,共 125M 参数量,在英文文本上进行训练而得到,相比 v1 使用了更多的数据量,花费更长的训练时间。
T5 及其变体
- t5-small:编码器具有 6 个隐层,输出 512 维张量,8 个自注意力头,共 60M 参数量,在 C4 语料上进行训练而得到。
- t5-base:编码器具有 12 个隐层,输出 768 维张量,12 个自注意力头,共 220M 参数量,在 C4 语料上进行训练而得到。
- t5-large:编码器具有 24 个隐层,输出 1024 维张量,16 个自注意力头,共 770M 参数量,在 C4 语料上进行训练而得到。
XLM-RoBERTa 及其变体
- xlm-roberta-base:编码器具有 12 个隐层,输出 768 维张量,8 个自注意力头,共 125M 参数量,在 2.5TB 的 100 种语言文本上进行训练而得到。
- xlm-roberta-large:编码器具有 24 个隐层,输出 1027 维张量,16 个自注意力头,共 355M 参数量,在 2.5TB 的 100 种语言文本上进行训练而得到。
预训练模型说明
- 所有上述预训练模型及其变体都是以 transformer 为基础,只是在模型结构如神经元连接方式,编码器隐层数,多头注意力的头数等发生改变,这些改变方式的大部分依据都是由在标准数据集上的表现而定,因此,对于我们使用者而言,不需要从理论上深度探究这些预训练模型的结构设计的优劣,只需要在自己处理的目标数据上,尽量遍历所有可用的模型对比得到最优效果即可。