从全局角度回顾Transformer白话版

devtools/2025/3/28 11:17:31/

文章目录

  • 一、Transformer就在你身边
  • 二、Transformer基本概念
    • 1. 多头注意力机制
    • 2. 位置编码
    • 3.残差连接
  • 三、Transformer的结构
    • 1.纯 Encoder 模型(例如 BERT)
    • 2.纯 Decoder 模型(例如 GPT)
    • 3.Encoder-Decoder 模型
  • 四、应用案例
    • 1.机器翻译
    • 2.文本生成
    • 3.问答系统
    • 四、面试会用到
    • 1. self-attention机制是什么?(高频)
    • 2. 为什么Transformer需要位置编码?以及常见的位置编码有哪些?
    • 3. 残差链接的作用?
    • 4.解释多头注意力机制?
    • 5.Transformer和RNN、LSTM相比,优势在哪?
  • 后记

自从 BERT 和 GPT 模型取得重大成功之后, Transformer 结构已经替代了循环神经网络 (RNN) 和卷积神经网络 (CNN),成为了当前 NLP 模型的标配。

一、Transformer就在你身边

标题怎么说?被说烂的GPT里面的“T”就是Transformer本尊啦。GPT的全称是the Generative Pretrained Transformer(生成式预训练变换器)。那么问题来了。GPT与Transformer有什么关系呢?
Transformer是一种自注意力机制的深度学习模型框架,目前广泛应用在处理文本(自然语言处理)中。
而GPT是OpenAI开发的一种大语言模型,使用了Transformer架构,并在大量的数据上进行训练。从而有了强大的语言理解和生成能力。
简单的说,GPT的核心就是Transformer
具体的说呢,GPT使用了Transformer中的编码器部分,比如,增加了更多的参数和训练数据,从而提高了模型的性能和效果。

二、Transformer基本概念

Transformer由一个编码器和解码器组成,编码器里面有多头注意力和前馈神经网络,分别都有残差连接,这样的n个transformer block就组成了编码器。解码器是在编码器的基础上多了带掩码的多头自注意力。

1. 多头注意力机制

让模型处理文本时关注时,能同时关注不同位置的信息。它能让模型学习到文本中的长距离依赖关系,更好的理解和处理语言。

2. 位置编码

Transformer无法感知单词顺序。位置编码就是给单词富裕位置信息,让模型能捕捉到句子结构和意义。

3.残差连接

是为了防止模型训练时出现梯度消失的问题。简单来讲,就是模型的每一层之间添加了一条捷径,让信息能更顺畅的流动。这样呢,模型可以训练的更深,效果也会更好。

三、Transformer的结构

标准的 Transformer 模型主要由两个模块构成:
Encoder(左边):负责理解输入文本,为每个输入构造对应的语义表示(语义特征);
Decoder(右边):负责生成输出,使用 Encoder 输出的语义表示结合其他输入来生成目标序列。
在这里插入图片描述
这两个模块可以根据任务的需求而单独使用:

1.纯 Encoder 模型(例如 BERT)

纯 Encoder 模型只使用 Transformer 模型中的 Encoder 模块,也被称为自编码 (auto-encoding) 模型。在每个阶段,注意力层都可以访问到原始输入句子中的所有词语,即具有“双向 (Bi-directional)”注意力。适用于只需要理解输入语义的任务,例如句子分类、命名实体识别。
BERT 是第一个基于 Transformer 结构的纯 Encoder 模型,它在提出时横扫了整个 NLP 界,在流行的 GLUEhttps://arxiv.org/abs/1804.07461 基准上超过了当时所有
的最强模型。随后的一系列工作对 BERT 的预训练目标和架构进行调整以进一步提高性能。

2.纯 Decoder 模型(例如 GPT)

纯 Decoder 模型只使用 Transformer 模型中的 Decoder 模块。在每个阶段,对于给定的词语,注意力层只能访问句子中位于它之前的词语,即只能迭代地基于已经生成的词语来逐个预测后面的词语,因此也被称为自回归 (auto-regressive) 模型。
纯 Decoder 模型的预训练通常围绕着预测句子中下一个单词展开。纯 Decoder 模型适合处理那些只涉及文本生成的任务。对 Transformer Decoder 模型的探索在在很大程度上是由OpenAI 带头进行的,通过使用更大的数据集进行预训练,以及将模型的规模扩大,纯 Decoder 模型的性能也在不断提高。适用于生成式任务,例如文本生成。

3.Encoder-Decoder 模型

Encoder-Decoder 模型或 Seq2Seq 模型(例如 BART、T5):适用于需要基于输入的生成式任务,例如翻译、摘要。

四、应用案例

1.机器翻译

Transformer让机器翻译更自然准确,像谷歌翻译这些主流翻译系统等都用了它。

2.文本生成

相信这块大家都不陌生了。Transformer可用于新闻写作、故事创作和诗歌生成。

3.问答系统

最常见的就是智能客服、智能助手、语音助手等。

四、面试会用到

1. self-attention机制是什么?(高频)

self-attention机制是Transformer核心,它能让模型在处理序列数据时,为不同位置信息分配权重,通过生成查询向量Q、键向量K和值向量V,计算点积、归一化得到权重,在对值向量加权求和,以此捕捉长距离依赖关系,提升模型性能。

2. 为什么Transformer需要位置编码?以及常见的位置编码有哪些?

因为Transformer本身无法处理序列顺序信息,而位置编码能赋予其顺序信息,这对语义理解很关键。
常见的位置编码有正弦位置编码(预先计算生成位置向量,处理长序列效果好)和学习位置编码(模型训练时自动学习位置编码,比较灵活)。

