要理解和熟悉一个新的技术/新模型,比较好的方式是通过以下框架结构来熟悉:
为什么:一个新模型的诞生,一般是解决了现有的模型不能解决的一些问题。因此需了解该技术提出的背景和创新点。
是什么:熟悉这个模型的内容和架构、训练过程等
怎么用:了解模型的应用场景,将模型为我们所用。
接下来就从这三步骤来聊聊Transformer
01、为什么
Transformer最早是Google在2017年的Attention Is Al You Need论文中提出,用于解决解决传统的序列到序列(sequence-to-sequence,Seq2Seq)模型在处理可变长序列时遇到的问题。
在传统的序列建模方法中,如循环神经网络(RNN)和卷积神经网络(CNN),在处理长序列均存在限制:RNN在处理长序列时容易出现梯度消失或梯度爆炸的问题,模型难以捕捉到长距离的依赖关系,不能并行计算 ;而CNN卷积操作通常要求输入具有固定的尺寸,在处理可变长序列时,为了使序列具有相同的长度,要对较短序列进行填充,导致计算效率低下。
而Transformer通过自注意力机制(self-attention)来解决这些问题。
自注意力机制(self-attention)
自注意力机制是一种用于处理序列数据的机制,它能够在序列中的每个位置上计算该位置与其他位置之间的关联程度,并根据这些关联程度来加权组合序列中的信息。
如图所示,a为输入的序列,中间的方框是self attention操作,最终输出的b为依据a每个位置与其它位置关联程度加权后输出的序列。
从细节来说,需要理解几个概念:
- 查询(Query):查询是你想要了解的信息或者你想要从文本中提取的特征。它类似于你对文本中的某个词语提出的问题或者你想要了解的内容。
- 键(Key):键是文本中每个词语的表示。它类似于每个词语的标识符或者关键信息,用于帮助计算查询与其他词语之间的关联程度。
- 值 (Value):值是与每个词语相关的具体信息或特征。类似于每个词语的具体含义或者特征向量 。
在自注意力机制中,具体步骤是:
Step1:从输入值a乘以矩阵Wq、Wk和Wv(这三个矩阵 是模型参数,需要通过训练数据来学习)获取查询(Q)、键(K)、值(V);
Step2:通过计算查询(Q)与键(K)之间的点积,来衡量查询与其他词语之间的关联程度,然后通过对这些关联程度进行归一化处理(一般采用softmax归一化),得到每个词语的注意力权重。
Step3:最后,根据这些注意力权重,对每个词语的值(V)进行加权求和,得到一个新的表示该表示会更加关注与查询相关的信息。
如图所示,α1.1是q1和k1点积计算并归一化后得到的关联程度,以此类推,最后再用关联程度与所有v进行加权求和,就能获得到与q1关联最大的信息b1,而其它的b2、b3、b4也是同样的计算方式。
最终,从矩阵的角度运算的角度,整个过程可以被表示为:
此外,这里没有考虑到输入的位置信息,因为对每个位置的输入操作都是一样的。而有时,序列的位置信息也很重要,因此,还需对输入使用位置编码(Positional Encoding),将位置信息给到输入。
由于sin和cos函数包含位置信息,Transformer中,使用了sin函数和cos函数进行了位置编码:
计算得到位置向量后,将位置向量与输入a相加后再计算对应的Q、K、V,这样就考虑了输入的位置。
我们可以将Self Attention层的输出给全连接神经网络(Fully-Connected Network),学习更多的信息,最终的结构可以如下:
可以看出,自注意力机制通过直接建模词与词之间的关联程度,可以更好地捕捉到远距离的依赖关系;它可以进行并行计算,在处理大规模数据时具有较高的计算效率。
多头自注意力机制(Multi-head self attention)
多头注意力机制是一种在自注意力机制基础上的扩展,它允许模型同时关注不同的表示子空间以更好地捕捉输入序列中的不同关系和特征。
在传统的自注意力机制中,你只能使用一组查询(Q)、键(K)和值(V)来计算注意力权重,但是,在多头注意力机制中,你可以使用多组不同的Q、K和V来进行计算。
每个注意力头都有自己独立的一组Q、K和V,它们通过独立的线性变换来生成。这样,每个注意力头可以关注文本中不同的方面和特征,从而提取更丰富的信息。最后,多个注意力头的结果会被拼接在一起,并通过另一个线性变换进行整合,得到最终的输出。
通过使用多头注意力机制,模型可以同时关注不同的表示子空间,从而捕捉到输入序列中更多的关系和特征。这种并行处理的方式可以提高模型的表达能力和泛化能力,使得模型更好地理解和处理复杂的输入数据。
02、是什么
以下是Transformer完整的架构,总体来看,它由**编码器(Encoder)和解码器(Decoder)**两部分组成。
编码器(Encoder)
左边是编码器部分,主要作用是将输入数据编码成计算机能理解的高维抽象表示。
它的结构也就是前面一节我们所说的多头注意力机制+ 全连接神经网络的结构。此外,这里用了残差连接(Residual connection)的方式,将输入和多头注意力层或全连接神经网络的输出相加,再传递给下一层,避免梯度递减的问题。
解码器(Decoder)
右边是解码器的部分,主要作用是利用高维表示信息生成目标序列。它的结构大致与编码器相同不同的有两点:
第一,采用了掩码多头自注意力(Masked-Multi-head self attention)即在计算注意力得分时,模型只能关注生成内容的当前位置之前的信息,避免未来信息的泄漏。
比如,这里计算输出b2时,就只使用了a1、a2两个位置的注意力得分进行加权
采用这种方式的原因是,模型需要按照顺序逐步生成序列(a1、a2),因此不能提前获取到未来a3、a4的信息。
第二,中间部分,利用了Encoder的输出结果计算交叉注意力(CrossAttention)。同之前的注意力机制类似,Cross Attention通过计算解码器当前位置(Q)的表示与编码器上下文表示(K)之间的注意力权重,将编码器上下文表示(V)加权,然后将该加权表示与解码器当前位置的表示进行融合。
训练过程
Transformer的训练过程和深度神经网络模型类似。以中文翻译成英文的翻译任务为例:
数据准备:首先,需要准备训练数据集,包括大量中文序列和人工标注的正确英文序列。
输入表示:将中文源语言句子和英语句子进行编码,并进行适当的标记和嵌入处理。常见的编码方式是使用词嵌入(Word Embedding)将每个词转换为向量表示,并添加位置编码(PositionaEncoding)以保留序列的顺序信息。注意在训练时,Decoder的输入是人工标注为正确的英文序列,而不是Decoder自己生成的英文序列。
确定模型架构:构建Transformer模型 的架构,包括编码器和解码器层数、注意力机制和前馈神经网络层数等等
训练模型:定义适当的损失函数 来衡量模型在训练过程中的性能。对于机器翻译任务,常用的损失函数是交叉熵损失函数,用于比较模型生成的英语句子与正确的英语句子之间的差异。训练过程中,通过反向传播算法和优化器(如Adam优化器)来更新模型的参数(如全连接神经网络的参数、注意力机制中的Wk、Wg、W参数),以最小化损失函数。通常会使用小批量(mini-batch)的方式进行训练,即将训练数据划分为多个批次,每个批次包含一定数量的样本。
验证和调优:使用验证数据集评估模型Q的性能,进一步进行超参数调整、模型结构调整等操作,提升模型的性能。
推理和应用:训练完成后,使用已训练好的模型将中文句子翻译成英文句子
注意,Transformer所需的训练数据量通常在数百万到数十亿个tokens(输入向量)之间,因此个人训练是很困难的,最好直接使用预训练好的模型。
03、为什么
目前Transformer被广泛使用在机器翻译 、文本生成、语义理解、语音识别、对话系统等多个领域。尤其现在比较火的GPT、New Binga等大语言模型都是基于Transformer架构进行改进和研发的。
不是所有人都需要去细致研究Transformer,更多的情况下我们只是希望能便捷的使用预训练好的模型来帮助我们提高效率,而现在基于Transformer的最新的技术便是大模型。
给大家推荐这个项目,它是基于PyTorch、JAX、TensorFlow的自然语言处理模型库,提供了数千个预训练模型,支持多种任务,包括文本分类、信息提取、问答、摘要、翻译、文本生成等。
看到这里,最后再看原论文这张图,是不是能很好的理解了呢?
如何学习大模型
现在社会上大模型越来越普及了,已经有很多人都想往这里面扎,但是却找不到适合的方法去学习。
作为一名资深码农,初入大模型时也吃了很多亏,踩了无数坑。现在我想把我的经验和知识分享给你们,帮助你们学习AI大模型,能够解决你们学习中的困难。
我已将重要的AI大模型资料包括市面上AI大模型各大白皮书、AGI大模型系统学习路线、AI大模型视频教程、实战学习,等录播视频免费分享出来,需要的小伙伴可以扫取。
一、AGI大模型系统学习路线
很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,我下面分享的这个学习路线希望能够帮助到你们学习AI大模型。
二、AI大模型视频教程
三、AI大模型各大学习书籍
四、AI大模型各大场景实战案例
五、结束语
学习AI大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习AI大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握AI大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。
再者,学习AI大模型也能为我们自己创造更多的价值,提供更多的岗位以及副业创收,让自己的生活更上一层楼。
因此,学习AI大模型是一项有前景且值得投入的时间和精力的重要选择。