Transformer 和 Attention机制入门

1. 什么是 Transformer

  1. 背景:
    在自然语言处理领域,早期常使用循环神经网络(RNN)及其变体(如 LSTM、GRU)来处理序列数据,如机器翻译、文本生成等任务。然而,RNN 结构存在以下问题:

    • 随着序列长度增加,模型难以捕捉远距离词汇之间的关联,且训练会出现梯度消失或梯度爆炸等现象。
    • 训练时难以进行大规模并行计算,速度较慢。
  2. Transformer 的诞生:
    2017 年,论文《Attention is All You Need》提出了 Transformer 模型。Transformer 彻底摒弃了循环结构,转而依赖 Attention 机制 来处理序列中的依赖关系,大幅提升了训练效率,并能更好地捕捉长距离依赖。

  3. 主要结构:
    Transformer 的整体结构可以概括为编码器(Encoder)和解码器(Decoder)两大部分:

    • Encoder:由多个相同的编码器层(Encoder Layer)堆叠而成,每一层主要包含 多头自注意力(Multi-Head Self-Attention)前馈网络(Feed-Forward Network)
    • Decoder:与编码器类似,也堆叠了多层的解码器层(Decoder Layer)。解码器层包含三个主要部分:掩码多头自注意力(Masked Multi-Head Self-Attention)、**与编码器交互的多头注意力(Encoder-Decoder Attention)**以及 前馈网络
  4. 优势:

    • 能更高效地并行训练:由于不需要按时间步逐个地处理序列。
    • 能更好地捕捉句子中远距离的依赖关系。
    • 在 NLP 多个任务(翻译、问答、文本生成等)上有显著的效果提升。

2. 什么是 Attention

  1. Attention 机制的动机:
    在处理一句话时,通常并不是句子中所有词对当前输出预测都同等重要。例如,“我喜欢吃苹果”这句话中,如果要预测“吃”的后面那个词,就需要更多关注“苹果”,而不必太在意“我”。Attention 机制通过加权的方式,让模型自动学习“关注”句子中最相关的部分。

  2. 计算过程概览:
    在 Transformer 中,一个 Attention 模块通常包含以下步骤:

    1. 将输入向量分别映射为 Query (Q)Key (K)Value (V)
    2. 通过 QK 的点积(或其他度量)计算相似度,得到注意力分布(即每个单词对于当前 Query 的重要程度)。
    3. 将注意力分数与 V 相乘以加权输出,得到最终的注意力结果。
  3. Self-Attention(自注意力):
    在 Transformer 的 EncoderDecoder 内部,每个单词都将自己当作 Query,与整句话中的所有单词(包含自己)进行 Key、Value 计算,从而捕捉全局上下文信息。

    • 具体来说,句子中每个位置都会输出自己的 Q、K、V,然后进行点积计算。这样,网络能够了解一个词与其他所有词(甚至包括它自己)之间的关系。
  4. Multi-Head Attention(多头注意力):
    自注意力 只是 Attention 机制的一个核心操作。Transformer 并不只做一次自注意力计算,而是把 Q、K、V 分成多个子空间(即多个“头”,Heads),在每个子空间分别进行注意力计算,然后再将各子空间的结果拼接起来。这样做的好处是模型可以学习到不同角度的语义关系,提升表达能力。

  5. Encoder-Decoder Attention:

    • 解码器在生成输出时,除了需要关注解码器本身已有的输出序列(自注意力)外,还需要关注编码器输出的上下文表示(Encoder 输出),这就是 Encoder-Decoder Attention
    • 模型在生成下一个词时,通过这个注意力模块能够“查看”输入句子的每个词与当前要生成的目标词之间的关联。

3. 重点总结

  • Transformer 的核心特点

    • 不再依赖传统 RNN 或 CNN 结构,而是使用 Attention 完成序列到序列的映射。
    • 通过自注意力(Self-Attention)模块能够同时关注序列中所有位置的依赖关系,让模型可以高效并行并捕捉长距离依赖。
    • 模型结构由堆叠的编码器层和解码器层组成,形成高度模块化的设计。
  • Attention 的核心作用

    • 通过 Q-K-V 机制计算每个词对目标词的相关性,将最重要的上下文信息赋予更高的权重。
    • 多头注意力能够从不同的投影空间提取信息,提高模型对语义的捕捉能力。

总之,Transformer 是一种彻底基于 Attention 机制的神经网络结构,克服了 RNN 难以并行以及捕捉长距离依赖不足的缺点。Attention(尤其是自注意力)在其中扮演了最重要的角色,通过对不同词之间关联度的计算和加权,不仅显著提升了模型的性能,还极大加速了训练与推理过程。
接下来我会在我的这个专栏里详细解读一下Transformer的原理,以及常见的LLM是如何使用Transformer这个历史转折点一样的结构的。希望大家多多关注!

参考: jalammar

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

注册中心如何选型?Eureka、Zookeeper、Nacos怎么选

这是小卷对分布式系统架构学习的第9篇文章,第8篇时只回答了注册中心的工作原理的内容,面试官的第二个问题还没回答,今天再来讲讲各个注册中心的原理,以及区别,最后如何进行选型 上一篇文章:如何设计一个注册…

C++ 复习总结记录三

