当前位置: 首页 > article >正文

【小白学AI系列】NLP 核心知识点(五)Transformer介绍

Transformer

Transformer 是一种基于自注意力机制(Self-Attention Mechanism)的深度学习模型,首次由 Vaswani 等人于 2017 年在论文《Attention is All You Need》中提出。与 RNN 和 LSTM 不同,Transformer 不需要依靠序列顺序进行递归,而是通过全局注意力机制一次性处理整个输入序列,从而具备了更高的计算效率和更强的并行化能力。

Transformer 的提出彻底改变了自然语言处理(NLP)和其他领域的发展,广泛应用于机器翻译、文本生成、语言理解、图像识别等任务。


Transformer 的结构

Transformer 模型由两部分组成:

  1. 编码器(Encoder):用于将输入序列转化为上下文相关的表示。
  2. 解码器(Decoder):用于根据编码器的输出生成新的序列(如翻译成另一种语言)。

Transformer 的基本结构如下:

Transformer
├── 编码器(Encoder)
│   ├── 多头自注意力机制(Multi-Head Attention)
│   ├── 前馈神经网络(Feed-Forward Neural Network)
│   └── 残差连接与层归一化(Residual Connection + Layer Normalization)
│
└── 解码器(Decoder)├── 多头自注意力机制(Multi-Head Attention)├── 编码器-解码器注意力机制├── 前馈神经网络└── 残差连接与层归一化

核心机制解析

1. 多头自注意力机制(Multi-Head Self-Attention)

自注意力机制的核心是:每个单词能够根据输入序列的上下文信息,动态地分配注意力权重,从而获得上下文相关的表示。

计算步骤

  1. 将输入序列 ( X ) 通过线性变换生成查询向量(Query, Q)键向量(Key, K)值向量(Value, V)
  2. 计算每个查询向量 ( Q_i ) 与所有键向量 ( K_j ) 之间的相似度,通过 softmax 函数获得注意力权重。
  3. 将注意力权重与对应的值向量 ( V ) 相乘,得到加权后的输出。

公式:
Attention ( Q , K , V ) = softmax ( Q K T d k ) V \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V Attention(Q,K,V)=softmax(dk QKT)V
其中:

  • ( Q ):查询矩阵
  • ( K ):键矩阵
  • ( V ):值矩阵
  • ( d_k ):向量的维度(用来进行缩放)

多头注意力机制 是将多个自注意力机制并行计算,捕捉到输入序列中不同层次的信息,然后将多个头的输出拼接成最终结果。


2. 前馈神经网络(Feed-Forward Network, FFN)

在自注意力机制后,每个位置的输出会通过一个前馈神经网络(通常是两层全连接层)进行非线性变换,提高模型的非线性表达能力。

公式:
F F N ( x ) = ReLU ( x W 1 + b 1 ) W 2 + b 2 FFN(x) = \text{ReLU}(xW_1 + b_1)W_2 + b_2 FFN(x)=ReLU(xW1+b1)W2+b2
其中 ( W1 ) 和 ( W2 ) 是权重矩阵,( b1 ) 和 ( b2 ) 是偏置项。


3. 残差连接与层归一化(Residual Connection + Layer Normalization)

为了避免梯度消失和梯度爆炸问题,Transformer 在每一层增加了残差连接,并在残差连接之后进行层归一化(Layer Normalization),确保输出保持稳定,提升模型训练的稳定性。

残差连接公式:
Output = LayerNorm ( x + SubLayer ( x ) ) \text{Output} = \text{LayerNorm}(x + \text{SubLayer}(x)) Output=LayerNorm(x+SubLayer(x))
其中 ( x ) 是输入,( \text{SubLayer}(x) ) 是注意力机制或前馈网络的输出。


4. 位置编码(Positional Encoding)

由于 Transformer 不像 RNN 那样依靠序列的顺序信息,因此需要为输入序列加入位置编码,帮助模型捕获序列的时序特征。

位置编码公式:
P E ( p o s , 2 i ) = sin ⁡ ( p o s 1000 0 2 i / d ) PE_{(pos, 2i)} = \sin\left(\frac{pos}{10000^{2i/d}}\right) PE(pos,2i)=sin(100002i/dpos)
P E ( p o s , 2 i + 1 ) = cos ⁡ ( p o s 1000 0 2 i / d ) PE_{(pos, 2i+1)} = \cos\left(\frac{pos}{10000^{2i/d}}\right) PE(pos,2i+1)=cos(100002i/dpos)
其中:

  • ( pos ) 是单词在序列中的位置。
  • ( i ) 是维度索引。
  • ( d ) 是向量的维度。

