Transformer,革命性的深度学习架构

在这里插入图片描述

Transformer 是一种革命性的深度学习架构,专门设计用于处理序列数据,特别是在自然语言处理(NLP)任务中表现卓越。它由 Vaswani 等人在 2017 年发表的论文《Attention is All You Need》中首次提出,打破了当时基于循环神经网络(RNN)和卷积神经网络(CNN)的序列建模常规,完全依赖自注意力机制实现高效的并行计算和对长距离依赖关系的有效建模。

一、核心思想

Transformer沿袭seq2seq的encoder-decoder架构,但以Self-Attention替换RNN,实现并行训练与全局信息捕获。作为首个仅依赖自注意力计算输入输出表示,无需序列对齐的转换模型,其设计核心融合自注意力与前馈神经网络,使模型预测时能灵活聚焦各特征。


找出句中单词之间的关系并给出正确的注意力。自注意力允许模型查看输入序列中的其他单词,以便更好地理解序列中的某个单词。

第一步:获取输入句子的每一个单词的表示向量 X,X由单词的 Embedding 和单词位置的 Embedding 相加得到。

第二步:将得到的单词表示向量矩阵传入 Encoder 中,经过 Encoder block 后可以得到句子所有单词的编码信息矩阵 C。单词向量矩阵用 X(n×d)表示, n 是句子中单词个数,d 是表示向量的维度 (论文中 d=512)。每一个 Encoder block 输出的矩阵维度与输入完全一致。

第三步:将 Encoder 输出的编码信息矩阵 C传递到 Decoder 中,Decoder 依次会根据当前翻译过的单词 1~ i 翻译下一个单词 i+1。在使用的过程中,翻译到单词 i+1 的时候需要通过 Mask (掩盖) 操作遮盖住 i+1 之后的单词。

二、整体架构

在这里插入图片描述

Transformer 采用了经典的 Encoder-Decoder 结构,由两个主要部分组成:

1. 编码器(Encoder)

作用:对输入序列进行编码,生成其高级抽象的语义表示。

结构

  • 输入嵌入层(Input Embedding Layer):将原始文本词汇映射为固定长度的向量,通常是通过查找预训练的词嵌入表实现。
  • 位置编码(Positional Encoding):由于 Transformer 没有循环结构,无法直接捕捉序列中词语的顺序信息,因此需要人为注入位置信息。位置编码通常以向量形式附加到词嵌入上,以保留输入序列中的词语排列顺序。
  • 编码器层(Encoder Layers):由多个相同的层堆叠而成,每一层包括两个核心子模块:
    • 多头自注意力(Multi-Head Attention):让模型能够关注输入序列中不同位置之间的相关性,同时处理整个序列,无需按照顺序逐个处理。每个注意力头从不同的子空间视角捕获输入间的关联。
    • 前馈神经网络(Feed-Forward Network, FFN):包含两个全连接层(FC),通常中间层使用ReLU激活函数,为模型提供额外的非线性变换能力。
  • 残差连接(Add & Norm):在每个子模块(Attention 和 FFN)之后添加,将原始输入与经过子模块计算后的结果相加,帮助缓解深度网络中的梯度消失问题,促进信息流。
  • 层归一化(Layer Normalization):在残差连接之后应用,对每一层的输出进行标准化,使各层输出保持相近的尺度,提高训练稳定性与收敛速度。
2. 解码器(Decoder)

作用:根据编码器生成的语义表示,生成目标序列(如翻译后的句子或回答问题的文本)。

