ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Transformer 与大语言模型:第8章 Feed Forward Network(FFN 网络)

Transformer 与大语言模型:第8章 Feed Forward Network(FFN 网络) 第8章 Feed Forward Network本章目标:理解 FFN 在 Transformer Block 中的作用,以及为什么维度要扩大四倍,GELU/SwiGLU 的原理。8.1 如果没有 FFN 会怎样?在进入 FFN 的结构之前,我们先问一个关键问题:如果 Transformer Block 只有 Attention,没有 FFN,会发生什么?假设一句话:The bank approved my loan.Attention 工作以后,bank去查看所有 Token,算出注意力权重:The 5% approved 40% loan 55%于是bank的新向量变成了:bank_new = 0.05×The + 0.40×approved + 0.55×loan请问:bank现在理解自己的含义了吗?没有。因为 Attention 只做了一件事:把别人的信息拿过来。它没有对收集到的信息进行任何"加工"或"推理"。一个生活中的类比假设你准备买房,于是问了三个朋友:朋友 A:“位置很好”朋友 B:“学区不错”朋友 C:“价格偏贵”这就是 Attention 干的事——收集意见。但收集完意见之后,你做出决定了吗?当然没有。你还需要自己思考:综合位置、学区、价格,结合自己的预算和需求,形成判断。FFN 就是那个"自己思考"的环节。Attention = 和别人聊天,收集信息 FFN = 回家自己思考,形成判断所以 FFN 更准确的名字应该叫Per-Token Thinker(每个 Token 的独立思考器)。8.2 FFN 的结构理解了 FFN 的定位,再来看它的数学形式就很自然了:FFN(x)=Activation(xW1+b1)W2+b2\text{FFN}(x) = \text{Activation}(x W_1 + b_1) W_2 + b_2FFN(x)=Activation(xW1​+b1​)W2​+b2​输入[batch, seq, d_model]例: [2, 5, 512]Linear W_1[d_model, dff][512, 2048]ActivationGELU/ReLULinear W_2[dff, d_model][2048, 512]输出[batch, seq, d_model]例: [2, 5, 512]关键参数:d_model:输入/输出维度(如 512)dff:中间层维度(如 2048,通常是 d_model 的 4 倍)其中W1:[dmodel,dff]W_1: [d_{model}, d_{ff}]W1​:[dmodel​,dff​]、b1:[dff]b_1: [d_{ff}]b1​:[dff​]、W2:[dff,dmodel]W_2: [d_{ff}, d_{model}]W2​:[dff​,dmodel​]、b2:[dmodel]b_2: [d_{model}]b2​:[dmodel​]全部是通过反向传播训练出来的可学习参数——和 Attention 中的WQW_QWQ​、WKW_KWK​、WVW_VW
返回列表