前馈网络(Feed-Forward Network, FFN)学习
简介
前馈网络的操作基本都是“先升维,非线性激活,再降维”的操作,示例公式如下:
\[FFN(x) = max(0, xW_1 + b_1)W_2 + b_2 \tag{1}
\]
式中,\(W_1\)负责升维,\(W_2\)负责降维。
升维
通过将输入特征映射到高维,抽取高阶特征,方便信息的分离,具体操作是给输入特征乘以\(W_1\),随后加上\(b_1\)偏置项进行线性映射。
此操作只是进行了升维操作,并没有升秩,原理如下:
\[Rank(xW) \leq min(Rank(x), Rank(W)) \tag{2}
\]
式中\(Rank(\cdot)\)表示秩运算。
非线性激活
激活函数有很多,结合具体问题进行选择,此处以\(ReLU(\cdot)\)为例:
\[ReLU(x) = max(0, x) \tag{3}
\]
激活函数主要是为了提取非线性的特征,弱化不关注的信息(粗暴理解(详细的可自行学习):特征矩阵正数的信息是我们需要的,要增强,反之负数要抑制),若使用ReLU,可能会产生降秩(负数全变为了0,相较之前稀疏了,可理解为部分神经元关闭了,但我们抓住了高维隐空间中我们所需要的子空间,所以,降秩的影响一般较小)
降维
通过此操作,我们降低了相应后续运算的计算量,可能会考虑到损失了信息这一问题,无妨,我们有残差辅助🤗
创新
前馈部分的创新主要集中在升维和降维的操作上,特别是大模型参数高效微调设计所选之处,个人认为改进空间较大🙂
最后,用Nano Banana Pro配了一张图,供参考:


关于FFN的学习笔记
浙公网安备 33010602011771号