为什么看了那么多资料还是无法理解Transformer啊???

深入理解transformer源码 参考资料: transformer原论文 深入理解transformer及源码 图解Transformer(完整版) The Annotated Transformer 前言   本来今年(2020)七月份就想写这篇博客,因为毕业、工作入职等一系列事情一直拖到了现在(主要是因为懒)。transformer的实现不止一个源码,本文主要讲解哈佛大学利用torch实现的版本。相对更“高级”的C系源码,这个版本显得不是那么底层,但我们大多数人阅读源码的主要目的还是为了更多的理解这个算法的细节然后去更好的使用它。   阅读详情

图片

要理解和熟悉一个新的技术/新模型,比较好的方式是通过以下框架结构来熟悉:

为什么:一个新模型的诞生,一般是解决了现有的模型不能解决的一些问题。因此需了解该技术提出的背景和创新点。

是什么:熟悉这个模型的内容和架构、训练过程等

怎么用:了解模型的应用场景,将模型为我们所用。

接下来就从这三步骤来聊聊Transformer

01、为什么

Transformer最早是Google在2017年的Attention Is Al You Need论文中提出,用于解决解决传统的序列到序列(sequence-to-sequence,Seq2Seq)模型在处理可变长序列时遇到的问题。

图片

在传统的序列建模方法中,如循环神经网络(RNN)和卷积神经网络(CNN),在处理长序列均存在限制:RNN在处理长序列时容易出现梯度消失或梯度爆炸的问题,模型难以捕捉到长距离的依赖关系,不能并行计算 ;而CNN卷积操作通常要求输入具有固定的尺寸,在处理可变长序列时,为了使序列具有相同的长度,要对较短序列进行填充,导致计算效率低下。

而Transformer通过自注意力机制(self-attention)来解决这些问题。

自注意力机制(self-attention)

自注意力机制是一种用于处理序列数据的机制,它能够在序列中的每个位置上计算该位置与其他位置之间的关联程度,并根据这些关联程度来加权组合序列中的信息。

图片

如图所示,a为输入的序列,中间的方框是self attention操作,最终输出的b为依据a每个位置与其它位置关联程度加权后输出的序列。

从细节来说,需要理解几个概念:

  • 查询(Query):查询是你想要了解的信息或者你想要从文本中提取的特征。它类似于你对文本中的某个词语提出的问题或者你想要了解的内容。
  • 键(Key):键是文本中每个词语的表示。它类似于每个词语的标识符或者关键信息,用于帮助计算查询与其他词语之间的关联程度。
  • 值 (Value):值是与每个词语相关的具体信息或特征。类似于每个词语的具体含义或者特征向量 。

在自注意力机制中,具体步骤是:

Step1:从输入值a乘以矩阵Wq、Wk和Wv(这三个矩阵 是模型参数,需要通过训练数据来学习)获取查询(Q)、键(K)、值(V);

Step2:通过计算查询(Q)与键(K)之间的点积,来衡量查询与其他词语之间的关联程度,然后通过对这些关联程度进行归一化处理(一般采用softmax归一化),得到每个词语的注意力权重。

Step3:最后,根据这些注意力权重,对每个词语的值(V)进行加权求和,得到一个新的表示该表示会更加关注与查询相关的信息。

图片

如图所示,α1.1是q1和k1点积计算并归一化后得到的关联程度,以此类推,最后再用关联程度与所有v进行加权求和,就能获得到与q1关联最大的信息b1,而其它的b2、b3、b4也是同样的计算方式。

最终,从矩阵的角度运算的角度,整个过程可以被表示为:

图片

此外,这里没有考虑到输入的位置信息,因为对每个位置的输入操作都是一样的。而有时,序列的位置信息也很重要,因此,还需对输入使用位置编码(Positional Encoding),将位置信息给到输入。

由于sin和cos函数包含位置信息,Transformer中,使用了sin函数和cos函数进行了位置编码:

图片

计算得到位置向量后,将位置向量与输入a相加后再计算对应的Q、K、V,这样就考虑了输入的位置。

图片

我们可以将Self Attention层的输出给全连接神经网络(Fully-Connected Network),学习更多的信息,最终的结构可以如下:

图片

可以看出,自注意力机制通过直接建模词与词之间的关联程度,可以更好地捕捉到远距离的依赖关系;它可以进行并行计算,在处理大规模数据时具有较高的计算效率。

多头自注意力机制(Multi-head self attention)

多头注意力机制是一种在自注意力机制基础上的扩展,它允许模型同时关注不同的表示子空间以更好地捕捉输入序列中的不同关系和特征。

