5. 自然语言处理NLP - Transformer

1)是什么

🌟 想象一下:你正在读一本小说,突然看到一句话:"他把钥匙插进锁孔,门开了。"

你会立刻明白"钥匙"和"锁孔"是关联的,"门开"是因为"插钥匙"。

这种"理解词与词之间的关系"的能力,就是 Transformer 要做的事儿。

Transformer 是一种深度学习模型架构 ,它通过 "注意力机制(Attention)" 来捕捉输入序列中不同位置之间的依赖关系。

📌 它不是算法,而是一种"设计思路"------就像"卷积神经网络"是一种结构一样。

✅ 核心特点:

  • 不依赖 RNN(循环神经网络),所以可以并行处理,速度快;
  • 用"自注意力机制"(Self-Attention)自动判断哪些词更重要;
  • 支持长距离依赖(比如句子开头和结尾的关系)。

🧠 类比:

如果说 RNN 是一个慢吞吞的读者,一字一句地读下去;

那么 Transformer 就像一个聪明的阅读者,一眼扫过整句话,直接抓住重点。

2)为什么

🚀 答案就两个字:高效 + 准确

✅ 为什么它能火?

  • 告别顺序处理

传统 RNN 必须从左到右一步步计算,不能并行 → 慢。

Transformer 全部词一起算 → 可以用 GPU 并行加速,训练快得多!

  • 注意力机制更聪明

它能动态关注每个词在上下文中的重要性。

比如:"我爱北京天安门",模型会知道"北京"和"天安门"有关联,即使中间隔了词。

  • 长文本也能处理

RNN 在长句中容易"遗忘"前面的信息(梯度消失)。

Transformer 通过注意力,哪怕相隔几十个词,也能建立联系。

  • 通用性强

不仅用于 NLP,还能做图像(ViT)、语音、代码分析......

现在的 GPT、BERT、ChatGPT 都基于它!

🎯 所以说:

Transformer 是一场"模型结构革命" ------ 它让 AI 学习语言的方式,从"顺序记忆"变成了"全局理解"。

3)什么时候用

📌 当你需要处理 序列数据,尤其是:

✅ 适合使用 Transformer 的情况:

场景 例子
文本生成 写文章、写故事、写代码(如 GPT)
机器翻译 中英互译(Google Translate 用的就是它)
文本分类 情感分析、垃圾邮件识别
问答系统 "李白是谁?"、"如何煮饭?"
命名实体识别 从句子中找出人名、地名、时间
长文本理解 分析法律文书、科研论文

💡 特别提示:

如果你的数据是 序列型(文字、语音、时间序列),并且需要 理解上下文关系,那 Transformer 很可能是你的首选。

4)什么时候不用

虽然 Transformer 强大,但它也不是万能药。有些时候,它反而"水土不服"。

❌ 不推荐使用的情况:

  • 数据量太小

    • Transformer 参数多(动辄上亿),需要大量数据才能训练好。
    • 小数据集上容易过拟合,不如 LSTM 或简单模型。
  • 实时性要求极高

    • 虽然推理快了,但复杂模型仍需时间。
    • 比如自动驾驶中每毫秒都关键,可能更适合轻量级模型。
  • 硬件资源有限

    • 训练一个 Transformer 需要 GPU/TPU,成本高。
    • 移动端、嵌入式设备上部署困难。
  • 任务不需要上下文理解

    • 比如简单的关键词匹配、规则匹配,用正则表达式就够了。
  • 因果推理或时序预测

    • 对于纯时间序列(如股票价格),RNN/LSTM 或专门的时间序列模型(如 LSTM、TCN)可能更合适。

📌 总结一句话:

Transformer 是"智能大脑",但不是"万能工具"。

用它前先问:我有没有足够数据?能不能承受它的开销?是否真的需要"理解上下文"?

5)总结

  • 它是一个革命性的模型架构,靠"注意力机制"让 AI 更懂上下文。
  • 它快、准、强,是现代大模型(如 GPT、BERT)的基础。
  • 但它不是万能的------数据少、资源紧、任务简单时,别盲目堆它。

