概述
在transformer模型中,Encoder与Decoder部分都有一个前馈网络层(Feed-Forward Network FFN);一般由两个有ReLU激活函数的全连接层(Full Connection FC层)组成。第一个全连接层将输入映射到一个更高的维度,而第二个全连接层则将这个更高维度的表示映射回原始的维度。这一过程可以被看作是对输入表示进行“扩展”和“压缩”。
一般在具体模型的源码中的实现对应为MLP;比如ChatGLM3中,其实现为class MLP(torch.nn.Module)
;在Llama2中,其实现为class LlamaMLP(nn.Module)
。
在模型实现中,将MLP对应到transformer理论模型中的FFN。
ChatGLM3
ChatGLM中MLP的实现与transformer模型中FFN的理论模型一致。其结构如下:
(mlp): MLP (
(dense_h_to_4h): Linear(in_features=4096, out_features=16384, bias=True)
(dense_4h_to_h): Linear(in_features=16384, out_features=4096, bias=True)
(activation_func): swiglu(x)
)
标准MLP Block表示如下:
out = down_proj(actn_fn(up_proj(input)))
up_proj层的大小计算为4096 * 16384;而中间通过激活函数引入非线性变换;对于down_proj层的大小计算为16384 * 4096。
LlamaMLP2
Llama2中对于MLP的实现与大多数模型中MLP的不同。其结构如下:
(mlp): LlamaMLP(
(gate_proj): Linear(in_features=5120, out_features=13824, bias=False)
(up_proj): Linear(in_features=5120, out_features=13824, bias=False)
(down_proj): Linear(in_features=13824, out_features=5120, bias=False)
(act_fn): SiLUActivation()
)
Llama2采用了独特的MLP Block结构,将其与上述标准MLP Block区分开。
在Llama-2的情况下,MLP块包括三个基本层:up_proj, down_proj和gate_proj,它们结合在一起创建了一个独特的结构:
out = down_proj( act_fn(gate_proj(input)) x up_proj(input) ).
up_proj层的大小计算为5120 x 13824,得到70,778,880个参数。类似地,down_proj层的尺寸为13824 x 5120,而gated_proj层的尺寸为5120 x 13824。
总结
Transformer模型中的前馈网络层(Feed-Forward Network, FFN)是为了引入非线性特性,使得模型能够处理更复杂的特征。FFN由两层全连接层组成,第一层将输入数据的维度扩大为原来的倍数(一般是4),第二层再将数据压缩回原来的维度。
扩大数据维度到原先倍数的原因主要有以下几点:
-
增加模型的容量:扩大维度可以增加模型的参数量,从而增强模型的表达能力,使其能够捕捉到更加复杂的特征和模式。 -
非线性变换:通过ReLU(或其它非线性激活函数)进行非线性变换,可以使模型捕捉到输入数据中非线性的关系,这有助于模型学习到更复杂的函数。 -
残差连接:在Transformer中,FFN与输入数据通过残差连接相结合。如果FFN的输出维度与输入维度不一致,那么就需要通过一个线性层将它们对齐,以便进行残差连接。扩大维度后再压缩回原维度,可以在引入非线性变换的同时,保持残差连接的维度一致性。
压缩回原先维度的好处包括:
-
维度一致性:经过FFN处理后的数据需要与输入数据的维度一致,以便于进行残差连接。 -
信息聚焦:通过压缩维度,模型可以对扩大维度后学习到的特征进行选择和聚焦,只保留最重要的信息,这有助于提高模型的泛化能力。 -
减少计算量:在经过非线性变换和特征学习后,压缩维度可以减少后续层的计算量,提高模型的计算效率。
总的来说,扩大维度再压缩回来,是为了在引入非线性变换的同时,保持残差连接的维度一致性,并提高模型的表达能力和泛化能力。
原文始发于微信公众号(阿郎小哥的随笔驿站):聊聊transformer模型中的FFN层
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/244169.html