3. 残差链接的作用?

主要是解决深度模型训练时的梯度消失和梯度爆炸问题。
在深度网络中,如果层数太多,随着训练的进行,梯度在反向传播过程中可能会变得很大或很小,导致模型难以训练。残差连接通过在网络层间添加捷径,让梯度能够更顺畅的反向传播,这样模型就可以训练的更深,提高模型的表达能力和训练效果。简单来说,就是帮助深度模型更好的学习和收敛。

4.解释多头注意力机制?

多头注意力机制是同时用多个注意力头,每个头独立学习不同特征。将输入分配到各头进行self-attention计算后拼接,再线性变换输出。它能让模型多角度关注序列,捕捉丰富复杂特征和依赖关系,增强表达能力,提升任务性能。

5.Transformer和RNN、LSTM相比,优势在哪?

Transformer相比RNN、LSTM有不少优势。
首先是并行计算能力强,RNN这类模型按顺序处理序列,难以利用并行计算加速,而Transformer能同时处理序列中各个位置,大大节省空间。
其次,它对长序列数据的处理效果更好,RNN和LSTM在处理长序列时容易出现梯度消失或梯度爆炸问题,导致难以捕捉长距离依赖关系,Transformer的self-attention机制则能有效解决这个问题,能直接建模序列中任意位置间的依赖,更好的理解长序列语义。

后记

这本来是一个前记,但是一不小心写多了放到前面不妥,写成了年度总结?或许是日记?又或许是…写都写了,删了又不太好叭?!哈哈,所以就诞生出一个后记。

时隔半年,我又回来啦!看到最新一篇笔记,半年前发生的事情恍如昨日。历历在目间让我发觉记录的必要性,所以重新提笔,想要记录这美好的但又不怎么美好的一切。这半年发生了很多事情,小到我自己的抓马生活,大到AI界的重大突破DeepSeek。万幸的是,今年是一个旺我的年哈哈,我非常期待,我满怀热情与信心。
身为一个理工女,我没有华丽的辞藻,没有优美的比喻,只有袒露赤城。有着不该从理工女身上看到的感性,感性到什么程度呢?大概就是早高峰在公交车上,耳机里传来那首“西安人的城墙下是西安人的歌”的前奏就已经泪流满面(包括正在写这句话此刻的我),从那之后我不敢再去听这首歌,前奏一起就忍不住了,对这首歌有了后遗症。害,乱七八糟说了这么多。我相信所有的经历都是为了雕刻出更好的自己,希望大家都能成为更好的自己。那就从学习万能的Transformer开始叭!我们都是坠坠棒的!


http://www.ppmy.cn/devtools/168885.html

相关文章

vue3之写一个aichat---已聊天组件部分功能

渲染聊天数据 这个不必多说,直接从stores/chat中取出聊天列表数据渲染就好,因为前面添加的消息都是按照用户消息、AI助手消息这样添加的,效果如图 但是需要注意每条助手消息的状态,需要根据状态显示不同的图标或不显示图标&…

解决 WSL1 Ubuntu 24.04 更新失败

问题 wsl1 的 Ubuntu 24.04 执行: sudo apt update sudo apt upgrade -y更新过程安装失败, 提示错误: Setting up systemd (xxxx-xxx)... Failed to take /etc/passwd lock: Invalid argument dpkg: error processing package systemd (--configure):installed systemd pack…

MyBatis 学习经验分享

MyBatis 是一个广泛使用的 Java 持久层框架,它为开发者提供了灵活、易用的数据库操作方式。与 Hibernate 等全自动化 ORM(对象关系映射)框架不同,MyBatis 采用了更精细的控制,允许开发者在 SQL 语句和 Java 对象之间进…

【Linux】systemV消息队列和信号量

个人主页~ 消息队列和信号量 一、消息队列1、实现原理2、系统调用接口(一)创建获取一个消息队列(二)控制消息队列(三)发送消息(四)在消息队列中获取数据块 二、信号量1、原理2、系统…

python基础8 单元测试

通过前面的7个章节,作者学习了python的各项基础知识,也学习了python的编译和执行。但在实际环境上,我们需要验证我们的代码功能符合我们的设计预期,所以需要结合python的单元测试类,编写单元测试代码。 Python有一个内…

第十五届蓝桥杯C/C++组:宝石组合题目(从小学奥数到编程题详解)

这道题目真的一看就不好做,如果直接暴力去做百分之90必挂掉,那么这道题目到底应该怎么去做呢?这我们就得从小学奥数开始聊了。(闲话:自从开始蓝桥杯备赛后,每天都在被小学奥数震惊,为什么我小的…

WebRTC中音视频服务质量QoS之RTT衡量网络往返时延的加权平均RTT计算机制‌详解

WebRTC中音视频服务质量QoS之RTT衡量网络往返时延加权平均RTT计算机制‌的详解 WebRTC中音视频服务质量QoS之RTT衡量网络往返时延加权平均RTT计算机制‌的详解 WebRTC中音视频服务质量QoS之RTT衡量网络往返时延加权平均RTT计算机制‌的详解前言一、 RTT 网络往返时延的原理‌1、…

解释 一下什么是 React 的 useRef Hook

useRef 是 React 中的一个 Hook,用于创建一个可以持久化存储的可变引用。它通常用于访问 DOM 元素或保存任何可变值,而不触发组件的重新渲染。本文将详细介绍 useRef 的定义、用法、适用场景及最佳实践。 1. 什么是 useRef? 1.1 定义 useR…