🎯 一句口诀,记住它:

"注意力在手,上下文我有;数据够大,才敢用它走。"

概念

1. 思想与架构

1.1 论文思想

《Attention is All You Need》是深度学习和自然语言处理(NLP)领域具有里程碑意义的一篇论文,由 Google Brain 和 Google Research 团队于 2017 年发表。

✅ 论文的影响力主要体现在4个方面

  • 开创性:该论文首次提出完全基于注意力机制(Attention Mechanism)的神经网络架构------Transformer,摒弃了传统序列模型中广泛使用的循环神经网络(RNN)和卷积神经网络(CNN)。
  • 影响力巨大:Transformer 架构成为此后几乎所有主流 NLP 模型(如 BERT、GPT、T5、RoBERTa 等)的基础,极大推动了预训练语言模型的发展。
  • 效率与性能兼优:相比 RNN,Transformer 具有更强的并行计算能力,训练速度更快,同时在机器翻译等任务上取得了当时最先进的性能(SOTA)。
  • 跨领域影响:不仅限于 NLP,Transformer 后来也被成功应用于计算机视觉(如 Vision Transformer)、语音识别、生物信息学等多个领域。

✅ 论文的核心观点主要为

  • 抛弃 RNN/CNN,仅用注意力机制建模序列:作者指出,传统的序列模型依赖递归或卷积结构来捕捉上下文关系,但这些结构难以并行化且长距离依赖建模能力有限。而**自注意力机制(Self-Attention)**可以直接建模序列中任意两个位置之间的依赖关系,无论距离远近。
  • 提出 Transformer 架构:
    • 由编码器(Encoder)和解码器(Decoder)组成,每层包含多头自注意力(Multi-Head Self-Attention)和前馈神经网络(Feed-Forward Network)。
    • 引入位置编码(Positional Encoding),以弥补注意力机制本身不具备顺序信息的缺陷,将序列的位置信息注入输入嵌入中。
    • 使用多头机制增强模型对不同子空间信息的捕捉能力。
  • 高效并行训练:由于不再依赖逐步处理序列(如 RNN 的时间步展开),Transformer 可以在训练时完全并行化,显著提升训练效率。
  • 实证效果优异:在 WMT 2014 英德和英法机器翻译任务上,Transformer 不仅达到或超越了当时所有模型的性能,而且训练成本更低(所需 FLOPs 更少)。

🎯 简言之,论文的核心主张是:"只要有合适的注意力机制,就不需要 RNN 或 CNN 来处理序列数据。" 这一理念彻底改变了深度学习处理序列任务的方式。

1.2 概览

根据上图,我们得出Transformer的一个基本整体结构:

自下而上分别是输入层,编码器层、解码器层、输出层

Transformer 的整体结构延续了 Seq2Seq 模型中 "编码器-解码器" 的设计理念,其中,编码器(Encoder)负责对输入序列进行理解和表示,而解码器(Decoder)则根据编码器的输出逐步生成目标序列。

与基于 RNN 的 Seq2Seq 模型一样,Transformer 的解码器采用自回归方式 生成目标序列。不同之处在于,每一步的输入是此前已生成的全部词,模型会输出一个与输入长度相同的序列,但我们只取最后一个位置的结果作为当前预测。这个过程不断重复,直到生成结束标记 。

此外,Transformer 的编码器和解码器模块分别由多个结构相同的层堆叠而成。通过层层堆叠,模型能够逐步提取更深层次的语义特征,从而增强对复杂语言现象的建模能力。标准的 Transformer 模型通常包含 6个编码器层和 6 个解码器层。

2. 编码器

🌟 目标:将输入的词序列(如"我喜欢猫")转化为一个富含语义信息的向量序列,为后续任务(如翻译、分类)做准备。

编码器由 N 个相同的层堆叠而成(通常 N=6),每层包含两个核心子层:

  • 自注意力子层(Self-Attention Sublayer)
  • 前馈神经网络子层(Feed-Forward Network)
    每个子层后都接上 残差连接 + 层归一化,保证训练稳定。

2.1 概述

