Transformer 是一种基于自注意力(Self-Attention)机制的深度学习模型架构,由 Vaswani 等人在 2017 年的论文

一文搞懂Transformer与Self-Attention,讲解神经网络算法最好的一篇文章! VIT模型(Vision Transformer),这是一篇Google于2021年发表在计算机视觉顶级会议ICLR上的一篇文章。它首次将Transformer这种发源于NLP领域的模型引入到了CV领域,并在ImageNet数据集上击败了当时最先进的CNN网络。这是一个标志性的网络,代表transformer击败了CNN和RNN,同时在CV领域和NLP领域达到了统治地位,此后基本在ImageNet排行榜上都是基于transformer架构的模型了。 阅读详情

Transformer 是一种基于自注意力(Self-Attention)机制的深度学习模型架构,由 Vaswani 等人在 2017 年的论文《Attention is All You Need》中首次提出。它摒弃了传统 RNN/CNN 的序列建模方式,完全依赖注意力机制捕捉输入序列中任意位置之间的依赖关系,具有并行化训练强、长程依赖建模能力强、可扩展性好等优势。Transformer 由编码器(Encoder)和解码器(Decoder)两大部分组成,每部分均由多层堆叠的子模块构成:

  • 编码器层:包含多头自注意力(Multi-Head Self-Attention)和前馈神经网络(Feed-Forward Network),每层后接残差连接与层归一化(LayerNorm);
  • 解码器层:在编码器基础上增加一个“编码器-解码器交叉注意力”子层,用于关注编码器输出,并通过掩码(Masked Self-Attention)确保预测时仅依赖已生成的前序词元(causal masking)。

其核心组件——缩放点积注意力(Scaled Dot-Product Attention)计算公式为:
[
\text{Attention}(Q,K,V) = \text{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right)V
]
其中 (Q, K, V) 分别为查询、键、值矩阵,(d_k) 是键向量维度,缩放防止内积过大导致 softmax 梯度饱和。

Transformer 已成为现代大语言模型(如 BERT、GPT、LLaMA、Qwen)的基础架构,广泛应用于机器翻译、文本生成、语音识别、图像理解(ViT)等领域。

import torch
import torch.nn as nn

class MultiHeadAttention(nn.Module):
    def __init__(self, d_model=512, num_heads=8, dropout=0.1):
        super().__init__()
        assert d_model % num_heads == 0
        self.d_k = d_model // num_heads
        self.num_heads = num_heads
        self.W_q = nn.Linear(d_model, d_model)
        self.W_k = nn.Linear(d_model, d_model)
        self.W_v = nn.Linear(d_model, d_model)
        self.W_o = nn.Linear(d_model, d_model)
        self.dropout = nn.Dropout(dropout)

    def forward(self, q, k, v, mask=None):
        batch_size = q.size(0)
        # Linear projections and reshape: (batch, seq, d_model) → (batch, num_heads, seq, d_k)
        q = self.W_q(q).view(batch_size, -1, self.num_heads, self.d_k).transpose(1, 2)
        k = self.W_k(k).view(batch_size, -1, self.num_heads, self.d_k).transpose(1, 2)
        v = self.W_v(v).view(batch_size, -1, self.num_heads, self.d_k).transpose(1, 2)

        # Scaled dot-product attention
        scores = torch.matmul(q, k.transpose(-2, -1)) / (self.d_k ** 0.5)
        if mask is not None:
            scores = scores.masked_fill(mask == 0, float('-inf'))
        attn = torch.softmax(scores, dim=-1)
        attn = self.dropout(attn)
        context = torch.matmul(attn, v)

        # Concatenate heads and project
        context = context.transpose(1, 2).contiguous().view(batch_size, -1, self.num_heads * self.d_k)
        return self.W_o(context)

Transformer 模型本身不具备序列顺序感知能力(因其自注意力机制是排列不变的,即打乱输入词元顺序不改变输出),因此必须显式注入位置信息。位置编码(Positional Encoding, PE)正是为解决这一问题而设计的。

为什么使用正弦/余弦函数?

Vaswani 等人提出固定形式的正弦/余弦位置编码,其第 (pos) 个位置、第 (i) 维的编码定义为:

[
PE_{(pos, 2i)} = \sin\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right), \quad
PE_{(pos, 2i+1)} = \cos\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right)
]

