Transformer训练过程、推理过程详解

系列文章目录


文章目录
  • 系列文章目录
  • 前言
  • 一、模型结构
  • 二、训练过程
  • 三、推理过程

前言

Transformer是一种很重要且强大的模型,如今网上介绍Transformer的文章很多,但是大都是只是介绍模型的结构,对于训练过程、推理过程模型的输入和输出都没有进行介绍,使人看的一头雾水,因为本文就Transformer的模型的训练和推理过程进行详细的介绍。

一、模型结构

下面的Transformer的模型结构图,其分为编码器和解码器两部分。模型的结构详解网上有很多,在这里就不和大家赘述了。
在这里插入图片描述

在这里插入图片描述

二、训练过程

比如我们想做一个中译英的机器翻译任务,现在我们已经准备好了数据集,例如{‘chinese’:我爱吃梨,‘english’: i love eating pears} ,那么模型的输入和输出以及标签分别是什么呢?
首先我们会先根据数据集创建中文词表和英文词表,假如数据集中只有{‘chinese’:我爱吃梨,‘english’: i love eating pears} 这一条样本,那么中文词表为{‘我’:0,‘爱’:1,‘吃’:2,‘梨’:3},英文词表为{‘PAD’:0,‘BOS’:1,‘EOS’:2,‘i’:3,‘love’:4,‘eating’:5,‘pears’:6}。为什么英文词表中还多了一些特殊字符呢?首先’PAD’字符是填充的意思,在进行输入的时候为了保持一个batch中的句子长度一样,会将句子填充到一样的长度,所以如果句子的长度过短,会在其后面增加填充符。’BOS‘字符是开始符号,解码器的输入中的第一个字符便是’BOS’字符;’EOS‘字符为结束字符。
创建好此表后,我们根据词表将中英文输入映射成数字。如下所示:

encoder输入:
我爱吃梨---------------------------------------------------[0,1,2,3]
decoder输入:
‘BOS’ i love eating pears ------------------------------[1,3,4,5,6]
标签:
i love eating pears ‘EOS’ ------------------------------[3,4,5,6,2]
decoder输出:(模型还没有训练好)
i love pears pears ‘EOS’------------------------------------[3,4,6,6,2]

可以看到,编码器的输入是一整个句子,解码器的输入和输出也是完整的一个句子,最后根据解码器输出的句子去和标签去算loss。因此transformer在训练的时候是并行的。
 为什么说是并行的呢?例如解码器输入是’‘BOS’ i love eating pears‘,输出是’i love pears pears ‘EOS’‘,因此可以看出,输入中的’BOS’对应解码器预测输出’i’, 输入中的‘i’对应解码器的预测输出中的’love’。与自回归方式不同(把解码器的输出当作输入去预测,一个字一个字的输出),Transformer我们可以想象成给解码器扔进去一句话,然后解码器同时也输出了一句话。因此Transformer的训练速度相比与传统的RNN也快了很多。同时也因为是并行的,所以对内存要求也大大增加。
 但是很明显,如果训练的时候给解码器输入一个完整的句子,例如输入’‘BOS’ i love eating pears‘,训练模型输出i love pears pears ‘EOS’,这对于模型来说没什么好学的呀,我直接把你输入的句子去掉‘BOS’,然后再结尾加上‘EOS’不就可以了。这不就相当于平时开卷做作业抄答案回回满分,一到真正的闭卷考试就考不好了。因此,为了让模型再预测当前单词的输出不提前看到后面的”答案“。我们需要加上因果mask,把当前时刻的词后面的语句给掩盖掉,从而让模型不是通过去抄答案获得最终的输出。

三、推理过程

在训练的时候,模型解码器的输入和输出都是一整个句子,通过对输入的句子加入因果mask实现并行训练。那如果已经训练好了一个Transformer模型,使用它做机器翻译推理的时候,我们只有编码器的输入,那么解码器的输入输出是什么呢?

encoder输入:
我爱吃梨 (Transformer编码器只需要编码一次就可以)

解码器推理次数decoder输入:decoder输出:
1‘BOS’i
2‘BOS’ ii love
3‘BOS’ i lovei love eatting
4‘BOS’ i love eattingi love eatting pears
5‘BOS’ i love eatting pearsi love eatting pears ‘EOS’