位置编码将序列的位置信息注入到输入嵌入中,使得模型能够区分“第一个词”和“第二个词”。


Transformer 的应用

1. 机器翻译

Transformer 最初的应用就是机器翻译任务。在机器翻译中:

  • 编码器将源语言的句子转化为上下文表示。
  • 解码器根据上下文生成目标语言句子。

2. 文本生成

GPT(生成预训练模型)是基于 Transformer 解码器结构的文本生成模型,能够根据输入文本生成合理的续写内容。

3. 语言理解

BERT(双向编码器表示模型)是基于 Transformer 编码器结构的语言理解模型,擅长回答问题、文本分类等任务。

4. 图像识别

Vision Transformer(ViT)将图像切分成小块,并将它们视为序列输入到 Transformer 中,从而实现了图像识别任务。


Transformer 的优点和缺点

优点:

  1. 高效并行:相比 RNN 和 LSTM,Transformer 不需要逐步递归处理序列,可以并行处理整个序列,大大提高了训练效率。
  2. 捕获长距离依赖:通过自注意力机制,Transformer 能够轻松捕获长距离的上下文关系。
  3. 结构灵活:编码器和解码器模块可以根据任务需求自由组合。

缺点:

  1. 计算量大:多头自注意力机制和全连接层使得模型计算复杂度较高,对硬件资源要求较高。
  2. 需要大规模数据:Transformer 模型的训练通常需要海量的数据和时间。

经典模型发展

  • 2017 年:Transformer 提出,首次应用于机器翻译,性能超越传统 RNN 和 LSTM。
  • 2018 年:BERT 推出,将 Transformer 编码器用于双向语言理解,成为 NLP 领域的里程碑。
  • 2018 年:GPT(Generative Pretrained Transformer) 推出,将 Transformer 解码器用于文本生成。
  • 2020 年:GPT-3 震惊 NLP 领域,通过 1750 亿参数的预训练模型实现了令人惊艳的文本生成效果。

相关文章:

【小白学AI系列】NLP 核心知识点(五)Transformer介绍

Transformer Transformer 是一种基于自注意力机制(Self-Attention Mechanism)的深度学习模型,首次由 Vaswani 等人于 2017 年在论文《Attention is All You Need》中提出。与 RNN 和 LSTM 不同,Transformer 不需要依靠序列顺序进…...

纯后训练做出benchmark超过DeepseekV3的模型?

论文地址 https://arxiv.org/pdf/2411.15124 模型是AI2的,他们家也是玩开源的 先看benchmark,几乎是纯用llama3 405B后训练去硬刚出一个gpt4o等级的LLamA405 我们先看之前的机遇Lllama3.1 405B进行全量微调的模型 Hermes 3,看着还没缘模型…...

OpenAI深夜反击:o3-mini免费上线,能否撼动DeepSeek的地位?

还在为寻找合适的 AI 模型而烦恼吗?chatTools 平台为您精选 o1、GPT4o、Claude、Gemini 等顶尖 AI 模型,满足您不同的 AI 应用需求。立即体验强大的 AI 能力! 深夜反击,OpenAI祭出o3-mini 在DeepSeek异军突起,搅动AI行…...

【Linux-网络】初识计算机网络 Socket套接字 TCP/UDP协议(包含Socket编程实战)

🎬 个人主页:谁在夜里看海. 📖 个人专栏:《C系列》《Linux系列》《算法系列》 ⛰️ 道阻且长,行则将至 目录 📚一、初识计算机网络 📖 背景 📖 网络协议 🔖OSI七层…...

使用ollama在本地部署一个deepseek大模型

文章目录 为什么选择本地化部署需要用到什么作者使用的什么环境如何根据自己的电脑或服务器配置选择自己能部署的大模型 一、Ollama1、下载Ollama2、安装Ollama 二、DeepSeek R11、下载DeepSeek R12、安装DeepSeek R1 三、ChatBox AI1、下载ChatBox AI2、安装ChatBox AI3、连接…...

10 Flink CDC

