数据学习
登录
注册
原创博客
期刊会议
学术世界
期刊出版社
领域期刊
SCI/SCIE/SSCI/EI简介
期刊列表
会议列表
所有期刊分区
学术期刊信息检索
JCR期刊分区查询
CiteScore期刊分区查询
中科院期刊分区查询
领域期刊分区
管理 - UTD24期刊列表
管理 - AJG(ABS)期刊星级查询
管理 - FMS推荐期刊列表
计算机 - CCF推荐期刊会议列表
高校期刊分区
南大核心(CSSCI)
合工大小核心
合工大大核心
AI资源仓库
AI领域与任务
AI研究机构
AI学术期刊
AI论文快讯
AI数据集
AI开源工具
AI模型
AI模型概览图
AI模型月报
AI基础大模型
AI预训练大模型
数据推荐
网址导航
我的网址导航
程序员必备网站
大语言模型的技术总结系列一:RNN与Transformer架构的区别以及为什么Transformer更好
标签:
#LLM#
#RNN#
#Transformer#
时间:2023/04/27 22:02:33
作者:小木
大语言模型(Large Language Model,LLM)是近几年进展最大的AI模型。早期的深度学习架构语言模型以RNN为主,现在则基本上转成了Transformer的架构。尽管如此,Transformer本身也是有着不同的区别。本文是大语言模型技术系列中的一篇,主要介绍RNN模型与Transformer之间的区别。 [TOC] 需要注意的是,如果想彻底弄清楚RNN和Transformer的底层技术原理需要大家看懂它们的公式,而本文主要的目的是尽量在不涉及公式的前提下说清楚二者的区别。对于RNN本身的介绍以及Transformer结构的介绍不多,核心是说清楚二者的区别。因此,需要如果大家对RNN和Transformer有一点基本的了解,应该看起来很容易。 #### 语言模型简介 语言模型是一种基于统计学和机器学习方法的自然语言处理技术,它用于评估和预测一个给定序列的概率分布,通常是单词序列或字符序列。语言模型的主要应用是文本生成、机器翻译、语音识别等任务。 最初的语言模型是基于n-gram方法的,其中n代表前n个单词或字符的组合。然而,n-gram方法的局限性在于它仅考虑了有限数量的历史单词或字符,无法捕捉长期依赖性。近年来,深度学习方法已成为语言模型的主流技术。特别是循环神经网络(RNN)和Transformer等模型已成为语言模型的热门选择,它们可以处理任意长度的序列,并且能够捕捉长期依赖性。 近些年,神经网络架构的语言模型参数规模已经达到几千亿,为了表示与传统语言模型的区别,大家习惯称之为大语言模型。大语言模型与某些传统语言模型的架构可能差不多,但是参数规模的变化也让大语言模型有很多小规模模型无法拥有的特点,可以说,参数规模几乎是目前语言模型强大能力的必要条件。 #### RNN模型简介 RNN(循环神经网络)和Transformer是两种用于处理序列数据的常见神经网络架构,它们的主要区别在于模型的架构和处理序列数据的方式。 RNN是一种经典的序列模型,它通过循环的方式将序列中的信息逐个输入到网络中,并在网络内部使用循环结构来捕捉序列中的时间依赖关系。RNN的输出通常是与序列长度相关的固定大小的向量,可以用于下游任务,如文本分类、命名实体识别等。然而,由于长期依赖性问题,RNN在处理长序列时可能存在梯度消失或爆炸的问题。下图是一个典型的RNN架构的模型:

RNN模型的主要问题是输入是序列,只能按照顺序处理数据,无法并行处理,计算成本很高。此外,它也会出现梯度消失的问题,因此无法处理很长的序列。尽管也有包括GRU、LSTM这种改进,也无法解决这些根本性的问题。 此后,RNN模型也引入了注意力机制。注意力机制是一种用于加强神经网络对输入数据中重要部分的关注度的技术,它可以在网络中动态地学习并调整不同部分的重要性权重。具体来说,注意力机制将输入序列和查询向量(query vector)之间的相似度转化为权重,然后将这些权重应用于输入序列的不同部分,以生成有针对性的输出。 但这仍然不够。基础RNN、LSTM和GRU都面临同样的瓶颈:即使通过注意力机制改进了记忆,计算也没有得到改进。处理过程仍然是顺序的,因为每个标记必须按顺序处理。因此,才诞生了Transformer。 #### Transformer简介 Transformer是2017年Google提出的一种方法,来自论文《Attention is All You Need》。这是一种基于自注意力机制(self-attention mechanism)的神经网络架构,它通过将序列中所有位置的信息进行交互,来处理长序列。Transformer将输入序列分别传递给编码器和解码器,每个部分由多个层次组成,每个层次由多头自注意力机制和全连接层组成。Transformer的编码器和解码器可以同时处理多个序列位置,因此可以更高效地处理长序列。下图是这篇论文提到的网络示意图:

因此,RNN和Transformer的主要区别在于序列处理的方式和性能。RNN通过循环来处理序列,但在处理长序列时可能存在梯度消失或爆炸的问题;而Transformer使用自注意力机制来处理序列,可以更高效地处理长序列,且不会出现梯度消失或爆炸的问题。由于Transformer在处理序列时更为高效,因此在自然语言处理领域中已经成为主流的模型架构,并在许多任务上取得了显著的性能提升。 #### RNN与Transformer区别总结 上述描述可能依然比较抽象。不过,鉴于本文并不是为了描述技术细节,因此,我们在这里再次从3个角度总结一下Transformer对于RNN的改进: **Transformer没有了序列**:从上面的图知道,Transformer是将输入的语句当作一个整体,输入到embedding层中,因此有了并行计算的能力,不再强调输入序列 次序。因此,也就没有长依赖的问题。 **位置编码(positional encoding)**:是一种向输入嵌入中添加位置信息的技术,它使模型能够理解输入中某些部分在整个输入中的位置。需要注意的是,Transformer中不再使用循环结构,因此必须以不同的方式添加位置信息,而这正是通过位置编码来实现的。这种方式的优点也是解决了序列顺序依赖的同时,也能将位置信息考虑在模型中。 **自注意力机制(self-attention mechanism)**:这是一种新的,在《Attention is All You Need》论文中引入的方法,也是transformer中最常见的结构。自注意力机制是Transformer的一个核心组件。与之前的注意力机制不同的是,可以将序列中不同位置之间的依赖关系进行建模,不需要依赖于时间的顺序,因此可以更好地处理长序列。 参考文献1:https://github.com/christianversloot/machine-learning-articles/blob/main/from-vanilla-rnns-to-transformers-a-history-of-seq2seq-learning.md 参考文献2:https://ai.stackexchange.com/questions/20075/why-does-the-transformer-do-better-than-rnn-and-lstm-in-long-range-context-depen
欢迎大家关注DataLearner官方微信,接受最新的AI技术推送
相关博客
最热博客