通过上面的例子可以看出,在推理过程中transformer的输出采用的是自回归的方式,即将transformer解码器的输出当作输入然后重新去做推理,然后得到下一个输出,直到输出’EOS’。在推理时,会先给解码器一个’BOS’的字作为第一个输入,然后开始自回归输出。这也就是为什么训练时要在输入中加入’BOS’。
  注意:由于Transformer结构的特点,其解码器编码器的输入维度和输出维度相同,所以在推理的时候,解码器输入几个字,其就输出几个字,且输出的字都是你提前定义的词表中的字。

可能大家都想学习AI大模型技术,也_想通过这项技能真正达到升职加薪,就业或是副业的目的,但是不知道该如何开始学习_,因为网上的资料太多太杂乱了,如果不能系统的学习就相当于是白学。
为了帮助大家打破壁垒,快速了解大模型核心技术原理,学习相关大模型技术。从原理出发真正入局大模型。在这里我和MoPaaS魔泊云联合梳理打造了系统大模型学习脉络,这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码免费领取🆓**⬇️⬇️⬇️

在这里插入图片描述

【大模型全套视频教程】

教程从当下的市场现状和趋势出发,分析各个岗位人才需求,带你充分了解自身情况,get 到适合自己的 AI 大模型入门学习路线。

从基础的 prompt 工程入手,逐步深入到 Agents,其中更是详细介绍了 LLM 最重要的编程框架 LangChain。最后把微调与预训练进行了对比介绍与分析。

同时课程详细介绍了AI大模型技能图谱知识树,规划属于你自己的大模型学习路线,并且专门提前收集了大家对大模型常见的疑问,集中解答所有疑惑!

在这里插入图片描述

深耕 AI 领域技术专家带你快速入门大模型

跟着行业技术专家免费学习的机会非常难得,相信跟着学习下来能够对大模型有更加深刻的认知和理解,也能真正利用起大模型,从而“弯道超车”,实现职业跃迁!

在这里插入图片描述

【精选AI大模型权威PDF书籍/教程】

精心筛选的经典与前沿并重的电子书和教程合集,包含《深度学习》等一百多本书籍和讲义精要等材料。绝对是深入理解理论、夯实基础的不二之选。

在这里插入图片描述

【AI 大模型面试题 】

除了 AI 入门课程,我还给大家准备了非常全面的**「AI 大模型面试题」,**包括字节、腾讯等一线大厂的 AI 岗面经分享、LLMs、Transformer、RAG 面试真题等,帮你在面试大模型工作中更快一步。

【大厂 AI 岗位面经分享(92份)】

图片

【AI 大模型面试真题(102 道)】

图片

【LLMs 面试真题(97 道)】

图片

【640套 AI 大模型行业研究报告】

在这里插入图片描述

【AI大模型完整版学习路线图(2025版)】

明确学习方向,2025年 AI 要学什么,这一张图就够了!

img

👇👇点击下方卡片链接免费领取全部内容👇👇

在这里插入图片描述

抓住AI浪潮,重塑职业未来!

科技行业正处于深刻变革之中。英特尔等巨头近期进行结构性调整,缩减部分传统岗位,同时AI相关技术岗位(尤其是大模型方向)需求激增,已成为不争的事实。具备相关技能的人才在就业市场上正变得炙手可热。

行业趋势洞察:

  • 转型加速: 传统IT岗位面临转型压力,拥抱AI技术成为关键。
  • 人才争夺战: 拥有3-5年经验、扎实AI技术功底真实项目经验的工程师,在头部大厂及明星AI企业中的薪资竞争力显著提升(部分核心岗位可达较高水平)。
  • 门槛提高: “具备AI项目实操经验”正迅速成为简历筛选的重要标准,预计未来1-2年将成为普遍门槛。

与其观望,不如行动!

面对变革,主动学习、提升技能才是应对之道。掌握AI大模型核心原理、主流应用技术与项目实战经验,是抓住时代机遇、实现职业跃迁的关键一步。

在这里插入图片描述

01 为什么分享这份学习资料?

当前,我国在AI大模型领域的高质量人才供给仍显不足,行业亟需更多有志于此的专业力量加入。

因此,我们决定将这份精心整理的AI大模型学习资料,无偿分享给每一位真心渴望进入这个领域、愿意投入学习的伙伴!

我们希望能为你的学习之路提供一份助力。如果在学习过程中遇到技术问题,也欢迎交流探讨,我们乐于分享所知。

*02 这份资料的价值在哪里?*

