【小白学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 亿参数的预训练模型实现了令人惊艳的文本生成效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/67758.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【高级篇 / IPv6】(7.6) ❀ 03. 宽带IPv6 - ADSL拨号宽带上网配置 ❀ FortiGate 防火墙

【简介】大部分ADSL拨号宽带都支持IPv6,这里以ADSL拨号宽带为例,演示在FortiGate防火墙上的配置方法。 准备工作 同上篇文章一样,为了兼顾不熟悉FortiGate防火墙的朋友,我们从基础操作进行演示,熟练的朋友可以跳过这一…

Linux第104步_基于AP3216C之I2C实验

Linux之I2C实验是在AP3216C的基础上实现的,进一步熟悉修改设备树和编译设备树,以及学习如何编写I2C驱动和APP测试程序。 1、AP3216C的原理图 AP3216C集成了一个光强传感器ALS,一个接近传感器PS和一个红外LED,为三合一的环境传感…

基于单片机的盲人智能水杯系统(论文+源码)

1 总体方案设计 本次基于单片机的盲人智能水杯设计,采用的是DS18B20实现杯中水温的检测,采用HX711及应力片实现杯中水里的检测,采用DS1302实现时钟计时功能,采用TTS语音模块实现语音播报的功能,并结合STC89C52单片机作…

高清种子资源获取指南 | ✈️@seedlinkbot

在如今的数字时代,高清影视、音乐、游戏等资源的获取方式不断丰富。对于追求高质量资源的用户而言,一个高效的资源分享平台至关重要。而 ✈️seedlinkbot 正是这样一个便捷的资源获取工具,为用户提供高质量的种子资源索引和下载信息。 1. ✈️…

Spring Boot项目如何使用MyBatis实现分页查询

写在前面:大家好!我是晴空๓。如果博客中有不足或者的错误的地方欢迎在评论区或者私信我指正,感谢大家的不吝赐教。我的唯一博客更新地址是:https://ac-fun.blog.csdn.net/。非常感谢大家的支持。一起加油,冲鸭&#x…

【论文笔记】Fast3R:前向并行muti-view重建方法

众所周知,DUSt3R只适合做稀疏视角重建,与sapnn3r的目的类似,这篇文章以并行的方法,扩展了DUSt3R在多视图重建中的能力。 abstract 多视角三维重建仍然是计算机视觉领域的核心挑战,尤其是在需要跨不同视角实现精确且可…

本地部署DeepSeek教程(Mac版本)

第一步、下载 Ollama 官网地址:Ollama 点击 Download 下载 我这里是 macOS 环境 以 macOS 环境为主 下载完成后是一个压缩包,双击解压之后移到应用程序: 打开后会提示你到命令行中运行一下命令,附上截图: 若遇…

微机原理与接口技术期末大作业——4位抢答器仿真

在微机原理与接口技术的学习旅程中,期末大作业成为了检验知识掌握程度与实践能力的关键环节。本次我选择设计并仿真一个 4 位抢答器系统,通过这个项目,深入探索 8086CPU 及其接口技术的实际应用。附完整压缩包下载。 一、系统设计思路 &…

【Redis】Redis 经典面试题解析:深入理解 Redis 的核心概念与应用

Redis 是一个高性能的键值存储系统,广泛应用于缓存、消息队列、排行榜等场景。在面试中,Redis 是一个高频话题,尤其是其核心概念、数据结构、持久化机制和高可用性方案。 1. Redis 是什么?它的主要特点是什么? 答案&a…

昆仑万维Java开发面试题及参考答案

进程和线程的区别是什么? 进程和线程都是操作系统中非常重要的概念,它们在多个方面存在显著的区别。 从定义上看,进程是操作系统进行资源分配和调度的基本单位。每个进程都有自己独立的内存空间,包括代码段、数据段、堆栈段等。例如,当你在电脑上同时打开浏览器和音乐播放…

