大模型Transformer架构之编码器(Encoder)和解码器(Decoder) 原创
“ Transformer编码器的作用是特征提取,而解码器的作用是特征重建 ”
在上一篇文章中介绍了大模型的嵌入和向量,这一篇来介绍一下大模型的经典架构之Transformer架构的编码器和解码器。
像很多人一样,一直在奇怪Transformer架构经过多层编码和解码之后就能处理输入数据并生成新的数据;所以,今天我们就来深入了解一下Transformer的编码器。
Transformer的编码器
对计算机网络和加解密比较了解的朋友应该都知道编码和解码;以计算机的四层模型来说,应用层——传输层——网络层——数据链路层;除了应用层之外,其它三层的数据格式都是以字节流的形式存在;而在应用层对数据进行编码和解码,以获取人类能够识别的字符,文本,图片等数据。
再比如我们开发中常用的加解密等手段,也是在应用层进行处理的;因为在下层的字节流中是看不出任何有意义的信息的。
而Transformer的编码器就类似于这种功能,Transformer的编码器就是把人类能够识别的数据,转换成大模型能够识别的数据;而解码器就是把大模型能够识别的数据转换为人类能够识别的内容。
但这个转换过程并不只是简单的格式变换,而是要经过多重数据处理;而这才是Transformer编码器的核心所在。
Transformer的Encoder-Decoder编码器-解码器结构,这种结构被广泛应用于处理序列格式的数据(Seq2Seq);编码器和解码器是其组成部分的核心结构。
编码的过程是一个模式提取的过程,它的作用是把输入句子的特征提取出来;比如句子的文字,语义关系等;而解码的过程是一个模式重建的过程,它是根据编码器获取的模式特征生成新的我们需要的内容,这个过程就是模式重建的过程。
比如说大模型的经典应用领域之语言翻译,就是经过预训练的模型根据模式特征去“理解”一种语言,然后再根据另一种语言的模式特征生成翻译结果。
Encoder的主要作用是进行特征提取,这样做是因为原始输入中包含一些无用或干扰信息,这会使模型的性能和泛化性大打折扣。所以在这之前,我们通过Encoder来先对数据进行一次特征提取和挖掘.
从架构上看Encoder仅仅只是一个编码器,但如果把这个编码器给放大,我们就能看到里面更多的东西,比如说Transformer架构中最经典的自注意力机制。
Encoder中有一个嵌入输入,也就是上篇文章中讲的嵌入,把人类能识别的文本转化为向量输入到编码器中;当然,这个并不是编码器的重点;编码器的重点在其蓝色框中的部分。也就是里面的自注意力层,包括多头注意力和Add&Norm,也就是Add & Norm 残差 & Layer Normalization 层归一化,以及前馈神经网络——也就是feed forward。
整体流程是这样的:
- 首先输入进Encoder的向量会经过一个自注意力层,自注意力层会输出一个长度与输入一致,但特征维度可能不一致(也可能一致)的新特征向量z zz
- 之后会再进行一个残差连接(Residual Connection)的操作,将输入x xx和z zz相加
- 使用Layer Normalization的方法对残差连接得到的结果进行层归一化的操作
- 再送入一个前馈神经网络
- 同样的,执行2.和3.的操作,进行一次残差和归一化处理后输出
说了那么多,其实本质上就是一种数学模型,通过加权,求和等一系列的函数计算,来获取其数学关系。
而经过多层Encoder编码器层的运算,就能提取出输入数据的模式特征;最终形成记忆——也就是大模型的参数值;后续的推理任务,就可以根据这些参数值来分析输入数据的模式特征,然后“理解”其语义关系。
而解码器从结构上来说和编码器没太大区别,唯一不同的是,解码器比编码器多了一个自注意层。
数据经过解码器之后,就是把编码器通过模式提取的空间特征,映射到目标空间中,也就是解码器的模式特征模块;最后,解码器通过这些模式特征生成新的数据。
这就是大模型Transformer的基本运作过程,当然其真实的运作过程远比描述的要复杂得多。
而大模型就是通过多层神经网络来实现编码器-解码器的结构,通过训练之后,最终来执行真实的场景任务。
本文转载自公众号AI探索时代 作者:DFires