🔍 类比:想象你在读一本小说,想理解整段话的意思。

你会先看每个词之间的关系(谁和谁有关?),再对每个词进行深入思考(这个词到底什么意思?)。

这就是编码器做的两件事:

  • 自注意力 → 找关系
  • 前馈网络 → 深加工

✅ 流程描述(简化版):

输入 → 位置编码 → [自注意力 → 残差 + 归一化] → [前馈网络 → 残差 + 归一化] → 下一层

⚠️ 注意:所有层结构相同,只是参数不同。

2.2 自注意力子层

🎯 核心思想:让模型学会"关注"哪些词更重要。
基本原理:Query, Key, Value

  • Query(查询):当前词想知道什么?
  • Key(键):其他词的身份特征
  • Value(值):其他词的实际含义

✅ 计算方式:

🧠 类比:你正在参加一场"相亲大会",每个人都是一个词。

  • 你的"Query"是:"我想找一个能聊天的人。"
  • 别人的"Key"是:"我是程序员,爱打游戏。"
  • "Value"是他们的具体信息(性格、爱好等)
  • 你根据匹配度给每个人打分,然后决定跟谁聊。

📌 关键点:每个词都能"看到"整个句子,不依赖顺序!

2.2.1 多头自注意力子层

💡 为什么需要"多头"?

因为单个注意力头只能从一个角度理解句子,而语言是复杂的,需要多种视角。

🧩 工作流程:

  • 将输入向量分成 H 个"头"(例如 H=8)
  • 每个头有自己的线性变换矩阵 W_Q, W_K, W_V
  • 每个头独立计算注意力:
    • head_i = Attention(QW_i^Q, KW_i^K, VW_i^V)
  • 把所有头的输出拼接起来:Concat(head₁, ..., head₈)
  • 再通过一个线性层映射回原始维度
    • MultiHead(Q,K,V) = Concat(head₁,...,head_h)W^O

🎭 生动比喻:

想象你是一个侦探,要破案。你不会只用一种方法分析线索:

  • 一个头关注"时间线"(谁什么时候出现?)
  • 一个头关注"动机"(谁最可能作案?)
  • 一个头关注"物证"(指纹、DNA)
  • 一个头关注"关系网"(谁和谁有矛盾?)

✅ 最终,你把所有线索综合起来,得出完整结论。

🌐 真实例子:

在句子 "The cat sat on the mat." 中:

  • 一个头可能发现 "cat" 和 "sat" 是主谓关系
  • 另一个头可能发现 "on" 和 "mat" 是介宾关系
  • 第三个头可能注意到 "the" 是冠词,修饰名词

⭐ 结果:模型能同时捕捉语法、语义、逻辑等多种信息。

🔍 为什么多头更好?

优势 解释
✅ 多视角理解 不同头关注不同方面,避免单一偏差
✅ 更强表达力 能学习更复杂的模式
✅ 参数共享 所有头共用输入,不增加太多参数
✅ 并行计算 多个头可以并行处理,效率高

📌 注意:虽然叫"多头",但每个头的维度通常会缩小(比如总维度512,8个头 → 每个头64维),保持整体计算量可控。

2.3 前馈神经网络层

🔄 这是编码器的第二部分:对每个词单独进行非线性变换。

🧱 结构:

  • 两层全连接网络
  • 中间使用 ReLU 激活函数
  • 每个位置独立处理(不考虑上下文)

✅ 公式:

FFN(x) = max(0, xW₁ + b₁)W₂ + b₂

🧠 类比:就像你在听了一段话后,心里默默"咀嚼"一遍,形成更深层次的理解。

⚠️ 注意:前馈网络不关心词之间的关系,它只负责"深化"每个词的表示。

✅ 它的作用类似于"特征提取器":把注意力层输出的向量进一步压缩和增强。

2.4 残差连接与层归一化

🛠 这是 Transformer 的"稳定器"组合!

🔗 残差连接(Residual Connection)

把原始输入直接加到输出上:

Output = Layer(input) + input

✅ 作用:

  • 防止梯度消失
  • 让信息可以"跳跃"传递
  • 便于训练更深的网络