结构

  • 输入嵌入层(Input Embedding Layer):同编码器,对目标序列词汇进行嵌入。
  • 位置编码(Positional Encoding):同样注入位置信息,确保模型理解目标序列中的词语排列。
  • 解码器层(Decoder Layers):同样由多个相同层堆叠,每一层包含三个核心子模块:
    • 多头自注意力(Multi-Head Attention):与编码器中的自注意力相似,但受限于自回归性,即在预测当前词时只能访问已生成的词,不能看到后续位置的信息。
    • 编码器-解码器注意力(Encoder-Decoder Attention):让解码器能关注编码器输出,获取与当前生成词相关的源序列信息,实现源序列与目标序列之间的交互。
    • 前馈神经网络(Feed-Forward Network, FFN):与编码器中的 Feed Forward 结构相同,提供非线性变换能力。
  • 残差连接(Add & Norm):与编码器相同,存在于每个子模块之后。
  • 层归一化(Layer Normalization):与编码器相同,位于残差连接之后。

三、核心组件详解

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

Self-Attention 结构

原理:将注意力机制分解为多个并行的注意力头,每个头负责从不同的子空间角度计算注意力权重。每个头的注意力计算公式如下:

Attention(Q, K, V) = softmax(\frac{QK^T}{\sqrt{d_k}})V

Self-Attention
自注意力机制的初始化阶段涉及从编码器接收到的每个词的输入向量X中分别导出三个独特的向量表示:Query (Q)、Key (K) 和 Value (V)。具体来说,对每一个单词,我们都会对应地生成一个Q向量、一个K向量及一个V向量,它们通过对输入序列的词嵌入进行线性变换得到;d_k 是键向量的维度,根号下的除法操作有助于稳定梯度并防止数值溢出。

Multi-Head Attention
Multi-Head Attention 是由多个 Self-Attention 组合形成。将输入向量分别通过不同的线性变换矩阵产生多个 QKV 组合,各自执行注意力计算,然后将各个头的结果拼接并经过另一个线性变换得到最终的注意力输出。

2. 前馈神经网络(Feed Forward)

Feed Forward 主要负责对自注意力层输出的特征向量进行深度非线性变换,提取更丰富的特征表示,增强模型的表达能力和适应性,同时通过与残差连接和层归一化的配合,确保模型训练的稳定性和效率。

结构:通常由两个全连接层组成,中间可能包含激活函数(如 ReLU),形式如下:

FFN(x) = max(0, xW_1 + b_1)W_2 + b_2

其中,W_1W_2 是权重矩阵,b_1b_2 是偏置项。

四、训练与推理

训练

Transformer 使用最大似然估计(MLE)作为损失函数进行端到端训练。对于机器翻译任务,训练数据是一对对齐的源语言和目标语言句子。模型的训练过程包括:

  • 编码器:将源语言句子通过编码器得到其上下文相关的向量表示。
  • 解码器:在给定编码器输出和之前生成的目标语言词的情况下,解码器逐词生成目标语言句子。
  • 损失计算:对比模型生成的序列与真实目标序列,计算交叉熵损失。

训练过程中普遍采用 教师强制(Teacher Forcing) 策略,即在解码器每一步的输入中使用真实的上一个目标词,而非模型当前预测的词。

推理

在实际应用中,模型进行推理时不再使用教师强制。常用 自回归解码 方法,如 贪心搜索 或更复杂的 束搜索(Beam Search),以生成最有可能的输出序列。这些方法在每一步选择概率最高的词或一组词继续生成,直到遇到结束符或达到最大长度限制。

五、优势与影响

Transformer 的关键优势包括:

  • 并行计算:自注意力机制天然支持并行计算,显著减少序列处理的时间复杂度,尤其适合大规模数据集和长序列。
  • 全局建模能力:能够直接捕获序列中任意两个位置之间的依赖关系,有效解决 RNN 在处理长距离依赖时的局限性。
  • 高性能:在多种 NLP 任务上,如机器翻译、文本分类、问答系统等,Transformer 及其变体(BERT、GPT、Transformer-XL 等)取得了超越传统模型的性能。

Transformer 的出现不仅引领了 NLP 领域的技术革新,还启发了其他领域(如计算机视觉、语音识别、推荐系统等)对注意力机制的应用,对深度学习研究与实践产生了深远影响。

