机器学习前沿:Transformer与预训练模型的深度探索!
Transformer是一种基于自注意力机制的神经网络架构,由Vaswani等人在2017年提出,解决了传统RNN和LSTM处理长序列时的信息丢失问题。其核心特点包括多头注意力机制、编码器-解码器结构、位置编码等,能够高效并行处理序列数据并捕捉长距离依赖关系。Transformer的发展经历了从奠基模型(2017)到大模型时代(2020s)的演进,衍生出BERT、GPT等著名模型,并扩展到计算机视
导语
Transformer是一种高效、灵活的网络,凭借自注意力机制和并行计算能力,成为现代深度学习的核心架构。自从 ELMO,GPT,BERT等模型问世,基于大规模预料的预训练模型便开始流行起来。学者们的注意力渐渐从模型架构转移到了预训练上。预训练+微调的方式也创造了不少下游任务 SOTA。
Transformer及发展历史
一、Transformer
Transformer是一种基于”自注意力机制(Self-Attention)“的神经网络架构,最初由Vaswani等人在2017年论文《Attention is All You Need》中提出。它主要用于处理序列数据,广泛应用于自然语言处理(NLP)、计算机视觉等领域。
传统RNN、LSTM处理长序列,会出现”信息丢失"或"记忆困难“的问题,Transformer跑开了按时间一步步计算,改用注意力机制(Attention),一次性浏览整个句子,同步实现了远距离语义的捕捉,并行速度更快。
核心特点
- 自注意力机制:通过计算序列中每个元素与其他元素的关联性,捕获长距离依赖,取代传统RNN的顺序处理,提升并行计算效率。
- Encoder-Decoder架构:
- Encoder:将输入序列编码为上下文表示,适合理解任务(如BERT)。
- Decoder:基于编码表示生成输出序列,适合生成任务(如GPT)。
- 多头注意力(Multi-Head Attention):并行计算多种注意力模式,增强特征表达能力。多角度捕获复杂语义关系。
- 前馈网络与残差连接:每层包含前馈神经网络(FFN)和残差连接,稳定训练并提升性能。解决了传统模型的诸多局限。
- 位置编码(Positional Encoding):为序列中的词或标记添加位置信息,弥补自注意力缺乏序列顺序的不足。
优势
- 高效并行:不像RNN需逐时间步处理,Transformer可一次性处理整个序列。
- 长距离依赖:自注意力有效建模远距离元素间的关系。
- 通用性:可扩展到NLP(BERT、GPT)、视觉(ViT)、多模态(CLIP)等任务。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
二、发展历史及推荐阅读
Seq2seq(Sequence to Sequence/序列到序列)概念最早由Bengio在2014年的论文“Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation”中提出,其代表从一个源序列生成一个目标序列的操作。
1. Transformer奠基 (2017)
- 论文: Attention is All You Need (Vaswani et al., 2017) 上下文决定一切
- 贡献: 首次提出Transformer模型,摒弃传统RNN和CNN,引入自注意力机制(Self-Attention),显著提升并行计算能力和长距离依赖建模。提出了Encoder-Decoder架构,奠定了现代NLP模型基础。
- 逻辑起点: Transformer通过注意力机制解决序列建模问题,成为后续研究的基石。
- 链接: arXiv:1706.03762
2. 大规模预训练模型的兴起 (2018-2019)
Transformer的成功推动了预训练模型的快速发展,核心逻辑是从通用语言表示到任务微调。
- 论文: BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding (Devlin et al., 2018)
- 贡献: 提出BERT(Bidirectional Encoder Representations from Transformers),通过双向Transformer编码器和掩码语言模型(MLM)实现深层语义理解,在多项NLP任务上刷新纪录。
- 逻辑进展: 将Transformer的Encoder用于预训练,强调双向上下文建模,开启了“预训练+微调”范式。
- 链接: arXiv:1810.04805
- 论文: Improving Language Understanding by Generative Pre-Training (Radford et al., 2018, GPT-1)
- 贡献: 提出GPT-1,利用Transformer的Decoder进行单向语言建模,结合无监督预训练和有监督微调,提升生成任务表现。
- 逻辑进展: 侧重生成能力,探索Transformer在单向上下文中的潜力,与BERT形成互补。
- 链接: OpenAI Technical Report
- 论文: RoBERTa: A Robustly Optimized BERT Pretraining Approach (Liu et al., 2019)
- 贡献: 优化BERT的训练策略(如动态掩码、更大数据、更长训练时间),显著提升性能。
- 逻辑进展: 验证了预训练数据规模和训练策略对Transformer性能的巨大影响。
- 链接: arXiv:1907.11692
3. 模型规模扩展与生成能力增强 (2020)
随着计算资源增加,Transformer模型规模迅速扩展,逻辑聚焦于探索更大模型的潜力和生成任务的突破。
- 论文: Language Models are Few-Shot Learners (Brown et al., 2020, GPT-3)
- 贡献: 提出GPT-3,1750亿参数的超大规模Transformer,展示零样本和少样本学习能力,显著提升生成任务表现。
- 逻辑进展: 通过规模扩展验证了“规模定律”(Scaling Law),推动了生成模型的研究热潮。
- 链接: arXiv:2005.14165
- 论文: T5: Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer (Raffel et al., 2020)
- 贡献: 提出T5(Text-to-Text Transfer Transformer),统一所有NLP任务为文本到文本框架,探索更大规模预训练模型的迁移学习能力。
- 逻辑进展: 将Encoder-Decoder架构与大规模预训练结合,强调任务统一的灵活性。
- 链接: arXiv:1910.10683
4. 高效Transformer与跨模态扩展 (2020-2021)
随着模型规模增长,计算效率和跨模态应用成为研究重点,逻辑上从性能优化转向高效性和多模态。
- 论文: Efficient Transformers: A Survey (Tay et al., 2020)
- 贡献: 系统总结高效Transformer变体(如Linformer、Performer等),提出降低注意力机制计算复杂度的多种方法。
- 逻辑进展: 解决Transformer在长序列和高计算成本上的局限,推动高效模型设计。
- 链接: arXiv:2009.06732
- 论文: Vision Transformer (ViT): An Image is Worth 16x16 Words (Dosovitskiy et al., 2020)
- 贡献: 将Transformer应用于计算机视觉,提出ViT,通过将图像分块为序列输入Transformer,达到与CNN媲美的性能。
- 逻辑进展: 扩展Transformer到非NLP领域,验证其跨模态通用性。
- 链接: arXiv:2010.11929
- 论文: CLIP: Learning Transferable Visual Models From Natural Language Supervision (Radford et al., 2021)
- 贡献: 提出CLIP,通过对比学习联合训练图像和文本Transformer,实现视觉-语言任务的强大泛化能力。
- 逻辑进展: 将Transformer应用于多模态,开启视觉-语言联合建模的新方向。
- 链接: arXiv:2103.00020
5. 通用模型与指令微调 (2022-2023)
Transformer进一步向通用智能方向发展,逻辑聚焦于指令微调和多任务泛化能力。
- 论文: InstructGPT: Training Language Models to Follow Instructions with Human Feedback (Ouyang et al., 2022)
- 贡献: 提出通过强化学习和人类反馈(RLHF)优化Transformer模型,使其更好地遵循用户指令,提升实用性。
- 逻辑进展: 从通用语言模型到用户导向的交互模型,增强模型的指令遵循能力。
- 链接: arXiv:2203.02155
- 论文: LLaMA: Efficient and High-Performing Language Models (Touvron et al., 2023)
- 贡献: 提出LLaMA系列,专注于高效训练的小型Transformer模型,在研究任务上性能优异。
- 逻辑进展: 验证了高效训练策略在中小规模模型上的潜力,降低研究门槛。
- 链接: arXiv:2302.13971
6. 多模态与通用智能的进一步探索 (2023-2025)
近期研究聚焦于多模态融合和通用智能,逻辑上追求更广泛的任务覆盖和推理能力。
- 论文: Flamingo: A Visual Language Model for Few-Shot Learning (Alayrac et al., 2022)
- 贡献: 提出Flamingo,通过融合视觉和语言的Transformer模型,实现少样本多模态任务。
- 逻辑进展: 进一步推进多模态Transformer,强调跨模态的少样本学习能力。
- 链接: arXiv:2204.14198
- 论文: Grok: A Maximum Truth-Seeking Language Model (xAI, 2023, 假设性描述)
- 贡献: 提出Grok,基于Transformer优化,强调逻辑推理和真实性,适用于多领域问题解答。
- 逻辑进展: 将Transformer应用于更广泛的推理任务,追求通用智能。
Attention基础-向量模型
如"苹果"一词的语义由上下文计算决定:
虚线代表key与query的相关度,线条的粗细分布就叫做”注意力分布“。或者说,线条的粗细就是权重,线条越粗,表示key与query越相关,对理解query越重要,value的权重就越大。
原理简介
1.编码-解码
编码器提供上下文,解码器基于上下文生成结果(如翻译、生成文本)。
编码器的目标就是对这个低阶语义向量序列进行特征提取、转换,并且最终映射到一个新的语义空间,从而得到一个高阶语义向量序列。因为编码器使用了注意力机制,所以这个高阶语义向量序列具有更加丰富和完整的语义,也是上下文感知的。这个高阶语义向量序列将被后续的解码器使用并生成最终输出序列。而且,编码器是为每一个待预测词都生成一个上下文向量。
编码器处理输入序列,生成上下文表示,每层包含:
- 多头自注意力(Multi-Head Self-Attention)
-
功能:捕捉输入序列中各词之间的关系(如“我”和“学习”),通过QKV计算关注权重。
-
作用:理解全局上下文,提取语义特征。
-
- 前馈神经网络(Feed-Forward Network, FFN)
-
功能:对每个词的表示进行非线性变换,增强特征表达。
-
作用:增加模型深度,提升复杂模式捕捉。
-
- 残差连接与层归一化(Add & Norm)
-
功能:残差连接避免梯度消失,层归一化稳定训练。
-
作用:确保信息流动和训练稳定性。
-
解码器的输入有两个:编码器产生的隐状态和解码器之前预测的输出结果。解码器会基于这两个输入来预测下一个输出token。解码器的结构也是由多个解码器层组成。在解码器中,子层堆叠的目的是逐层细化和优化生成词汇的表示,使得模型能够生成更准确、更符合上下文的目标词。每个子层都有不同的功能和作用。
解码器(Decoder)层生成输出序列,每层包含:
- 掩码多头自注意力(Masked Multi-Head Self-Attention)
-
功能:只关注当前及之前的词(掩码防止“未来”信息泄露),如生成“爱”时只看“我”。
-
作用:保证生成序列的因果性(自回归)。
-
- 多头交叉注意力(Multi-Head Cross-Attention)
-
功能:用解码器的Query与编码器的Key/Value交互,聚焦输入序列的相关部分。
-
作用:将输入上下文融入生成过程(如翻译时对源句的关注)。
-
- 前馈神经网络(FFN)
-
功能:同编码器,增强生成的词表示。
-
作用:提升生成内容的复杂性。
-
- 残差连接与层归一化(Add & Norm)
-
功能:同编码器,稳定训练。
-
作用:保持信息流畅,优化梯度传播。
-
2.注意力(Attention)、自注意力(Self-Attention)、多头注意力(Multi-Head Attention)
Transformer能动态聚焦重要信息,高效处理序列数据,是大模型理解和生成语言的关键。
文本在序列计算中被切分成一个个小块,比如单词、字符、甚至标点符号。就像把一句话拆成积木块,大模型用这些“积木”来理解和生成语言。比如,“我爱学习”可能被拆成“我”、“爱”、“学习”三个Token。
-
(1)Tokenization:将句子分割成token,
["我", "爱", "学习"]
。 -
(2)Token to ID:将token映射为数字ID,
[259, 372, 9192]
。 -
(3)Embedding:将ID通过嵌入层转换为向量,
shape=[3, d_model]
的矩阵)。这里d_model
是模型的维度,一般也就是一个token在高维空间的表示,一般我们用512。 -
Embedding 是人类概念的映射,或者说是表达人类概念的途径或者方法。
-
(4)位置编码:为每个向量添加位置信息,得到最终的输入表示
X
。在Transformer的注意力机制(Attention)中,QKV指的是Query(查询)、Key(键)、Value(值),是自注意力(Self-Attention)的核心组件。它们就像图书馆的检索系统:Query是你的问题,Key是书本的标签,Value是书本的内容。
-
输入文本(比如一个词)先被转换为向量(Embedding)。
-
每个输入向量通过三个不同的权重矩阵,生成三组向量:Query (Q)、Key (K)、Value (V)。
-
比如,“我爱学习”每个词生成自己的Q、K、V向量。
-
用Query和所有Key做点积(dot product),得到每个词对其他词的“相关性”得分。得分高的地方表示更相关,比如“我”和“爱”可能更相关。
-
用得分(经过Softmax归一化)加权Value向量,得到最终的输出。
输入形状 :(batch_size,seq_len,dmodel),例如 (1,4,512),一次输入几个序列,序列长度,模型维度。接着应用注意力机制,生成随机的权重矩阵 、、,单头注意力计算:
-
比如,如果“爱”对“我”的得分高,模型会更关注“爱”的信息。
-
-
import torch
# 假设输入是3个词的向量(维度为4)
inputs = torch.tensor([[1.0, 0.0, 0.0, 0.0], # 我
[0.0, 1.0, 0.0, 0.0], # 爱
[0.0, 0.0, 1.0, 0.0]]) # 学习
# 权重矩阵(简化)
W_q = torch.eye(4) # Query矩阵
W_k = torch.eye(4) # Key矩阵
W_v = torch.eye(4) # Value矩阵
# 计算Q、K、V
Q = inputs @ W_q # [3, 4]
K = inputs @ W_k # [3, 4]
V = inputs @ W_v # [3, 4]
# 注意力得分
scores = torch.matmul(Q, K.T) / (4 ** 0.5) # 点积并缩放
weights = torch.softmax(scores, dim=-1) # 归一化
# 加权输出
output = torch.matmul(weights, V) # [3, 4]
print("Attention Weights:\n", weights)
print("Output:\n", output)
- 单头注意力:单一视角,信息捕捉有限,适合简单任务。
- 多头注意力:多视角并行,理解更全面,适合复杂任务(如翻译、生成)。
-
多头通过多个QKV组(每组一个“头”)并行计算,最后合并结果,增强模型表达力。
多头注意力可以理解为高维向量被拆分或者转化为H份低维向量,并在H个低维空间里求解各自的注意力。这样模型就可以从不同角度来分析和理解输入信息,最终输出包含有不同子空间中的编码表示信息,从而增强模型的表达能力。
预训练模型与微调
1.什么是预训练模型?
预训练模型是大模型在海量数据上预先训练好的神经网络(如Transformer),学会了通用语言或任务知识。比如,BERT或GPT在大量文本(网页、书籍等)上训练,能理解语法、语义或生成文本。它们像“万能学霸”,掌握广泛基础知识,但未针对特定任务优化。
- 预训练:
数据:海量、无标注或弱标注数据(如维基百科、网页)。
目标:学习通用知识(如语言规律、上下文关系)。
例子:GPT-3在数千亿词上预训练,学会生成流畅文本。
特点:耗时长、计算成本高,模型泛化能力强。
2.什么是微调?
微调(Fine-tuning)是基于预训练模型,针对特定任务用少量数据进一步训练,调整模型参数以提升性能。就像让“学霸”针对某门考试(如翻译、分类)再复习一遍,变得更擅长具体任务。
-
微调:
数据:少量、针对性数据(通常有标注,如情感分析数据集)。
目标:优化模型在特定任务(如问答、翻译)上的表现。
例子:用客服对话数据微调GPT,生成更专业的客服回复。
特点:数据少、训练快,针对性强。
开源预训练模型
语言模型 (NLP)- LLaMA 3 (Meta AI):
-
参数:8B, 70B
-
特点:高效,研究专用,擅长文本生成和理解。
-
用途:对话、翻译、代码生成。
-
获取:需申请Meta AI权限,或用社区版本如openlm-research/open_llama.
-
- ViT (Vision Transformer, Google):
-
参数:86M-2B
-
特点:将图像分块处理,媲美CNN。
-
用途:图像分类、目标检测。
-
获取:Hugging Face (google/vit-base-patch16-224).
-
- CLIP-ViT (OpenAI):
-
参数:~150M
-
特点:视觉-语言联合训练,零样本分类。
-
用途:图像搜索、文本-图像匹配。
-
获取:Hugging Face (openai/clip-vit-base-patch32).
-
- LLaVA (Large Language and Vision Assistant):
-
参数:13B, 34B
-
特点:结合语言和视觉,擅长图像问答。
-
用途:图文对话、图像描述。
-
获取:Hugging Face (llava-hf/llava-13b).
-
- Flamingo (DeepMind):
-
参数:~80B
-
特点:少样本学习,视觉-语言任务。
-
用途:图像生成、跨模态推理。
-
获取:部分开源,需查最新社区版本。
-
常用微调方法
- 全参数微调 (Full Fine-Tuning):
-
描述:更新模型所有参数,适合高性能但资源消耗大。
-
适用模型:BERT, LLaMA, ViT。
-
工具:Hugging Face Trainer, PyTorch.
-
例子:微调BERT做情感分类,需大内存(>16GB GPU)。
-
- LoRA (Low-Rank Adaptation):
-
描述:冻结原始权重,仅微调低秩矩阵(参数量<1%),高效省资源。
-
适用模型:LLaMA, Mistral, BERT, CLIP.
-
工具:peft库 (pip install peft).
-
例子:用LoRA微调LLaMA 3生成对话,权重仅几MB。
-
- QLoRA (Quantized LoRA):
-
描述:结合4-bit量化与LoRA,进一步降低内存需求(单GPU可微调70B模型)。
-
适用模型:LLaMA, Mistral.
-
工具:peft, bitsandbytes.
-
例子:用QLoRA在消费级GPU上微调Mistral-7B。
-
- Adapter-based Tuning:
-
描述:在模型层间添加小型Adapter模块,仅微调这些模块,参数量小。
-
适用模型:BERT, T5, ViT.
-
工具:transformers, adapters库.
-
例子:微调T5做机器翻译,Adapter模块可跨任务复用。
-
- Prompt Tuning:
-
描述:仅优化输入提示(Prompt)的嵌入向量,模型参数不变。
-
适用模型:GPT, LLaMA, CLIP.
-
工具:Hugging Face PEFT.
-
例子:用Prompt Tuning调整CLIP进行特定图像分类。
-
- RLHF (Reinforcement Learning with Human Feedback):
-
描述:结合人类反馈,通过强化学习优化模型输出(如对话质量)。
-
适用模型:Grok, LLaMA, Mistral.
-
工具:trl库 (pip install trl).
-
例子:用RLHF微调Grok提升对话对齐性。
-
- LLaMA 3 (Meta AI):
如何学习AI大模型?
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓
更多推荐
所有评论(0)