🎯 类比:就像你在爬山时,有一条"捷径"可以直接跳过几级台阶,省力又快。

🧼 层归一化(Layer Normalization)

对每个样本的所有特征进行归一化,使数值分布稳定。

✅ 作用:

  • 加速训练收敛
  • 提高模型鲁棒性
  • 减少内部协变量偏移
    📌 注意:不是 BatchNorm,而是 LayerNorm ------ 对每个样本独立归一化。

2.5 小结

组件 功能 生动类比
多头自注意力 从多个角度理解句子 一群专家同时分析一个问题
前馈网络 深度加工每个词 心里反复咀嚼
残差连接 信息快速传递 跳台阶的小路
层归一化 稳定训练 给数据"洗个澡"

✅ 整体流程(一层编码器):

  • 输入 + 位置编码
  • 多头自注意力 → 残差 → 层归一化
  • 前馈网络 → 残差 → 层归一化
  • 输出给下一层

🌟 最终效果:

经过6层编码器后,输入句子被转换为一个富含全局语义信息的向量序列,为后续解码器或分类任务做好准备。

3. 解码器

🌟 目标:根据编码器的输出和已生成的部分结果,逐步预测下一个词。

🔍 类比:想象你在写作文,一边看题目(编码器输出),一边写下一句。

你不能提前看到后面的内容,只能依赖前面已经写的句子。

✅ 结构:解码器也由 N 个相同的层堆叠而成(通常 N=6),每层包含 三个子层:

  • 掩码自注意力子层(Masked Self-Attention)
  • 交叉注意力子层(Cross-Attention)
  • 前馈神经网络子层

每个子层后都接上 残差连接 + 层归一化

3.1 概述

🎯 解码器的任务是:从左到右逐词生成输出序列。

🧠 举个例子:

  • 输入:"I love you"
  • 输出:"我爱你"

解码器会一步步生成:

  • 预测第一个字:"我"
  • 已知"我",预测第二个字:"爱"
  • 已知"我爱",预测第三个字:"你"

⚠️ 关键限制:不能"偷看"未来

✅ 因此,解码器引入了 掩码机制(Masking),确保每个位置只能看到自己及之前的词。

📌 总体流程(一层解码器):

输入 → 掩码自注意力 → 残差 + 归一化

→ 交叉注意力 → 残差 + 归一化

→ 前馈网络 → 残差 + 归一化

3.2 掩码自注意力子层

🎯 目标:让解码器在生成当前词时,只关注之前已经生成的词。

🔍 为什么需要"掩码"?

因为解码器是自回归(autoregressive)的:它必须按顺序生成词。

❌ 如果允许"偷看"未来词,模型就会作弊,比如直接复制答案。

✅ 掩码的作用:将未来词的注意力权重设为负无穷,使其在 softmax 后变为 0。

🎯 类比:就像你在考试时,答题卡上的空格是按顺序填的,你不能跳过第2题去写第3题。

🧩 实现方式:

  • 构造一个"上三角矩阵"(Upper Triangular Matrix)
  • 对于位置 i,只允许它看到位置 0 到 i
  • 其他位置被掩码掉

📌 注意:掩码是在计算注意力分数时应用的,不影响输入。

3.2.1 多头掩码自注意力子层

💡 和编码器一样,解码器也使用 多头机制,但每个头都加上了掩码。

✅ 流程:

  • 每个头独立计算 Q、K、V
  • 计算注意力时应用掩码
  • 拼接所有头输出 → 线性变换

🧠 类比:一群侦探在破案,每个人只能看到案件的前半部分,不能提前知道结局。

⭐ 效果:模型能从多个角度理解已生成的上下文,同时避免信息泄露。

3.3 交叉注意力子层

🎯 目标:让解码器"倾听"编码器的输出,获取源语言的信息。

✅ 这是解码器与编码器之间的"桥梁"。