当然任何一种事物都需要创新与迭代,基于以上对于Transformer模型了解可知,Transformer计算成本较高、处理长序列效率相对低、位置编码有它的局限性、局部信息捕获能力较弱等方面。这些挑战推动了研究者持续探索改进Transformer模型结构、优化训练策略以及开发更高效、更轻量级的变种模型。

在这里插入图片描述

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

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

相关文章

2024最新版Android studio安装入门教程(非常详细)

目录 JDK安装与配置 一、下载JDK 二、JDK安装 三、JDK的环境配置 四、JDK的配置验证 Android studio安装 Android studio连接手机真机调试(以华为鸿蒙为例) 一、新建一个android项目 二、进入项目面板 三、配置Android Studio 四、安装手机驱…

【linux】进程替换的应用|shell解释器的实现

当我们学过了进程替换之后,本篇文章可以根据进程替换的知识带你自主实现一个shell命令行 实现步骤 1.显示命令行提示 2.读取输入指令以及对应选项 3.分割第二步的指令以及选项到命令行参数表中 4.处理内建命令 5.进程替换 1.显示命令行提示 我们通过观察bash的命令行…

Linux 文件相关命令

一、查看文件命令 1)浏览文件less 默认查看文件的前 10 行。 less /etc/services ##功能说明: #1.默认打开首屏内容 #2.按【回车】按行访问 #3.按【空格】按屏访问 #4.【从上向下】搜索用/111,搜索包含111的内容,此时按n继续向下搜&#x…

JAVAEE之IoCDI

Spring 是⼀个 IoC(控制反转)容器,作为容器, 那么它就具备两个最基础的功能: • 存 • 取 Spring 容器管理的主要是对象, 这些对象, 我们称之为"Bean". 我们把这些对象交由Spring管理, 由 Spring来负责对象的创建…

想学网络安全,从哪里开始?网络安全的学习路线

网络安全学习路线: 想学习网络安全专业的知识,想当黑客,但是不知道该从哪里开始学。 我给你一个路线! 清晰图片和大纲:https://docs.qq.com/doc/DU1lpVFpSbWVrd2p3

面试官:为什么忘记密码要重置,而不是告诉我原密码?

前端训练营:1v1私教,终身辅导计划,帮你拿到满意的 offer。 已帮助数百位同学拿到了中大厂 offer。欢迎来撩~~~~~~~~ Hello,大家好,我是 Sunday。 最近有个同学在面试中遇到了一个很有意思的问题,我相信大多…

蓝桥杯23年第十四届省赛-异或和之和|拆位、贡献法

题目链接: 蓝桥杯2023年第十四届省赛真题-异或和之和 - C语言网 (dotcpp.com) 1.异或和之和 - 蓝桥云课 (lanqiao.cn) 参考题解: 蓝桥杯真题讲解:异或和之和 (拆位、贡献法)-CSDN博客 洛谷P9236 [蓝桥杯 2023 省 A]…

【T5中的激活函数】GLU Variants Improve Transformer

【mT5中的激活函数】GLU Variants Improve Transformer 论文信息 阅读评价 Abstract Introduction Gated Linear Units (GLU) and Variants Experiments on Text-to-Text Transfer Transformer (T5) Conclusion 论文信息 名称内容论文标题GLU Variants Improve Transfo…

flutter获取手机中的系统路径信息

https://www.bilibili.com/video/BV1wE421g7sw获取系统中的路径 获取系统中的路径,并在这个路径中创建一个文本文件【str.txt】 然后进行写入【str.txt】 再读取这个文件【str.txt】 手机没有开通root权限无法看到写入到【应用程序文档目录】路径中的文件 用来…

MySQL故障排查与优化

