Transformer家族

在《Transformer原理》中我们介绍了,现在很多大模型都是基于Transformer,其中最出名就是GPT和BERT模型,在GPT和BERT模型被提出来之后,NLP领域也出现了基于Transformer结构的模型,按照模型结构基本可以分为三类:

  • 纯Encoder模型(典型代表BERT,仅使用Transformer中的编码器),又称为自编码(auto-encoding)Transformer模型。

  • 纯Decoder模型(典型代表GPT,仅使用Transformer中的解码器),又称为自回归(auto-regressive)Transformer模型。

  • Encoder-Decoder模型(典型代表BART、T5),又称为Seq2Seq(sequence-to-sequence)Transformer模型。

1 纯Encoder分支

纯Encoder模型通常是通过遮掩句子中的任意词语,让模型进行预测,它通常比较适用于理解整个句子语的任务比如句子分类、命名实体识别、情感分析。在预测的时候是可以看到所有输入词。

|---------------------------|-----------------------------------------------------------------------------------------------------|
| 模型名称 | 模型介绍 |
| bert | 通过预测文本中被遮盖的词语和判断一个文本是否跟随另一个来进行预训练,主要是MLM(掩盖词)和NSP(下一句预测)任务进行训练 |
| DistilBERT | DistilBERT 在内存占用更少、计算速度更高的情况下,依然可以保持类似bert的性能, 适用于低延迟的场景 |
| RoBERTa | RoBERTa 在更多的训练数据上,以更大的批次训练了更长的时间,并且放弃了 NSP 任务。与 BERT 模型相比,这些改变显著地提高了模型的性能; |
| XLM | 跨语言语言模型 (XLM) 探索了构建多语言模型的多个预训练目标,包括来自 GPT 的自回归语言建模和来自 BERT 的 MLM |
| XLM-RoBERTa | 跟随 XLM 和 RoBERTa,XLM-RoBERTa (XLM-R) 通过升级训练数据来改进多语言预训练 |
| ALBERT | ALBERT 通过三处变化使得 Encoder 架构更高效:首先将词嵌入维度与隐藏维度解耦以减少模型参数;其次所有模型层共享参数;最后将 NSP 任务替换为句子排序预测(判断句子顺序是否被可以交换) |
| ELECTRA , DeBERTa ....... | |

2 纯Decoder分支

纯 Decoder 模型的预训练通常围绕着预测句子中下一个单词展开。纯 Decoder 模型适合处理那些只涉及文本生成的任务。在生成的下一个词的时候,只能看到当前以及前面的词。

|----------------------------|----------------------------------------------------------------------------------------|
| 模型名称 | 模型介绍 |
| GPT | 结合了 Transformer Decoder 架构和迁移学习,通过根据上文预测下一个单词的预训练任务。GPT 模型在分类等下游任务上取得了很好的效果; |
| GPT-2 | 受简单且可扩展的预训练方法的启发,OpenAI 通过扩大原始模型和训练集创造了 GPT-2,它能够生成篇幅较长且语义连贯的文本 |
| GPT-3 | 将GPT-2进一步放大100倍,GPT-3具有1750 亿个参数。除了能生成令人印象深刻的真实篇章之外,还展示了小样本学习 (few-shot learning) 的能力。 |
| GPT-Neo / GPT-J-6B ....... | GPT3是闭源,所有有人参考GPT3一些资料,实现了类似GPT的GPT-Neo和GPT-J-6B........ |

3

Encoder-Decoder 分支

Encoder 的注意力层都可以访问初始输入句子中的所有单词,而 Decoder 的注意力层则只能访问输入中给定词语之前的词语。

模型可以使用 Encoder 或 Decoder 模型的目标来完成预训练,但通常会包含一些更复杂的任务。例如,T5 通过随机遮盖掉输入中的文本片段进行预训练,训练目标则是预测出被遮盖掉的文本。Encoder-Decoder 模型适合处理那些需要根据给定输入来生成新文本的任务,例如自动摘要、翻译、生成式问答。

|---------|-----------------------------------------------------------------------------------------------------------------------------------|
| 模型名称 | 模型介绍 |
| T5 | 将所有NLU和NLG任务都转换为Seq2Seq形式统一解决(例如文本分类,就是将文本送入Encoder,然后 Decoder 生成文本形式的标签)。 |
| BART | 同时结合了BERT和GPT的预训练过程。将输入句子通过遮盖词语、打乱句子顺序、删除词语、文档旋转等方式破坏后传给 Encoder 编码,然后要求 Decoder 能够重构出原始的文本。这使得模型可以灵活地用于NLU或NLG任务,并且在两者上都实现了最优性能。 |
| M2M-100 | 语言之间可能存在共享知识可以用来处理小众语言之间的翻译。M2M-100 是第一个可以在 100 种语言之间进行翻译的模型,并且对小众的语言也能生成高质量的翻译。 |
| BigBird | 注意力机制的内存要求,Transformer模型只能处理一定长度内的文本。BigBird通过使用线性扩展的稀疏注意力形式,将可处理的文本长度从大多数模型的512扩展到4096。 |
| ....... | ....... |

4 ****Transformers

上面表格中的模型只是冰山一角,在最新的2023年《Transformer models: an introduction and catalog》论文有提到更多关于Transformer家族成员,并且提供了相关发布时间以及说明,有兴趣大家可以下载去看看。

是不是被这么多模型吓坏了?幸运的是,Hugging Face开发了Transformers 库, 是当下最热、最常用的自然语言处理工具包。 实现了大量的基于Transformer架构的主流训练模型, 不仅仅是自然语言处理模型,包括图像、音视频以及多模态模型。就像java做web应用一样,学会spring boot框架,上手事半功倍。 作为一个大模型小白想要实操,这个库是必学的。

5 Transformers及相关库作用

  • Transformers: 核心库,模型加载、模型训练、流水线等.

  • Tokenizer: 分词器,对数据进行预处理,文本到token序列相互转换。

  • Datasets: 数据集库,提供了数据集的加载和处理等方法。

  • Evaluate: 评估函数,提供各种评价指标的计算函数。

  • PEFT: 高效微调模型库, 提供了几种高效微调的方法。

  • Accelerate:分布式训练,提供分布式训练解决方法, 包括大模型加载与推理解决方案。

  • Optimum: 优化加速库,支持多种,如Onnxruntime、OpenVino等。

  • Gradio:可视化部署库,几行代码快速实现基于web交互的算法演示系统。

相关推荐
Eric.Lee202117 分钟前
数据集-目标检测系列- 螃蟹 检测数据集 crab >> DataBall
python·深度学习·算法·目标检测·计算机视觉·数据集·螃蟹检测
林辞忧26 分钟前
算法修炼之路之滑动窗口
算法
￴ㅤ￴￴ㅤ9527超级帅36 分钟前
LeetCode hot100---二叉树专题(C++语言)
c++·算法·leetcode
liuyang-neu38 分钟前
力扣 简单 110.平衡二叉树
java·算法·leetcode·深度优先
penguin_bark1 小时前
LCR 068. 搜索插入位置
算法·leetcode·职场和发展
_GR1 小时前
每日OJ题_牛客_牛牛冲钻五_模拟_C++_Java
java·数据结构·c++·算法·动态规划
ROBIN__dyc1 小时前
表达式
算法
无限大.1 小时前
c语言实例
c语言·数据结构·算法
六点半8881 小时前
【C++】速通涉及 “vector” 的经典OJ编程题
开发语言·c++·算法·青少年编程·推荐算法
@haihi2 小时前
冒泡排序,插入排序,快速排序,选择排序
数据结构·算法·排序算法