在传统的自注意力机制中,你只能使用一组查询(Q)、键(K)和值(V)来计算注意力权重,但是,在多头注意力机制中,你可以使用多组不同的Q、K和V来进行计算。

图片

每个注意力头都有自己独立的一组Q、K和V,它们通过独立的线性变换来生成。这样,每个注意力头可以关注文本中不同的方面和特征,从而提取更丰富的信息。最后,多个注意力头的结果会被拼接在一起,并通过另一个线性变换进行整合,得到最终的输出。

通过使用多头注意力机制,模型可以同时关注不同的表示子空间,从而捕捉到输入序列中更多的关系和特征。这种并行处理的方式可以提高模型的表达能力和泛化能力,使得模型更好地理解和处理复杂的输入数据。

02、是什么

以下是Transformer完整的架构,总体来看,它由**编码器(Encoder)和解码器(Decoder)**两部分组成。

图片

编码器(Encoder)

左边是编码器部分,主要作用是将输入数据编码成计算机能理解的高维抽象表示。

它的结构也就是前面一节我们所说的多头注意力机制+ 全连接神经网络的结构。此外,这里用了残差连接(Residual connection)的方式,将输入和多头注意力层或全连接神经网络的输出相加,再传递给下一层,避免梯度递减的问题。

解码器(Decoder)

右边是解码器的部分,主要作用是利用高维表示信息生成目标序列。它的结构大致与编码器相同不同的有两点:

第一,采用了掩码多头自注意力(Masked-Multi-head self attention)即在计算注意力得分时,模型只能关注生成内容的当前位置之前的信息,避免未来信息的泄漏。

比如,这里计算输出b2时,就只使用了a1、a2两个位置的注意力得分进行加权

图片

采用这种方式的原因是,模型需要按照顺序逐步生成序列(a1、a2),因此不能提前获取到未来a3、a4的信息。

第二,中间部分,利用了Encoder的输出结果计算交叉注意力(CrossAttention)。同之前的注意力机制类似,Cross Attention通过计算解码器当前位置(Q)的表示与编码器上下文表示(K)之间的注意力权重,将编码器上下文表示(V)加权,然后将该加权表示与解码器当前位置的表示进行融合。

训练过程

Transformer的训练过程和深度神经网络模型类似。以中文翻译成英文的翻译任务为例:

数据准备:首先,需要准备训练数据集,包括大量中文序列和人工标注的正确英文序列。

输入表示:将中文源语言句子和英语句子进行编码,并进行适当的标记和嵌入处理。常见的编码方式是使用词嵌入(Word Embedding)将每个词转换为向量表示,并添加位置编码(PositionaEncoding)以保留序列的顺序信息。注意在训练时,Decoder的输入是人工标注为正确的英文序列,而不是Decoder自己生成的英文序列。

确定模型架构:构建Transformer模型 的架构,包括编码器和解码器层数、注意力机制和前馈神经网络层数等等

训练模型:定义适当的损失函数 来衡量模型在训练过程中的性能。对于机器翻译任务,常用的损失函数是交叉熵损失函数,用于比较模型生成的英语句子与正确的英语句子之间的差异。训练过程中,通过反向传播算法和优化器(如Adam优化器)来更新模型的参数(如全连接神经网络的参数、注意力机制中的Wk、Wg、W参数),以最小化损失函数。通常会使用小批量(mini-batch)的方式进行训练,即将训练数据划分为多个批次,每个批次包含一定数量的样本。

验证和调优:使用验证数据集评估模型Q的性能,进一步进行超参数调整、模型结构调整等操作,提升模型的性能。

推理和应用:训练完成后,使用已训练好的模型将中文句子翻译成英文句子

注意,Transformer所需的训练数据量通常在数百万到数十亿个tokens(输入向量)之间,因此个人训练是很困难的,最好直接使用预训练好的模型。

03、为什么

目前Transformer被广泛使用在机器翻译 、文本生成、语义理解、语音识别、对话系统等多个领域。尤其现在比较火的GPT、New Binga等大语言模型都是基于Transformer架构进行改进和研发的。

不是所有人都需要去细致研究Transformer,更多的情况下我们只是希望能便捷的使用预训练好的模型来帮助我们提高效率,而现在基于Transformer的最新的技术便是大模型。

给大家推荐这个项目,它是基于PyTorch、JAX、TensorFlow的自然语言处理模型库,提供了数千个预训练模型,支持多种任务,包括文本分类、信息提取、问答、摘要、翻译、文本生成等。

