为什么transformer比RNN和LSTM更好?

本文探讨了Transformer在自然语言处理中的优越性,对比了RNN、LSTM和CNN等传统模型,强调了Transformer通过并行计算、多头注意力机制和位置嵌入解决了长期依赖问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

transofrmer

在机器翻译的上下文中引入了transofrmer,目的是避免递归,以便允许并行计算(减少训练时间),并减少由于长期依赖性而导致的性能下降。主要特点是:

非顺序的:句子是整体处理的,而不是逐字处理。
self attention:这是新引入的“单位”,用于计算句子中单词之间的相似性得分。
位置嵌入:引入了另一种替代复发的创新。这个想法是使用固定或学习的权重,该权重对与句子中标记的特定位置有关的信息进行编码。

第一点是transofrmer不受长期依赖问题困扰的主要原因。原始transofrmer不依赖于过去的隐藏状态来捕获对先前单词的依赖性,而是整体上处理一个句子,这就是为什么不存在丢失(或“忘记”)过去信息的风险的原因。此外,多头注意力和位置嵌入都提供有关不同单词之间关系的信息。

RNN / LSTM

涉及该问题的递归神经网络和长期短期记忆模型的核心属性几乎相同:

顺序处理:句子必须逐字处理。
过去的信息通过过去的隐藏状态保留:序列到序列模型遵循Markov属性,假定每个状态仅取决于先前看到的状态。
第一个属性是无法并行训练RNN和LSTM的原因。为了将第二个单词编码为一个句子,我需要先前计算出的第一个单词的隐藏状态,因此我需要首先计算该单词。第二个特性是比较隐蔽的,但在概念上并不难掌握。由于先前计算出的隐藏状态,因此保留了RNN和LSTM中的信息。关键是特定单词的编码仅在下一个时间步被保留,这意味着单词的编码仅强烈影响下一个单词的表示,在几个时间步长之后其影响很快消失。由于通过特定单位对隐藏状态进行了更深的处理(带有要训练的参数数量增加),LSTM(以及GruRNN)可以提高他们可以学习的依赖范围,但是,问题本质上与递归有关。人们缓解此问题的另一种方法是使用双向模型,该模型从起点到终点以及从终点到起点从两个方向对同一句子进行编码,从而使句子结尾的单词具有对隐藏表示的创建产生更大的影响,但这只是一种解决方法,而不是长期依赖项的真正解决方案。

CNN

卷积神经网络在nlp中也被广泛使用,因为它们的训练速度非常快并且对短文本有效。他们解决依赖关系的方式是对同一句子应用不同的内核,实际上,由于它们是首次应用于文本(用于句子分类的卷积神经网络),因此它们被实现为多通道CNN。为什么不同的内核允许学习依赖关系?例如,由于大小为2的内核将学习单词对之间的关​​系,因此大小为3的内核将捕获单词三胞胎之间的关系,依此类推。这里明显的问题是,捕获句子中单词的所有可能组合之间的依存关系所需的不同内核的数量将是巨大且不切实际的,因为在增加输入句子的最大长度时,组合的数量呈指数增长。

总而言之,变形金刚要比其他所有架构都要好,因为它们完全避免了递归,通过整体处理句子以及学习单词之间的关系来感谢多头注意机制和位置嵌入。但是,必须指出,转换器也只能捕获用于训练它们的固定输入大小内的依赖项,即,如果我将最大句子大小设为50,则该模型将无法捕获a的第一个单词之间的依赖项。句子和单词出现的时间超过50个单词,就像在另一段中一样。诸如Transformer-XL之类的新转换器试图通过引入已存储的已编码语句的隐藏状态以在后续语句的后续编码中利用它们的隐含状态来重新引入递归,从而完全解决此问题。

### 各种深度学习模型的工作原理与应用场景 #### 卷积神经网络(CNN) 卷积神经网络是一种专门用于处理具有网格状拓扑的数据的神经网络架构,特别擅长于图像分类、目标检测等领域。其核心思想在于利用局部感知野权值共享来减少参数数量并提高计算效率[^2]。 - **工作原理**: CNN主要由卷积层、池化层全连接层组成。卷积层通过滤波器提取特征;池化层则降低维度以减少过拟合;最后通过全连接层完成分类任务。 - **应用场景**: 图像识别、视频分析、医学影像诊断。 ```python import tensorflow as tf from tensorflow.keras import layers, models model = models.Sequential() model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1))) model.add(layers.MaxPooling2D((2, 2))) model.add(layers.Flatten()) model.add(layers.Dense(10)) ``` --- #### 循环神经网络RNN) 循环神经网络是一种能够捕捉时间序列数据依赖关系的模型,广泛应用于自然语言处理领域。然而,由于梯度消失或爆炸问题,传统的RNN难以处理较长的时间序列数据[^3]。 - **工作原理**: RNN的核心特点是隐藏状态会传递到下一个时刻,形成一种“记忆”。这种特性使其可以建模动态时序行为。 - **应用场景**: 文本生成、情感分析、手写体识别。 --- #### 长短时记忆网络(LSTM) 作为一种改进版的RNNLSTM通过引入输入门、遗忘门输出门三种门控机制,成功克服了传统RNN存在的梯度消失问题,非常适合处理长期依赖的任务。 - **工作原理**: LSTM单元内部维护了一个细胞状态,并借助上述三类门控结构决定何时更新、保留或者释放信息。 - **应用场景**: 股票价格预测、语音合成、机器翻译。 ```python from tensorflow.keras.layers import LSTM lstm_layer = LSTM(units=64, return_sequences=True) ``` --- #### 生成对抗网络(GAN) 生成对抗网络由生成器判别器两部分构成,二者相互竞争又共同进化,最终实现高质量样本的生成[^1]。 - **工作原理**: 判别器负责区分真实数据与伪造数据,而生成器试图欺骗判别器接受虚假样本。经过多次迭代优化后,生成器可生成接近真实的样本。 - **应用场景**: 图像超分辨率重建、风格迁移、虚拟人物创建。 ```python import torch.nn as nn class Generator(nn.Module): def __init__(self): super().__init__() self.main = nn.Sequential( nn.Linear(100, 256), nn.ReLU(), nn.Linear(256, 784), nn.Tanh() ) def forward(self, x): return self.main(x) ``` --- #### Transformer Transformer摒弃了以往基于RNN的设计思路,转而采用自注意力机制(Self-Attention Mechanism),极大地提升了并行计算能力以及长距离上下文关联捕获的能力[^5]。 - **工作原理**: 编码器端接收输入序列并通过多头自注意力建立全局联系;解码器端依据编码结果逐步生成目标序列。整个过程无需顺序执行即可一次性获取全部位置的信息。 - **应用场景**: 自然语言生成、问答系统构建、跨语言翻译服务。 ```python import transformers tokenizer = transformers.BertTokenizer.from_pretrained('bert-base-uncased') model = transformers.BertModel.from_pretrained('bert-base-uncased') inputs = tokenizer("Hello world!", return_tensors="pt") outputs = model(**inputs) ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值