10 Flink CDC 1. CDC是什么2. CDC 的种类3. 传统CDC与Flink CDC对比4. Flink-CDC 案例5. Flink SQL 方式的案例 1. CDC是什么 CDC 是 Change Data Capture(变更数据获取)的简称。核心思想是,监测并捕获数据库的变动(包括数据或数…...

【含文档+PPT+源码】基于微信小程序连锁药店商城

项目介绍 本课程演示的是一款基于微信小程序连锁药店商城,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套系统 3.该项目附带的…...

使用 EXISTS 解决 SQL 中 IN 查询数量过多的问题

在 SQL 查询中,当我们面对需要在 IN 子句中列举大量数据的场景时,查询的性能往往会受到显著影响。这时候,使用 EXISTS 可以成为一种优化的良方。 问题的来源 假设我们有两个表,orders 和 customers,我们需要查询所有…...

[免费]微信小程序智能商城系统(uniapp+Springboot后端+vue管理端)【论文+源码+SQL脚本】

大家好,我是java1234_小锋老师,看到一个不错的微信小程序智能商城系统(uniappSpringboot后端vue管理端),分享下哈。 项目视频演示 【免费】微信小程序智能商城系统(uniappSpringboot后端vue管理端) Java毕业设计_哔哩哔哩_bilibili 项目介绍…...

UE学习日志#19 C++笔记#5 基础复习5 引用1

C中的引用(reference)是另一个变量的别名。对引用的所有修改都会更改其引用的变量的值。可以将引用视为隐式指针,它省去了获取变量地址和解引用指针的麻烦。另外,可以将引用视为原始变量的另一个名称。可以创建独立的引用变量&…...

PHP代码审计学习02

目录 代码审计一般思路 Beescms代码审计(upload) Finecms基于前台MVC任意文件上传挖掘思路 CLTPHP基于thinkphp5框架的文件上传挖掘思路 今天来看PHP有框架MVC类,文件上传,断点调试挖掘。 同样还是有关键字搜索和功能点抓包两…...

2025年02月02日Github流行趋势

项目名称:oumi 项目地址url:https://github.com/oumi-ai/oumi 项目语言:Python 历史star数:1416 今日star数:205 项目维护者:xrdaukar, oelachqar, taenin, wizeng23, kaisopos 项目简介:构建最…...

vue入门到实战 三

目录 3.1 v-bind 3.1.1 v-bind指令用法 ​编辑3.1.2 使用v-bind绑定class 3.1.3 使用v-bind绑定style 3.2.1 v-if指令 3.2.1 v-if指令 3.2.2 v-show指令 ​3.3 列表渲染指令v-for 3.3.1 基本用法 3.3.2 数组更新 3.3.3 过滤与排序 3.4 事件处理 3.4.1 使用v-on指令…...

[创业之路-271]:站在管理的角度看计算机操作系统,OS是技术思想与管理思想的完美融合,是物理世界和数字化虚拟世界的桥梁

一、前言: Operating System,站在终端用户的角度,翻译成了"操作系统",但站在计算机系统本身角度,翻译成"运营系统"更合适,是指它是负责运营计算机所有的硬件(物理&#xf…...

实验六 项目二 简易信号发生器的设计与实现 (HEU)

声明:代码部分使用了AI工具 实验六 综合考核 Quartus 18.0 FPGA 5CSXFC6D6F31C6N 1. 实验项目 要求利用硬件描述语言Verilog(或VHDL)、图形描述方式、IP核,结合数字系统设计方法,在Quartus开发环境下&#xff…...

java SSM框架 商城系统源码(含数据库脚本)

商城购物功能,项目代码,mysql脚本,html等静态资源在压缩包里面 注册界面 登陆界面 商城首页 文件列表 shop/.classpath , 1768 shop/.project , 1440 shop/.settings/.jsdtscope , 639 shop/.settings/org.eclipse.core.resources.prefs , …...

Unet 改进:在encoder和decoder间加入TransformerBlock

目录 1. TransformerBlock 2. Unet 改进 3. 完整代码 Tips:融入模块后的网络经过测试,可以直接使用,设置好输入和输出的图片维度即可 1. TransformerBlock TransformerBlock是Transformer模型架构的基本组件,广泛应用于机器翻译、文本摘要和情感分析等自然语言处理任务…...

【黄啊码】DeepSeek提示词大道至简版

1.1 有效提问的五个黄金法 法则一:明确需求 错误示例: Γ帮我写点东西」 正确姿势: Γ我需要一封求职邮件,应聘新媒体运营岗位,强调B年公众号运营经验 法则二:提供背景 错误示例 : Γ分析这个…...

【Linux系统】信号:认识信号 与 信号的产生

信号快速认识 1、生活角度的信号 异步:你是老师正在上课,突然有个电话过来资料到了,你安排小明过去取资料,然后继续上课,则小明取资料这个过程就是异步的 同步:小明取快递,你停下等待小明回来再…...

一、html笔记

(一)前端概述 1、定义 前端是Web应用程序的前台部分,运行在PC端、移动端等浏览器上,展现给用户浏览的网页。通过HTML、CSS、JavaScript等技术实现,是用户能够直接看到和操作的界面部分。上网就是下载html文档,浏览器是一个解释器,运行从服务器下载的html文件,解析html、…...

C# 数组和列表的基本知识及 LINQ 查询

数组和列表的基本知识及 LINQ 查询 一、基本知识二、引用命名空间声明三、数组3.1、一维数组3.2、二维数组3.3、不规则数组 Jagged Array 四、列表 List4.1、一维列表4.2、二维列表 五、数组和列表使用 LINQ的操作和运算5.1、一维 LIST 删除所有含 double.NaN 的行5.2、一维 LI…...

PyQt5超详细教程终篇

PyQt5超详细教程 前言 接: [【Python篇】PyQt5 超详细教程——由入门到精通(序篇)](【Python篇】PyQt5 超详细教程——由入门到精通(序篇)-CSDN博客) 建议把代码复制到pycahrm等IDE上面看实际效果,方便理…...

【llm对话系统】大模型 Llama 源码分析之归一化方法 RMS Norm

1. 引言 在深度学习中,归一化 (Normalization) 是一种常用的技术,它可以加速模型的训练并提高模型的性能。常见的归一化方法包括 Batch Normalization (BatchNorm)、Layer Normalization (LayerNorm) 等。Llama 模型采用了一种称为 RMS Norm 的归一化方…...

Ubuntu 24.04 安装 NVIDIA Container Toolkit 全指南:让Docker拥抱GPU

Ubuntu 24.04 安装 NVIDIA Container Toolkit 全指南:让Docker拥抱GPU 前言一、环境准备1.1 验证驱动状态 二、安装NVIDIA Container Toolkit2.1 添加官方仓库2.2 执行安装 三、配置Docker运行时3.1 更新Docker配置 四、验证安装结果4.1 运行测试容器 五、实战应用 …...

青少年编程与数学 02-008 Pyhon语言编程基础 15课题、运用函数

青少年编程与数学 02-008 Pyhon语言编程基础 15课题、运用函数 一、函数的运用1. 问题分解2. 定义函数接口3. 实现函数4. 测试函数5. 组合函数6. 处理错误和异常7. 优化和重构示例:使用函数解决复杂数学问题 二、递归三、递归函数1. 确定基本情况(Base C…...

ARM TEE

在ARM的语境中,TEE是Trusted Execution Environment(可信执行环境)的缩写。ARM TEE就是基于ARM架构实现的可信执行环境,以下是具体介绍: 定义与原理 定义:ARM TEE是基于独立硬件,和主操作系统…...

洛谷 P8724 [蓝桥杯 2020 省 AB3] 限高杆

洛谷题目传送门 题目描述 某市有 n 个路口,有 m 段道路连接这些路口,组成了该市的公路系统。其中一段道路两端一定连接两个不同的路口。道路中间不会穿过路口。 由于各种原因,在一部分道路的中间设置了一些限高杆,有限高杆的路…...

虚幻UE5手机安卓Android Studio开发设置2025

一、下载Android Studio历史版本 步骤1:虚幻4.27、5.0、5.1、5.2官方要求Andrd Studio 4.0版本; 5.3、5.4、5.5官方要求的版本为Android Studio Flamingo | 2022.2.1 Patch 2 May 24, 2023 虚幻官网查看对应Andrd Studiob下载版本: https:/…...

JavaWeb入门-请求响应(Day3)

(一)请求响应概述 请求(HttpServletRequest):获取请求数据 响应(HttpServletResponse):设置响应数据 BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器就可访问,应用程序的逻辑和数据都存储在服务端(维护方便,响应速度一般) CS架构:Client/ser…...

【Rust】18.2. 可辩驳性:模式是否会无法匹配

喜欢的话别忘了点赞、收藏加关注哦(加关注即可阅读全文),对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 18.2.1. 模式的两种形式 模式有两种形式: 可辩驳的(可失败的&…...