图片

看到这里,最后再看原论文这张图,是不是能很好的理解了呢?

图片

​

如何学习大模型

现在社会上大模型越来越普及了,已经有很多人都想往这里面扎,但是却找不到适合的方法去学习。

作为一名资深码农,初入大模型时也吃了很多亏,踩了无数坑。现在我想把我的经验和知识分享给你们,帮助你们学习AI大模型,能够解决你们学习中的困难。

我已将重要的AI大模型资料包括市面上AI大模型各大白皮书、AGI大模型系统学习路线、AI大模型视频教程、实战学习,等录播视频免费分享出来,需要的小伙伴可以扫取。

一、AGI大模型系统学习路线

很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,我下面分享的这个学习路线希望能够帮助到你们学习AI大模型。

在这里插入图片描述

二、AI大模型视频教程

在这里插入图片描述

三、AI大模型各大学习书籍

在这里插入图片描述

四、AI大模型各大场景实战案例

在这里插入图片描述

五、结束语

学习AI大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习AI大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握AI大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。

再者,学习AI大模型也能为我们自己创造更多的价值,提供更多的岗位以及副业创收,让自己的生活更上一层楼。

因此,学习AI大模型是一项有前景且值得投入的时间和精力的重要选择。

深入理解 Transformer 结构,此篇 PyTorch 实现为你解惑 ——PyTorch 实现 Transformer 应用实例展示 (全套教程文末领取哈)从大模型系统设计入手,讲解大模型的主要方法;在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;以SD多模态大模型为主,搭建了文生图小程序案例;以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。 阅读详情

相关推荐

transformer中QKV的通俗理解(剩女与备胎的故事)

用vit的时候读了一下transformer的思想,前几天面试结束之后发现对QKV又有点忘记了, 写一篇文章来记录一下 参考链接: 哔哩哔哩:在线激情讲解transformer&Attention注意力机制(上)在线激情讲解transformer&Attention注意力机制(上)_哔哩哔哩_bilibiliAttention is all you need介绍 更具体的介绍可以去阅读论文在Attention is all you need这篇文章中提出了著名的Transformer模型Transforme

Peter的博客 1万+

大模型入门必学:为什么RAG领域用“召回“不用“搜索“?

本文解释了在RAG和信息检索领域,技术人员偏爱使用"召回"而非"搜索"的原因。"召回"形象地描述了系统从海量知识库中调取相关信息的过程,并与"召回率"、"精确率"等评估指标紧密关联。与偏向用户视角的"搜索"不同,"召回"站在系统角度,描述技术操作过程。在RAG系统中,"召回"对应检索阶段,与"生成"阶段相对,共同构成完整的检索增强生成流程。理解这一术语差异有助于深入掌握大模型RAG技术的核心概念。

2301_80239908的博客 747

深入理解Transformer——从QKV开始

本章从底层QKV的角度介绍了Transformer模型的架构,基本原理等。

Cloud_Flow的博客 3951

如何最简单、通俗地理解Transformer?

如何最简单、通俗地理解Transformer? 闲话少说,就问一件事情,大家在搞科研的时候有没有遇到这种情况,就是当前输入维度为N训练一个网络,但后期N的大小可能就变了,这时候普通的MLP或者CNN都会傻眼,但Transformer可以非常完美地解决这个问题,并且效果极佳。

2401_85379281的博客 1530

【深度学习】一文带你搞懂Transformer中的QKV到底是什么,怎么更加通俗易懂的去理解?

发生了什么?最开始,“cat” 的词向量只代表“猫”这个孤立的概念。经过 QKV 的注意力计算后,“cat”新的向量表示变成了一个加权和。它吸收了句子中其他单词的信息,尤其是它最关注的 “drank” 和 “tired”。现在,新的 “cat” 向量不仅仅是“猫”了,它是一个融合了上下文的、正在喝东西的、疲惫的猫”**。这个新的向量更好地理解了它在句子中的角色和状态。总结一下 QKV 的角色:Q (Query): 我是谁?我在找什么?(主动的探针)K (Key): 你是谁?你能提供什么?

猫天意的博客 2258

SAP SD 顾问面试问题 consultant interview questionnaire

以下是我个人目前面试团队 SD顾问问题的小结,希望对大家有所帮助, 也可能有回答错误的地方,希望同行不吝赐教。 也希望各位顾问们讲你们遇到的一些面试问题做个跟贴,方便大家共同进步,谢谢。   面试问题清单:  一、销售订单类型影响: 可用性检查,交货类型,输出,信贷,定价,需求,报表,合作伙伴,文本,不完整日志,交货开票,订单开票,公司间开票,统计组,屏幕顺序组,参数文件...