这种设计具有以下关键优势:

  1. 可泛化到更长序列:
    正弦函数具有周期性与平滑性,模型可通过线性组合(如注意力权重)隐式学习相对位置关系(如“(pos+1) 相对于 (pos)”)。实验表明,训练时用 512 长度训练的模型,在推理时可外推至 >1000 长度(虽性能略降),而纯可学习嵌入在未见长度上完全失效。

  2. 支持相对位置建模:
    利用三角函数恒等式(如 (\sin(\alpha+\beta), \cos(\alpha+\beta)) 可表示为 (\sin\alpha,\cos\alpha,\sin\beta,\cos\beta) 的线性组合),理论上任意两个位置的相对偏移可被同一组权重线性表出——这为模型理解“距离”提供了数学基础。

  3. 无需额外参数 & 确定性:
    避免引入可训练参数,减少过拟合风险;且每次运行结果一致,利于调试与部署。

  4. 与词嵌入维度对齐且归一化良好:
    各维振幅恒为 1,避免某维主导,有利于优化稳定性。


能否用可学习的位置嵌入(Learned Position Embedding)替代?

✅ 完全可以,且在实践中广泛使用(尤其在 BERT、ViT、大多数现代 LLM 中)。
例如:BERT 将 [CLS] + token embeddings + position embeddings 三者相加后输入 Encoder,其中 position embedding 是一个形状为 (max_len, d_model) 的可训练张量(如 nn.Embedding(max_position_embeddings, hidden_size))。

🔹 优点:

  • 更灵活,能适配任务特定的位置模式(如代码中的缩进层级、表格中的行列结构);
  • 训练数据充足时,往往比固定 PE 表现更好(尤其在中等长度序列上);
  • 实现简单,与词嵌入统一管理。

🔹 缺点:

  • 无法外推:若训练最大长度为 512,推理时输入 1024 长度,则超出索引会报错或需插值(通常导致性能骤降);
  • 引入额外参数(约 (L \times d)),增大内存与计算开销(对超长上下文不友好);
  • 缺乏显式的归纳偏置,模型需从头学“什么是位置”,样本效率略低。

📌 实际趋势:

  • Decoder-only 模型(如 GPT 系列):早期 GPT-2 用正弦 PE,GPT-3 开始转向可学习 PE(配合 ALiBi 等外推技术);
  • Encoder-only 模型(如 BERT):默认可学习 PE;
  • 长上下文增强方案:常结合两者思想,如 RoPE(Rotary Position Embedding)、ALiBi(Attention with Linear Biases)、YaRN(扩展 RoPE 外推能力)等,既保持外推性,又提升表达力。
# 示例:可学习位置嵌入(PyTorch)
class LearnedPositionEmbedding(nn.Module):
    def __init__(self, max_len: int, d_model: int):
        super().__init__()
        self.pe = nn.Embedding(max_len, d_model)
        self.register_buffer('position_ids', torch.arange(max_len).expand((1, -1)))

    def forward(self, x):  # x: (batch, seq_len, d_model)
        pos_ids = self.position_ids[:, :x.size(1)]
        return x + self.pe(pos_ids)

# 示例:正弦位置编码(固定,无参)
def get_sinusoidal_pe(max_len: int, d_model: int):
    pe = torch.zeros(max_len, d_model)
    position = torch.arange(0, max_len, dtype=torch.float).unsqueeze(1)
    div_term = torch.exp(torch.arange(0, d_model, 2).float() * (-math.log(10000.0) / d_model))
    pe[:, 0::2] = torch.sin(position * div_term)
    pe[:, 1::2] = torch.cos(position * div_term)
    return pe.unsqueeze(0)  # (1, max_len, d_model)

在这里插入图片描述

从零手撕Transformer:自注意力机制与PyTorch实现详解 理解 Transformer 的核心原理是进入现代大模型世界的钥匙。无论是想深入理解 ChatGPT、GPT-4 等大语言模型,还是想学习 Vision Transformer、Swin Transformer 等视觉模型,亦或是想自己动手实现一个简易的 Transformer,都绕不开对其基础架构和核心思想的透彻掌握。本文将从零开始,系统性地拆解 Transformer 的每一个组件,结合数学公式、代码示例和直观解释,让你不仅能“看懂”,更能“手撕”一个 Transformer。我们将从 RNN 的瓶颈讲 阅读详情

相关推荐

从感知机到Transformer:深度学习五次跃迁的技术考古

神经网络是模拟生物神经元信息处理机制的计算模型,其核心原理在于通过加权求和与非线性激活实现特征变换,并借助梯度下降优化参数。这一技术的价值不仅在于强大的模式识别能力,更在于它将高维非线性问题映射到可学习的参数空间,从而支撑图像识别、自然语言处理等关键应用。从1957年单层感知机的阈值决策,到2017年Transformer的自注意力机制,演进主线始终围绕‘如何更高效地建模数据内在结构’展开。本文聚焦真实硬件约束下的算法落地过程,结合在线学习规则、反向传播、卷积先验、残差连接与注意力机制五大里程碑,还原每一次