专业背书,系统构建:

  • 本资料由我与MoPaaS魔泊云的鲁为民博士共同整理。鲁博士拥有清华大学学士美国加州理工学院博士学位,在人工智能领域造诣深厚:

    • 在IEEE Transactions等顶级学术期刊及国际会议发表论文超过50篇
    • 拥有多项中美发明专利。
    • 荣获吴文俊人工智能科学技术奖(中国人工智能领域重要奖项)。
  • 目前,我有幸与鲁博士共同进行人工智能相关研究。

在这里插入图片描述

内容实用,循序渐进:

  • 资料体系化覆盖了从基础概念入门核心技术进阶的知识点。

  • 包含丰富的视频教程实战项目案例,强调动手实践能力。

  • 无论你是初探AI领域的新手,还是已有一定技术基础希望深入大模型的学习者,这份资料都能为你提供系统性的学习路径和宝贵的实践参考助力你提升技术能力,向大模型相关岗位转型发展

    在这里插入图片描述在这里插入图片描述在这里插入图片描述

抓住机遇,开启你的AI学习之旅!

在这里插入图片描述

### Transformer模型的训练推理过程详解 #### 1. 模型概述 Transformer 是一种基于自注意力机制(Self-Attention Mechanism)的神经网络架构,最初由 Vaswani 等人在论文《Attention is All You Need》中提出[^2]。它摒弃了传统的循环神经网络(RNN),通过并行化的方式显著提高了计算效率。 --- #### 2. 训练过程 ##### (1)数据准备 在训练过程中,输入序列通常被表示为词嵌入向量的形式,并加上位置编码来保留顺序信息[^1]。目标序列则分为两部分: - **前缀部分**:作为解码器的输入,例如对于目标序列 `"I am a student"`,其前缀可能为 `"<start> I am a"`。 - **后续部分**:作为标签用于监督学习,即 `"student <end>"`[^3]。 ##### (2)输入处理 - 编码器接收源序列 $X$ 并将其转换为上下文表示 $C$。 - 解码器接收目标序列的前缀部分以及来自编码器的上下文表示 $C$,并通过自回归方式预测下一个单词。 ##### (3)损失函数 训练的目标是最小化交叉熵损失函数,该函数衡量预测分布与真实分布之间的差异。具体来说,给定目标序列的真实值 $y_t$ 和模型预测的概率分布 $\hat{y}_t$,损失可以定义如下: $$ L = -\sum_{t} \log(\hat{y}_{t, y_t}) $$ 其中,$\hat{y}_{t, y_t}$ 表示模型对第 $t$ 步骤中的正确单词 $y_t$ 的概率估计[^1]。 ##### (4)掩码操作 为了防止解码器看到未来的信息,在训练期间会应用因果掩码(Causal Mask)。这种掩码确保当前时间步仅能依赖于之前的标记[^2]。 ```python import torch.nn as nn def create_causal_mask(size): mask = (torch.triu(torch.ones(size, size)) == 0).transpose(0, 1) return mask.masked_fill(mask == 0, float('-inf')).masked_fill(mask == 1, 0.) ``` --- #### 3. 推理过程 ##### (1)初始化 在推理阶段,初始输入为目标序列的第一个特殊标记 `<start>`。随后每一步都会生成一个新的标记,并将其附加到已有的序列上形成新的输入。 ##### (2)逐步生成 假设我们已经得到了部分翻译结果 `$Y_1, Y_2, ..., Y_n$`,下一步的任务就是根据这些历史信息预测下一个单词 $Y_{n+1}$。这一过程重复直到遇到终止符 `<end>` 或达到最大长度限制为止。 ##### (3)Beam Search优化 实际应用中常采用束搜索算法代替贪婪策略以提升质量。这种方法维护多个候选路径而非单一最佳选项,从而增加找到更优解的可能性。 ```python from typing import List class BeamSearch: def __init__(self, beam_width: int): self.beam_width = beam_width def search(self, model_output: List[float]) -> str: candidates = [] for i in range(len(model_output)): prob = model_output[i] word = f"word{i}" candidates.append((prob, word)) top_k = sorted(candidates, key=lambda x:x[0], reverse=True)[:self.beam_width] return ' '.join([item[1] for item in top_k]) ``` --- #### 4. 总结对比 | 特性 | 训练过程 | 推理过程 | |--------------|----------------------------------------------------------------------------------------------|----------------------------------------------------------------------------| | 输入形式 | 使用真实的前缀序列 | 初始为 `<start>`,之后动态更新 | | 输出形式 | 预测整个目标序列 | 每次只预测单个令牌 | | 主要挑战 | 数据平行性和梯度消失 | 效率低下;需引入加速技术如缓存中间状态 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员一粟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值