🔍 什么是交叉注意力?

  • Query 来自解码器的隐藏状态(当前正在生成的词)

  • KeyValue 来自编码器的输出(源语言的语义表示)

    🧠 类比:你正在翻译一句话,手边有原文和笔记。

  • 你的"Query"是:"我要翻译'love'这个词"

  • "Key"是原文中每个词的含义

  • "Value"是这些词的语义向量

  • 你通过匹配找到最相关的词,比如"爱"

✅ 公式简化:

🌐 举个例子:

  • 编码器处理了 "I love you"
  • 解码器在生成 "爱" 时,会问:"哪个词和'love'最相关?"
  • 它发现编码器中 "love" 的表示最强 → 所以选择"爱"

3.3.1 多头交叉注意力子层

💡 同样使用多头机制,让解码器从多个角度"倾听"编码器。

✅ 每个头独立计算注意力,最后拼接输出。

🎯 类比:你不是只靠一个线索翻译,而是从语法、情感、语境等多个角度综合判断。

⭐ 效果:增强解码器对源语言的理解能力,提升翻译质量。

3.4 小结

✅ 整体流程(一层解码器):

组件 功能 生动类比
掩码自注意力 只看已生成的词 考试时不能偷看答案
交叉注意力 倾听编码器输出 翻译时参考原文
多头机制 多角度分析 一群专家共同决策
前馈网络 深度加工 心里反复咀嚼
残差 + 归一化 稳定训练 给数据"洗个澡"
  • 输入(已生成的词序列)→ 加上位置编码
  • 掩码自注意力 → 残差 + 归一化
  • 交叉注意力 → 残差 + 归一化
  • 前馈网络 → 残差 + 归一化
  • 输出给下一层

🌟 最终效果:解码器能结合源语言信息和已有输出,逐步生成目标语言序列。

4. 输入层与输出层

4.1 输入层

🎯 作用:将输入的词序列转换为可处理的向量表示。

4.1.1 位置编码

❓ 问题:Transformer 没有循环结构(不像 RNN),那它怎么知道词的顺序?

✅ 答案:加位置编码!

🔧 什么是位置编码?

一种向每个词的位置赋予唯一向量的方法,告诉模型:"我是第几个词。"

🧠 类比:就像给每个字贴个"身份证号码"------"我是在第3个位置出现的"。

📐 实现方式:

使用 正弦和余弦函数 构造周期性编码:

python 复制代码
PE(pos, 2i) = sin(pos / 10000^(2i/d))
PE(pos, 2i+1) = cos(pos / 10000^(2i/d))

✅ 特点:

  • 不同位置有不同的编码
  • 能捕捉相对位置关系(比如"第i个词距离第j个词多远")
  • 可以扩展到任意长度的序列

🎯 举个例子:

  • "我" → 第1位 → 编码A
  • "爱" → 第2位 → 编码B
  • "猫" → 第3位 → 编码C

⭐ 效果:即使没有 RNN,模型也能感知顺序。

🚫 注意:位置编码是固定的(或可学习),但通常用固定版本,因为它能泛化到更长序列。

💡 小彩蛋:为什么不用 one-hot?

因为 one-hot 是稀疏的,无法表达"相邻位置"的关系。而正弦编码是连续的,能自然地体现位置差异。

4.2 输出层

🎯 作用:将解码器最后一层的输出转换为概率分布,预测下一个词。

🧱 结构:

~线性层(Linear Layer)

  • 将隐藏状态映射到词汇表大小的维度
  • 比如:512维 → 词汇表大小(如 30000 维)

~SoftMax 函数

  • 将输出转换为概率分布
  • 每个词的概率表示模型认为它是下一个词的可能性

5. 模型训练与推理机制

自回归生成机制,又叫因果生成机制。Transformer 的训练与推理都基于自回归生成机制(Autoregressive Generation):模型逐步生成目标序列中的每一个词。然而,在实现方式上,训练与推理存在明显区别。

5.1 模型训练

训练时,Transformer 将目标序列整体输入解码器,并在每个位置同时进行预测。为防止模型"看到"后面的词,破坏因果顺序,解码器在自注意力机子层中引入了 遮盖机制(Mask),限制每个位置只能关注它前面的词。