weixin_30664615的博客 375

超详解!Transformer + self-attention

‍‍点击上方“机器学习与生成对抗网络”,关注星标获取有趣、好玩的前沿干货!来源https://zhuanlan.zhihu.com/p/432814387作者Ziyang Li 东北电力大...

idol24的博客 2451

codemirror6 制作markdown编辑器(源码模式)

总体上感觉能用,但是不怎么友好,官方文档有点散乱,而且关键字高亮功能是独立出去的,去官方文档找半天,也没找到怎么改。EditorView.theme可以往EditorView模块中修改CSS的样式,从而影响编辑器的样式展示。"### 测试\n\n```javascript\nlet x = 'y'\n```"这个插件中的markdown语法的高亮样式。//这里指定markdown中代码块使用的解析扩展。开头的class样式,并且还需要在选择器前面添加。//markdown语言解析扩展。

qq_43203949的博客 1783

transformer 模型(self-attention自注意力)

transformer模型在《Attention is all you need》论文中提出 这篇论文主要亮点在于:1)不同于以往主流机器翻译使用基于RNN的seq2seq模型框架,该论文用attention机制代替了RNN搭建了整个模型框架。2)提出了多头注意力(Multi-headed attention)机制方法,在编码器和解码器中大量的使用了多头自注意力机制(Multi-headed s...

ChihkAnchor的博客 8万+

告别配置烦恼!保姆级教程:在Windows 10/11上为QT5.14.2配置MSVC2017编译器(附VS2022组件避坑指南)

本文提供了一份详细的保姆级教程,指导如何在Windows 10/11上为QT5.14.2配置MSVC2017编译器,包括VS2022组件避坑指南。从环境准备到关键配置,再到调试工具验证和Qt Creator中的编译器设置,一步步解决常见问题,帮助开发者快速搭建稳定可靠的开发环境。

weixin_30615767的博客 502

ptrade量化策略之沪深300指数增强

本策略的核心是在沪深300股票池中选股,选择的股票都是市值比较大,业绩比较好的白马股,根据市场相对位置以及基本面因子来选择股票

qq_29301281的博客 1191

Transformer模型简介

简介 Transformer 是 Google 团队在 17 年 6 月提出的 NLP 经典之作, 由 Ashish Vaswani 等人在 2017 年发表的论文 Attention Is All You Need 中提出。 Transformer 在机器翻译任务上的表现超过了 RNN,CNN,只用 encoder-decoder 和 attention 机制就能达到很好的效果,最大的优点是可以高效地并行化。 Transformer 整体结构 首先介绍 Transformer 的整体结构,下图是 Tra

kuokay的博客 2万+

华为OD机试 新系统真题 【最小代价完成论文评审】

华为OD机试 新系统真题【最小代价完成论文评审】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【最小代价完成论文评审】多语言题解。

qq_45776114的博客 443

Transformer之self-attention

注意力是一个有助于提高神经机器翻译应用程序性能的概念。在这篇文章中,我们将看看Transformer,一个使用注意力来提高这些模型训练速度的模型。Transformer在特定任务中优于谷歌神经机器翻译模型。在这篇文章中,我们将尝试简化一些内容,并逐一介绍概念,希望能够让没有深入了解主题的人更容易理解。

wangyifan123456zz的博客 1156

OV5645摄像头原理图设计,已量产

在嵌入式视觉项目里,摄像头小板真正决定量产稳定性的,往往不是把传感器接出来这件事本身,而是电源域有没有拆清、参考时钟够不够干净、主板调试时有没有留出可落地的接口。ATK-MC5645 这张原理图的价值,就在于它没有把 OV5645 裸接到一排连接器上,而是把 AFVDD_2V8、DOVDD_1V8、DVDD_1V5、24MHz 时钟和 MIPI/控制信号都收敛在一块独立模组上。

不脱发的程序猿 333

DCNv4+YOLOv8:2024最新可变形卷积赋能目标检测,从原理到实战的科研级优化指南

从理解DCNv4“自适应变形卷积核”的核心思想,到亲手将其嵌入YOLOv8并验证在复杂场景的检测效果,再到基于此探索属于自己的科研与工程方向——这个过程能让你深刻理解目标检测中“特征自适应提取”的核心价值。现在就开始行动,相信你会在目标检测的“自适应特征提取”之路上,走出一条属于自己的技术路径。实验通常会证明:嵌入DCNv4后,YOLOv8在复杂场景下的检测精度提升3-5个百分点,尤其是小目标和遮挡目标的AP提升更为明显,而推理速度仅下降5%-10%(可通过模型量化进一步优化)。2024年最新推出的。

m0_64661770的博客 268

《Attention is All You Need》:深度解读Transformer模型

本文将首先介绍常见的Attention机制,然后详细解读论文《Attention is All You Need》,该论文在NIPS 2017上发表,标志着Attention机制在NLP领域的一个重要里程碑。论文中提出的Transformer模型,以其独特的架构和优异的性能,已经成为当前NLP任务中的主流模型之一。

Xu_youyaxianshen的博客 6356

【在 WSL2 GUI 中使用 pulseaudio 播放声音】

最近在搞一个Linux项目,由于WSL2中需要用到声音外放,无奈只能潜心研究。后来就使用了一种折中的方式替代,那就是pulseaudio。目前来讲WSL2对硬件外设的支持还是不太友好,关于USB的支持我之前在其他文章中已经论述过了,这里不讨论。1、Windows11别忘记打开声音2、可能有一定延迟,因为是通过网络传输的。3、效果的话只能见仁见智了,如果不能满足要求就安装一个实实在在的Ubuntu吧!

jiexijihe945的博客 4532

什么是 Transformer?从自注意力机制到大语言模型架构基石(One Small Step 技术科普)

Transformer 是由 Vaswani 等人在 2017 年论文 *Attention Is All You Need* 中提出的深度学习模型架构,也是当前几乎所有大语言模型(LLM)的底层基础。本文以 [20250126-what-is-transformer/what-is-transformer.md](https://link.gitcode.com/i/03f4c919694927

gitblog_00354的博客 357

TIBCO Jaspersoft Studio报表开发 使用教程-进阶版

本文学习内容容器定制二级目录三级目录 容器定制 二级目录 三级目录

吉哲的博客 7521

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

深度学习基准模型Transformer

深度学习基准模型Transformer,最初由Vaswani等人在2017年的论文《Attention is All You Need》中提出,是自然语言处理(NLP)领域的一个里程碑式模型。它在许多序列到序列(seq2seq)任务中,尤其是机器翻译,展现了卓越的性能,并逐渐成为处理序列数据的标准架构之一。

1275

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

第TR1周: Transformer 算法详解

Transformer 网络架构由 Ashish Vaswani 等人在 Attention Is All You Need 一文中提出,并用于机器翻译任务,和以往网络架构有所区别的是,该网络架构中,编码器和解码器没有采用 RNN 或 CNN 等网络架构,而是采用完全依赖注意力机制的架构。网络架构如下所示:Transformer改进了RNN被人诟病的训练慢的特点,利用self-attention可以实现快速并行。下面的章节会详细介绍Transformer的各个组成部分。

weixin_43414521的博客 1348

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

一文读懂 Transformer:大模型的核心架构,从 Attention 到 LLM

Transformer是基于注意力机制的深度学习模型架构。相比传统RNN/LSTM的顺序处理方式,Transformer通过自注意力机制让每个词都能直接关注所有其他词,解决了长距离依赖和并行计算问题。其核心是多头注意力机制(Q/K/V)和位置编码,前者能捕捉词语间的多种关系,后者保留位置信息。Transformer具有并行计算能力强、长距离依赖处理优秀、训练速度快等显著优势,成为主流大模型的共同基础架构。Transformer的创新设计使其成为AI领域最重要的模型架构之一。

2302_80089018的博客 250

吴恩达Transformer教程:从自注意力到完整实现的深度学习指南

Transformer架构作为现代深度学习与大语言模型(LLM)的核心基石,其核心机制自注意力通过计算查询、键、值之间的关联,实现了对序列数据的高效建模。这一原理不仅解决了传统RNN的长距离依赖难题,更因其并行计算优势成为自然语言处理、计算机视觉等领域的关键技术。其价值在于为BERT、GPT等模型提供了统一且强大的基础框架,广泛应用于机器翻译、文本生成和视觉分类等场景。本教程聚焦于Transformer的经典实现,通过配套代码与书籍,引导学习者从数学原理到工程实现,深入理解自注意力、位置编码等核心组件,并完

weixin_34319111的博客 285

Transformer架构详解:从自注意力机制到大模型基石

序列建模是深度学习的重要方向,但传统RNN与LSTM受限于串行计算和长距离依赖衰减,难以高效并行。Transformer通过自注意力机制,让任意位置直接交互,将信息传递路径压缩为常量,并支持全序列并行训练,彻底改变了序列建模的计算方式。多头注意力从多个子空间捕捉关系,位置编码则弥补了注意力无顺序感知的缺陷。这一架构以弱先验、重数据的范式,成为GPT、BERT等大语言模型的底层基础,并延伸至视觉等多模态领域。理解Transformer的注意力计算、位置编码与整体结构,是把握大模型能力与后续优化技术的关键。本文

weixin_30457551的博客 299

Transformer 学习笔记

这些权重矩阵都是随机初始化的,经过训练之后,每一组权重矩阵都会将输入嵌入(或来自较低层编码器/解码器的向量)投影到不同的表示子空间中。我们再次看到词嵌入向量大小的差异(512个,图中横着的4个方格),与q、k、v向量(64个,或图中横着的3个方格)的大小差异。在多头注意力中,我们为每个注意力头分别维护独立的 Q、K、V 权重矩阵,因此每个注意力头都会生成不同的 Q、K、V 矩阵。如果使用不同的权重矩阵,将前面介绍的自注意力计算过程独立执行 8 次,那么最终会得到 8 个不同的 Z矩阵。

m0_73249924的博客 549

transformer详解:原理和应用

Transformer 模型是一种基于注意力机制的深度学习模型,Transformer 彻底改变了自然语言处理(NLP)领域,并逐渐扩展到计算机视觉(CV)等领域。Transformer 的核心思想是完全摒弃传统的循环神经网络(RNN)结构,仅依赖注意力机制来处理序列数据,从而实现更高的并行性和更快的训练速度。

A1233242的博客 3499

从零实现Transformer:自注意力机制与编码器-解码器架构详解

在深度学习与自然语言处理领域,注意力机制作为一种核心建模技术,通过计算序列中不同位置间的关联权重,有效解决了长距离依赖建模的难题。其基本原理是模拟人类认知过程中的选择性关注,允许模型动态聚焦于输入序列的不同部分。这一机制的技术价值在于突破了传统循环神经网络(RNN)在并行计算与长程信息传递上的瓶颈,为大规模序列建模提供了高效解决方案。基于注意力机制构建的Transformer架构,已成为机器翻译、文本生成等序列到序列任务的基石模型。本文将以自注意力机制和编码器-解码器结构为核心,结合PyTorch代码示例,

weixin_30781107的博客 419

从RNN到Transformer:序列建模的演进逻辑与工程启示

序列建模是自然语言处理的核心问题,从循环神经网络到注意力机制,再到Transformer架构,每一步演进都源于对信息传递方式的重新思考。RNN通过隐藏状态实现串行记忆,但梯度消失与并行性差成为长程依赖和训练效率的瓶颈。注意力机制通过查询、键、值的软寻址方式,让模型能够直接访问任意位置信息,弥补了RNN的缺陷。Transformer则彻底抛弃循环结构,以自注意力为核心实现全局感知与高度并行化,成为大模型时代的基石。理解这条技术路线,不仅有助于掌握深度学习基础,也能指导工程实践中对序列长度、计算复杂度和模型选型

weixin_33859844的博客 335

《动手学深度学习》d2l-zh 详解:多头注意力(Multi-Head Attention)原理与四框架实现

多头注意力(multi-head attention)是现代 Transformer 架构的核心组件,其思想是让模型基于同一组查询、键和值,通过 $h$ 组独立学习的线性投影并行地在多个子空间中执行注意力汇聚,从而捕获序列中不同范围的依赖关系。本文以《动手学深度学习》中文版 d2l-zh 仓库中 [chapter_attention-mechanisms/multihead-attention.m

gitblog_00979的博客 947

Transformer

❌ 错误:Transformer就是自注意力✅ 正确:Transformer以自注意力为核心主干,但还包含大量其它必不可少的模块。输入向量 →三套权重变出查询、标签、内容 →查询匹配标签算出关注度 →掩码遮住未来文字 →用关注度抓取内容信息 →注意力输出。

Carol0630的博客 386
上一篇: OpenClaw 是一个开源的、面向具身智能(Embodied AI)与机器人操作研究的多模态大模型框架
下一篇: Python 3.12(于2023年10月2日发布)是Python的最新稳定版本之一,相比此前版本(如3.11、3.10等)
Bol5261
Bol5261 新星创作者: Java技术领域 新星创作者: Java技术领域 优质创作者: 学术研究与理论基础技术领域 优质创作者: 学术研究与理论基础技术领域
博客等级 码龄7年 4万+粉丝 1万+原创
评论 11
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

Bol5261

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

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

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

打赏作者

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

抵扣说明:

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

余额充值