weixin_33825683的博客 1809

这样图解Transformer应该没人看不懂了吧——多头注意力机制详解

大模型很多技术干货,都可以共享给你们,如果你肯花时间沉下心去学习,它们一定能帮到你!

2401_85375186的博客 1881

adams案例分析_案例1(麦弗逊悬架子系统创建)

本文字数3292字83图,建议阅读时间26分钟首先看下案例1的麦弗逊悬架数模结构就不细讲了,从数模上主要是获取硬点坐标(铰接点、安装点、参考点)及大部件结构(副车架、摆臂、转向节等实际运动过程中会产生变形的部件,在ADAMS Car中我们就可以用柔性体来搭建)再来回顾下上一篇讲到的模型元素1、Hardpoint——硬点(只有位置没有方向)2、Parameter Variable——参数...

weixin_39609407的博客 6476

如何最简单、通俗地理解Transformer

核心组件就是上面所提到的Self-Attention和Feed Forward Networks,但还有很多其他细节,接下来我们就开始逐个结构的来解读Transformer。1. 有监督模型向半监督甚至无监督方向发展数据的规模的增长速度远远超过了数据的标注速度,这也就导致了大量无标签数据的产生。这些无标签的数据并非没有价值,相反,如果找到合适的“炼金术”,将可以从这些海量的数据中获取意想不到的价值。如何利用上这些无标签的数据来改善任务的表现变成了一个越来越无法轻视的问题。

顺其自然~专栏 734

2026深度破解:OpenClaw开源AI框架架构与实战全景解析

2026年初,一款名为OpenClaw的开源AI Agent框架以惊人的速度席卷全球开发者社区,短短数周GitHub星标突破20万,成为史上增长最快的开源项目。本文从架构设计、核心原理、代码实现和工程实战四个维度,深度剖析OpenClaw的技术内核,帮助开发者从理解到实践,快速掌握这一革命性的AI开发框架。

fox0329的博客 2373

UG NX 12.0零基础实战:从草图绘制到三维建模全流程解析

本文详细解析UG NX 12.0从草图绘制到三维建模的全流程,适合零基础用户快速掌握这款工业设计软件。内容涵盖界面设置、基础操作、草图技巧、拉伸旋转建模、布尔运算等核心功能,并通过机械零件实战案例演示完整设计流程,帮助读者系统学习UG NX 12.0的工业设计应用。

weixin_29261711的博客 1176

深入Transformer架构,为什么你还是无法理解Transformer

Transformer架构通过**自注意力机制**取代了传统循环神经网络(RNN),在自然语言处理任务中实现**并行计算**,其核心由输入模块、编码器、解码器组件和输出模块构成。编码器通过多层自注意力机制提取特征,解码器则将编码结果与目标序列关联实现序列转换。

2401_85343303的博客 1045

Android音频学习(十四)——加载音频设备

loadHwModule 是 Android 音频系统的核心初始化函数,负责加载音频硬件抽象层(HAL)的模块实现。它建立 AudioPolicyService 与底层硬件的桥梁,将配置文件(audio_policy_config.xml)中的标签<module>定义转化为可操作的硬件对象,加载的是音频硬件模块(HAL实现),每个模块对应一种音频设备类型,以动态库的形式存在,负责与底层音频硬件交互。

miemie2014的博客 1731

为什么我还是无法理解Transformer?Transformer到底是什么?

究其原因,是但凡讲到 Transformer,铺天盖地的资料上来就直奔自注意力机制(Self-Attention)的 Q、K、V 细节,只钻枝叶、不谈全局,只见树林,不见森林。

m0_63171455的博客 665

Qt Quick/QML入门到精通_专栏demo对应文章目录(目前50个左右demo/长期更新)

自定义图标下拉列表框的效果如下所示:自定义三态按钮的效果如下所示:传送门:53.qt quick-自定义三态按钮、自定义图标下拉列表框_诺谦的博客-优快云博客传送门:59.qt quick-qml调色板(颜色取色器)实现、自定义QQuickStyle样式_诺谦的博客-优快云博客63.qt quick-QML侧边滑动栏(不需要任何图片资源,支持自定义左右方向和大小)_诺谦的博客-优快云博客_qt实现好看侧边栏。...

抵抗时间扭曲,坚持做一件有意义的事 2万+