这种机制让模型在结构上模拟逐词生成,但在实现上能充分利用并行计算,大幅提升训练效率。

5.2 模型推理

推理时,每一步都要重新输入整个已生成序列,模型需要基于全量前文重新计算注意力分布,决定下一个词的输出。整个过程必须顺序执行,无法并行。

推理阶段,模型每一步都要重新输入当前已生成的全部词,通过自注意力机制建模上下文关系,预测下一个词。

模型会基于完整前文重新计算注意力分布,生成当前步的输出。由于每一步的输入依赖前一步结果,整个过程必须顺序执行,无法并行

每步输出的是一个词的概率分布,最终生成结果也可使用不同的解码策略(如贪心搜索、束搜索等)。

5.3 掩码机制

是否必须,比如左侧编码器的多头自注意层的是非必须的,而右侧的解码器的多头掩码自注意层是必须的

核心作用

掩码(Mask)是 Transformer 模型中的"视线控制器"------它告诉模型:"你现在能看到哪些词?不能看哪些?"

"左侧编码器是否必须?" ------ 关键在于模型结构

这句话其实是在对比两种主流架构:

模型类型 编码器 解码器 是否需要掩码? 为什么?
BERT (双向编码器) ✅ 有 ❌ 无 ✅ 需要填充掩码 要预测被遮住的词,所以要用 [MASK]
GPT (自回归解码器) ❌ 无 ✅ 有 ✅ 需要因果掩码 生成时只能看到过去,不能"偷看"未来

🔍 所以说:

  • "左侧的编码器是非必须的" → 是指像 GPT 这类纯解码器模型,没有编码器;
  • "右侧的解码器是必须的" → 因为生成文本必须一步步预测,依赖因果关系。

✅ 结论:掩码机制不是"有没有",而是"怎么用"。

1️⃣ 填充掩码 ------ 处理长度不一致

🧩 问题:

训练时,每句话长短不同。比如:

  • "我爱学习"(4个字)
  • "今天天气很好,我很开心"(8个字)

为了统一输入格式,我们需要把短句补全到固定长度。

🛠️ 解决方案:

用 标记填充空白位置。

我, 爱, 学, 习, \, \, \, \

⚠️ 但注意:

  • 模型不该"认真对待"这些 字符。
  • 所以我们要对它们做掩码处理,让模型在计算注意力时忽略它们。

💡 类比:就像你抄作业时,老师给你一张纸,上面写了几个字,后面都是空格。你不会去思考那些空格的意思,对吧?

👉 所以 PAD 掩码的作用是:防止模型误读填充部分


2️⃣ 因果掩码(Causal Masking)------ 实现自回归生成
🧩 问题:

在生成文本时,模型不能"预知未来"。比如:

  • 当前输入:"今天天气很"
  • 模型要预测下一个词:"好"

但如果模型能看到"好"这个词,那它就作弊了!

🛠️ 解决方案:

使用 因果掩码(也叫"三角掩码"),让每个位置只能看到自己及之前的词。

📊 注意力矩阵示例(简化版):

  • 对角线以下为 1(可看)
  • 上方为 0(不可看)

💡 类比:像写日记,你只能写已经发生的事,不能提前写下个月的剧情。

✅ 因果掩码确保了:生成过程是顺序进行的,符合语言的自然流。

总结对比表

掩码类型 用途 使用场景 是否必需 示例
填充掩码 <PAD> 忽略填充内容 批量处理不同长度序列 ✅ 必须(当使用 batch 时) BERT、GPT 都用
因果掩码 防止"偷看未来" 自回归生成 ✅ 在解码器中必须 GPT、T5 的生成阶段
双向掩码 允许看前后文 理解任务 ✅ 在编码器中常用 BERT 的训练

🔄 所以,"左侧编码器非必须"是因为有些模型不需要理解整个句子(如 GPT),而"右侧解码器是必须的"是因为生成必须按顺序走。

6. API