C 复习总结记录三 主要内容 1、类的六个默认成员函数 2、构造函数 3、析构函数 4、拷贝构造函数 5、赋值运算符重载 6、const 成员函数 7、取地址及 const 取地址操作符重载 一 类的六个默认成员函数 如果一个类中什么成员都没有,简称为空类。空类中并不是…

【简博士统计学习方法】第1章:4. 模型的评估与选择

4. 模型的评估与选择 4.1 训练误差与测试误差 假如存在样本容量为 N N N的训练集,将训练集送入学习系统可以训练学习得到一个模型,我们将这么模型用决策函数的形式表达,也就是 y f ^ ( x ) y\hat{f}(x) yf^​(x),关于模型的拟合…

计算机网络 (30)多协议标签交换MPLS

前言 多协议标签交换(Multi-Protocol Label Switching,MPLS)是一种在开放的通信网上利用标签引导数据高速、高效传输的新技术。 一、基本概念 MPLS是一种第三代网络架构技术,旨在提供高速、可靠的IP骨干网络交换。它通过将IP地址映…

【Java】JVM内存相关笔记

Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而一直存在,有些区域则是依赖用户线程的启动和结束而建立和销毁。 程序计数器&am…

鸿蒙 ArkUI实现地图找房效果

常用的地图找房功能,是在地图上添加区域、商圈、房源等一些自定义 marker,然后配上自己应用的一些筛选逻辑构成,在这里使用鸿蒙 ArkUI 简单实现下怎么添加区域/商圈、房源等 Marker. 1、开启地图服务 在华为开发者官网,注册应用&…

STM32-WWDG/IWDG看门狗

WWDG/IWDG一旦开启不能关闭,可通过选项字节在上电时启动硬件看门狗,看门狗计数只能写入不能读取。看门狗启用时,T6bit必须置1,防止立即重置。 一、原理 独立看门狗-超时复位 窗口看门狗-喂狗(重置计数器,…

基于JAVA+SSM的车辆运输管理

基于JAVASSM的车辆运输管理 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末附源码下载链接🍅 哈喽兄弟们&#…

【Linux系列】Vim 编辑器中的高效文本编辑技巧:删除操作

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

win10 VS2019上libtorch库配置过程

win10 VS2019上libtorch库配置过程 0 引言1 获取libtorch2 在VS上配置使用libtorch库3 结语 0 引言 💻💻AI一下💻💻   libtorch库是一个用于深度学习的C库,是PyTorch的官方C前端。它提供了用于构建和训练深度学习模…

通过gradle发布aar或jar携带sources-jar到maven nexus

找了很久,没有找到满意的。终于找到一个好的办法。 gradle7.x适用。比以前的写法简洁。 发布传统的jar工程 比如okhttp,fastjson等项目,纯java工程。 直接创建新文件publish.gradle: apply plugin: maven-publishProperties properties …

STM32-笔记38-I2C-oled实验

一、什么是I2C? I2C总线,全称Inter-Integrated Circuit(互连集成电路),是一种由Philips(现NXP半导体)公司在1980年代初开发的同步 串行 半双工通信总线。 二、有了串口通信为什么要使用I2C&…

【Linux系列】并发与顺序执行:在 Linux 脚本中的应用与选择

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

“AI 视频图像识别系统,开启智能新视界

咱老百姓现在的生活啊,那是越来越离不开高科技了,就说这 AI 视频图像识别系统,听起来挺高大上,实际上已经悄无声息地融入到咱们日常的方方面面,给咱带来了超多便利。 先讲讲安防领域吧,这可是 AI 图像识别的…

Burpsuite20241102macM1版安装

1、安装jdk11 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" brew update brew install openjdk11 echo export PATH"/opt/homebrew/opt/openjdk11/bin:$PATH" >> ~/.zshrc source ~/.zshrc j…

NVIDIA在CES 2025上的三大亮点:AI芯片、机器人与自动驾驶、全新游戏显卡

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

PDFMathTranslate: Star13.8k,一款基于AI的PDF文档全文双语翻译PDF文档全文双语翻译,保留格式神器,你应该需要它

嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法 PDFMathTranslate是一个开源项目,旨在为用户提供便捷的PDF科学论文翻译解决方案。它不仅能够翻译文本,还能保留公式、图表、目…

h264之多视点mvc编码及解码过程(JMVC平台举例)

h264标准参考平台JMVC是针对MVC标准的,JMVC支持多视点编码、合流、多视点解码操作。可以利用JMVC生成h264 mvc码流和解码。 JMVC的下载地址是:jvet / JMVC GitLabH.264/AVC multi-view coding (MVC) extension JMVC reference softwarehttps://vcgit.hh…

LabVIEW软件侵权分析与应对

问:如果涉及到LabVIEW软件的仿制或模仿,特别是在功能、界面等方面,如何判断是否构成侵权?该如何应对? 答:LabVIEW软件的侵权问题,尤其是在涉及到仿制或模仿其功能、界面、设计等方面&#xff0…

条款07:为多态基类声明virtual析构函数

1.工厂方法举例&#xff1a;多态基类析构函数不声明为virtual会发生什么 #include <iostream> using namespace std;class Base { public:~Base(){} };class Box :public Base { public:const static int s_i 0; };class Box1 :public Base { public:const static int …