基于DynamicHead的YOLOv8四头版本改进:面向复杂场景的多目标检测优化【YOLOv8】

YOLOv8的检测头是通过不同尺度的特征层输出检测结果。这些检测头通常包括三个:用于大物体、中等物体和小物体的检测。然而,这种单一结构可能会在复杂场景下失去针对性和灵活性,特别是当多个目标之间差异较大时。为了进一步提升模型在特定目标上的检测性能,DynamicHead的引入为我们提供了一个多检测头的优化方案。本文提出了一种基于DynamicHead的四头版本YOLOv8改进方案,以解决复杂场景下多目标检测的挑战。通过引入四个独立检测头,分别针对不同目标特征进行优化,实现了更灵活的检测结构。

博客 1718

为什么我还是无法理解transformer?

但他们没想到,正是因为Transformer的前向传播过程太特别了,注意力机制太新颖了,反而让初学者产生了它的训练方式也应该很特别的错觉。网上有一份代码我觉得写得挺清楚的,是哈佛NLP组做的 The Annotated Transformer,用PyTorch从零实现了整个Transformer,每一行代码都有注释。你之所以困惑,是因为99%的教程犯了一个致命错误:它们花大量篇幅讲注意力机制的前向传播过程,把Q、K、V的矩阵运算讲得天花乱坠,然后到了训练部分就一笔带过甚至直接跳过。

leah126的博客 561

C++幂运算全解析:std::pow()函数详解与实战指南

本文详细介绍了C++标准库中的std::pow()函数,包括其基本用法、数学定义和多种重载形式。重点分析了该函数在科学计算、图形处理等领域的实际应用,并提供了性能优化方案如快速幂算法和预计算表。文章还探讨了精度控制、错误处理等关键问题,最后通过一个完整计算器实现展示了综合应用。std::pow()作为基础数学函数,合理使用能显著提升计算效率和代码可靠性。

专注现代C++实战,从核心语法到高性能编程,助力开发者深入掌握系统级编程精髓。 340

【Transformer系列】深入浅出理解ViT(Vision Transformer)模型

【Transformer系列】深入浅出理解ViT(Vision Transformer)网络模型

IT菜鸟 6万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

关于Transformer、BERT的理解

结合李宏毅老师机器学习2021——Transformer课程和网上查阅的资料,总结一下对Transformer的理解 Transformer是什么? 从宏观角度来看,Transformer是一种基于Self-Attention机制的Seq2seq模型(序列模型),由编码器和解码器组成(自己总结的)。所以在学习Transformer前,需要先弄明白Seq2seq、编码器 / 解码器、Self-Attention(见本人之前的csdn博客)是什么。 Seq2seq模型: 这是一个序列到序列的模型,输入一个序列

gailj 9671

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Transformer详解资料下载:深入理解Transformer模型的宝藏资源

Transformer详解资料下载:深入理解Transformer模型的宝藏资源 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在自然语言处理领域,Transformer模型作为一种突破性的架构,已经成为当今众多深度学习任务的核心。为了帮助广大开发者和技术爱好者更好地掌握Transformer模型,我们推荐这份《Transformer详解资料下载》。这份资料全面涵盖了...

gitblog_06724的博客 441

transformer通俗理解

Transformer是一个利用注意力机制来提高模型训练速度的模型。trasnformer可以说是完全基于自注意力机制的一个深度学习模型,因为它适用于并行化计算,和它本身模型的复杂程度导致它在精度和性能上都要高于之前流行的RNN循环神经网络。那什么是transformer呢?你可以简单理解为它是一个黑盒子,当我们在做文本翻译任务是,我输入进去一个中文,经过这个黑盒子之后,输出来翻译过后的英文。那么在这个黑盒子里面都有什么呢?里面主要有两部分组成:Encoder 和 Decoder当我输入一个文本的时候,该文

追光少年的博客 2万+

【Transformer系列】深入浅出理解Positional Encoding位置编码

【Transformer系列】深入浅出理解Positional Encoding位置编码

IT菜鸟 4万+

Transformer简单理解结构

Transformer简单理解结构

zhk 905

【Transformer系列】深入浅出理解Transformer网络模型(综合篇)

【Transformer系列】深入浅出理解Transformer网络模型(综合篇)

IT菜鸟 1万+
上一篇: 数据说话:26 种 prompt 套路,效果比较
下一篇: 利用Transformer进行端到端的目标检测及跟踪(附源代码)
AI_小站
博客等级 码龄3年 6255粉丝 1152原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值