一、MySQL故障排查 1.1 故障现象与解决方法 1.1.1 故障1 1.1.2 故障2 1.1.3 故障3 1.1.4 故障4 1.1.5 故障5 1.1.6 故障6 1.1.7 故障7​ 1.1.8 故障8 1.1.9 MySQL 主从故障排查 二、MySQL优化 2.1 硬件方面 2.2 查询优化 一、MySQL故障排查 1.1 故障现象与解决方…

【考研经验贴】24考研860软件工程佛系上岸经验分享【丰富简历、初复试攻略、导师志愿、资料汇总】

😊你好,我是小航,一个正在变秃、变强的文艺倾年。 🔔本文讲解24考研860软件工程佛系上岸经验分享【丰富简历、初复试攻略、导师志愿、资料汇总】,期待与你一同探索、学习、进步,一起卷起来叭! 目…

玩转C语言——文件操作、预处理、编译、链接

前言: 经过前面的学习,我们已经对C语言的语法学习完毕了,今天,我们这节内容是为了修炼内功,为以后的学习打下一个坚实基础。话不多说,开始我们今天的学习吧! 一、文件操作 1.⼆进制⽂件和⽂本⽂…

一文了解低功耗蓝牙BLE

低功耗蓝牙技术可以构建两种类型的设备:双模设备和单模设备。双模设备既支持经典蓝牙又支持低功耗蓝牙。单模设备只支持低功耗蓝牙。还有仅支持经典蓝牙的设备。 在链路层,设备被分为广播者、扫描者、从设备和主设备。广播者是传输数据包的设备,扫描者是接收广播者的数据包…

C语言 | Leetcode C语言题解之第10题正则表达式匹配

题目: 题解: bool isMatch(char* s, char* p) {int m strlen(s);int n strlen(p);// dp[i][j] 表示 s 的前 i 个字符和 p 的前 j 个字符是否匹配bool dp[m 1][n 1];memset(dp, false, sizeof(dp));dp[0][0] true; // 空字符串和空模式匹配// 处理 …

00-JAVA基础-javassist字节码操作

字节码操作 什么是字节码 Java字节码(Java bytecode)是Java虚拟机(JVM)执行的一种虚拟指令格式。它是由Java编译器生成的,基于栈的指令集,用于在Java虚拟机上执行。字节码文件包含了JVM能够识别的指令&am…

【JSON2WEB】 12基于Amis-admin的动态导航菜单树

【JSON2WEB】01 WEB管理信息系统架构设计 【JSON2WEB】02 JSON2WEB初步UI设计 【JSON2WEB】03 go的模板包html/template的使用 【JSON2WEB】04 amis低代码前端框架介绍 【JSON2WEB】05 前端开发三件套 HTML CSS JavaScript 速成 【JSON2WEB】06 JSON2WEB前端框架搭建 【J…

Flume 拦截器概念及自定义拦截器的运用

文章目录 Flume 拦截器拦截器的作用拦截器运用1.创建项目2.实现拦截器接口3.编写事件处理逻辑4.拦截器构建5.打包与上传6.编写配置文件7.测试运行 Flume 拦截器 在 Flume 中,拦截器(Interceptors)是一种可以在事件传输过程中拦截、处理和修改…

FreeRtos入门-4 事件组与同步点

事件组 事件组 同步点 创建 xEventGroupCalc xEventGroupCreate();//1&#xff0c;创建事件组 xEventGroupSyc xEventGroupCreate() 设置 xEventGroupSetBits(xEventGroupCalc,(1<<0));//设置事件组bit0 位 xEventGroupSync(xEventGroupSyc,BUSYING,ALL,portMAX…

VB 通过COM接口解析PSD文件

最近有PS测评的需求&#xff0c;故而想到了解析psd文件&#xff0c;目的就是为了获取文档信息和图层信息&#xff1b;获取PS的图像信息有很多方式&#xff0c;有过程性的&#xff0c;比如监听PS的各种操作事件&#xff1b;有结果性的&#xff0c;比如本文写的解析PSD文件。 0.…