【小白学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防火墙的朋友,我们从基础操作进行演示,熟练的朋友可以跳过这一…

【Elasticsearch】_all 查询

在 Elasticsearch 中,_all 查询是一种特殊的查询方式,用于在多个索引或数据流中执行搜索操作,而无需显式指定每个目标索引或数据流的名称。以下是关于 _all 查询的详细说明: _all 查询概述 用途:_all 查询允许您在多个…

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

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

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

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

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

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

[paddle] 矩阵相关的指标

行列式 det 行列式定义参考 d e t ( A ) ∑ i 1 , i 2 , ⋯ , i n ( − 1 ) σ ( i 1 , ⋯ , i n ) a 1 , i 1 a 2 , i 2 , ⋯ , a n , i n det(A) \sum_{i_1,i_2,\cdots,i_n } (-1)^{\sigma(i_1,\cdots,i_n)} a_{1,i_1}a_{2,i_2},\cdots, a_{n,i_n} det(A)i1​,i2​,⋯,in​…

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

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

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

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

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

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

deepseek本地部署会遇到哪些坑

在本地部署DeepSeek(或其他类似AI模型)时,可能会遇到以下常见问题及解决方案: 1. 硬件资源不足 问题表现: GPU不兼容(如型号过旧)、显存不足(OOM错误)或CPU模式性能极低。解决方案: 确认GPU支持CUDA,检查显存需求(如至少16GB显存)。使用nvidia-smi监控显存,通过降…

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

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

解决国内服务器 npm install 卡住的问题

在使用国内云服务器时,经常会遇到 npm install 命令执行卡住的情况。本文将分享一个典型案例以及常见的解决方案。 问题描述 在执行以下命令时: mkdir test-npm cd test-npm npm init -y npm install lodash --verbose安装过程会卡在这个状态&#xf…

【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.输入需求生成可用…

DeepSeek技术深度解析:从不同技术角度的全面探讨

DeepSeek技术深度解析:从不同技术角度的全面探讨 引言 DeepSeek是一个集成了多种先进技术的平台,旨在通过深度学习和其他前沿技术来解决复杂的问题。本文将从算法、架构、数据处理以及应用等不同技术角度对DeepSeek进行详细分析。 一、算法层面 深度学…

SpringBoot 整合 Mybatis:注解版

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

[Linux]如何將腳本(shell script)轉換到系統管理服務器(systemd service)來運行?

[InfluxDB]Monitor Tem. and Volt of RaspberryPi and Send Message by Line Notify 在Linux中&#xff0c;shell腳本(shell script)常用於運行各種自動化的流程&#xff0c;包含API串接&#xff0c;設置和啟動應用服務等等&#xff0c;腳本語法也相對易學易讀&#xff0c;因此…

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;教师模型…