PyTorch 提供了对 Transformer 架构的官方实现,封装了完整的编码器-解码器结构,可直接用于机器翻译、文本生成等典型的序列建模任务。该实现由以下核心类组成:

  • nn.Transformer:
    作为顶层接口,完整封装了 Transformer 的编码器-解码器架构,适用于需要同时使用编码器和解码器的任务(如机器翻译)。用户可通过参数灵活配置模型结构,包括层数、注意力头数、隐藏维度等。
  • nn.TransformerEncoder:
    实现完整的 Transformer 编码器,由多个编码器层堆叠而成,用于将输入序列转换为上下文相关的表示。
  • nn.TransformerDecoder:
    实现完整的 Transformer 解码器,由多个解码器层堆叠而成,用于根据编码器输出逐步生成目标序列。
  • nn.TransformerEncoderLayer:
    定义单个编码器层,包含一个多头自注意力子层和一个前馈神经网络子层,每个子层均配备残差连接和 LayerNorm。
  • nn.TransformerDecoderLayer:
    定义单个解码器层,包含三个子层:自注意力、编码器-解码器注意力以及前馈神经网络,同样采用残差连接和 LayerNorm 结构。

问题:Hugging Face 的 Transformers 库和 PyTorch 内置的 torch.nn.Transformer的区别?

虽然都与 Transformer 架构相关,但它们在目标、功能、易用性和应用场景上有显著区别。以下是主要差异的对比:

项目 Hugging Face Transformers PyTorch nn.Transformer
定位 高级 NLP 工具包,提供大量预训练模型(如 BERT、GPT、T5 等) 低层神经网络模块,仅实现原始 Transformer 架构
目标用户 NLP 研究者、工程师,希望快速使用 SOTA 模型 深度学习开发者,希望从零构建或自定义 Transformer

功能范围

  • Hugging Face Transformers:
    • 提供 数百个预训练模型(支持 TensorFlow 和 PyTorch)。
    • 包含 Tokenizer、Model、Trainer、Pipeline 等完整工具链。
    • 支持 微调(fine-tuning)、推理、模型上传/下载(Hub 集成)。
    • 自动处理输入格式(如 attention mask、position IDs 等)。
  • PyTorch nn.Transformer:
    • 仅提供 基础的 Transformer 编码器-解码器结构(基于 Vaswani et al., 2017)。
    • 不包含 Tokenizer、预训练权重、任务头(如分类头、语言模型头)。
    • 需要用户自己实现数据预处理、位置编码、训练循环等。

灵活性与开箱即用

PyTorch nn.Transformer 更灵活,适合研究新架构或教学。

Hugging Face Transformers 更"开箱即用",适合实际 NLP 任务(如文本分类、问答、摘要等)。

相关推荐
木头程序员17 小时前
机器学习概述:核心范式、关键技术与应用展望
大数据·人工智能·机器学习·回归·聚类
摸鱼仙人~17 小时前
使用 BERT 系列模型实现 RAG Chunk 分类打标
人工智能·分类·bert
c76917 小时前
【文献笔记】Mixture-of-Agents Enhances Large Language Model Capabilities
人工智能·笔记·语言模型·自然语言处理·论文笔记·提示工程
我的offer在哪里17 小时前
Unsloth,为大语言模型(LLM)微调设计的高效开源框架
人工智能·语言模型·开源
zhengfei61117 小时前
【AI工具】——人工智能驱动的自动化网络安全威胁检测平台
人工智能·web安全·自动化
2503_9469718617 小时前
【BruteForce/Pruning】2026年度物理层暴力破解与神经网络剪枝基准索引 (Benchmark Index)
人工智能·神经网络·算法·数据集·剪枝·网络架构·系统运维
~央千澈~17 小时前
AI音乐100%有版权的路劲是什么?AI音乐的版权处理卓伊凡
人工智能
攻城狮7号17 小时前
AI时代时序数据库进化论:此时序非彼时序,选型逻辑变了
人工智能·iotdb·ai数据库·时序大模型·ainode
源码师傅17 小时前
AI短剧创作系统源码 开发语言:PHP+MySQL 基于uniapp 无限SAAS多开源码
人工智能·php·短剧小程序开发·ai短剧创作系统源码·ai短剧创作系统·短剧原创制作软件