Visual Studio Code应用本地部署的deepseek

1.打开Visual Studio Code,在插件中搜索continue,安装插件。 2.添加新的大语言模型,我们选择ollama. 3.直接点connect,会链接本地下载好的deepseek模型。 参看上篇文章:deepseek本地部署-CSDN博客 4.输入需求生成可用…

SpringBoot 整合 Mybatis:注解版

第一章&#xff1a;注解版 导入配置&#xff1a; <groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.1</version> </dependency> 步骤&#xff1a; 配置数据源见 Druid…

2025年最新在线模型转换工具优化模型ncnn,mnn,tengine,onnx

文章目录 引言最新网址地点一、模型转换1. 框架转换全景图2. 安全的模型转换3. 网站全景图 二、转换说明三、模型转换流程图四、感谢 引言 在yolov5&#xff0c;yolov8&#xff0c;yolov11等等模型转换的领域中&#xff0c;时间成本常常是开发者头疼的问题。最近发现一个超棒的…

理解知识蒸馏中的散度损失函数(KLDivergence/kldivloss )-以DeepSeek为例

1. 知识蒸馏简介 什么是知识蒸馏&#xff1f; 知识蒸馏&#xff08;Knowledge Distillation&#xff09;是一种模型压缩技术&#xff0c;目标是让一个较小的模型&#xff08;学生模型&#xff0c;Student Model&#xff09;学习一个较大、性能更优的模型&#xff08;教师模型…

Electron使用WebAassembly实现CRC-8 MAXIM校验

Electron使用WebAssembly实现CRC-8 MAXIM校验 将C/C语言代码&#xff0c;经由WebAssembly编译为库函数&#xff0c;可以在JS语言环境进行调用。这里介绍在Electron工具环境使用WebAssembly调用CRC-8 MAXIM格式校验的方式。 CRC-8 MAXIM校验函数WebAssebly源文件 C语言实现CR…

Vue3.0实战:大数据平台可视化

文章目录 创建vue3.0项目项目初始化项目分辨率响应式设置项目顶部信息条创建页面主体创建全局引入echarts和axios后台接口创建express销售总量图实现完整项目下载项目任何问题都可在评论区,或者直接私信即可。 创建vue3.0项目 创建项目: vue create vueecharts选择第三项:…

vector容器(详解)

本文最后是模拟实现全部讲解&#xff0c;文章穿插有彩色字体&#xff0c;是我总结的技巧和关键 1.vector的介绍及使用 1.1 vector的介绍 https://cplusplus.com/reference/vector/vector/&#xff08;vector的介绍&#xff09; 了解 1. vector是表示可变大小数组的序列容器。…

Airflow:深入理解Apache Airflow Task

Apache Airflow是一个开源工作流管理平台&#xff0c;支持以编程方式编写、调度和监控工作流。由于其灵活性、可扩展性和强大的社区支持&#xff0c;它已迅速成为编排复杂数据管道的首选工具。在这篇博文中&#xff0c;我们将深入研究Apache Airflow 中的任务概念&#xff0c;探…

开发环境搭建-4:WSL 配置 docker 运行环境

在 WSL 环境中构建&#xff1a;WSL2 (2.3.26.0) Oracle Linux 8.7 官方镜像 基本概念说明 容器技术 利用 Linux 系统的 文件系统&#xff08;UnionFS&#xff09;、命名空间&#xff08;namespace&#xff09;、权限管理&#xff08;cgroup&#xff09;&#xff0c;虚拟出一…

JavaScript 基础 - 7

关于JS函数部分的学习和一个案例的练习 1 函数封装 抽取相同部分代码封装 优点 提高代码复用性&#xff1a;封装好的函数可以在多个地方被重复调用&#xff0c;避免了重复编写相同的代码。例如&#xff0c;编写一个计算两个数之和的函数&#xff0c;在多个不同的计算场景中都…