ReLU(修正线性单元)是最简单的:f(x) = max(0, x)。对负输入输出零,正输入原样通过。ReLU通过为正输入提供恒定为1的梯度,解决了困扰早期激活函数(sigmoid、tanh)的梯度消失问题。它的简单性和有效性使其成为十多年来的默认选择。
GELU(高斯误差线性单元)现在是Transformer中的标准(被BERT、GPT和大多数LLM使用)。与ReLU在零点的硬截断不同,GELU在零附近平滑渐变,提供更好的梯度流。SiLU/Swish(x · sigmoid(x))类似,用于LLaMA等一些架构中。GELU和SiLU之间的实际差异很小——在Transformer规模的模型中,两者都优于ReLU。
现代LLM经常在前馈层中使用门控线性单元(GLU)及其变体(SwiGLU、GeGLU)。这些将两个并行的线性投影相乘,有效地让网络控制哪些信息可以通过。SwiGLU(用于LLaMA、Mistral和许多其他模型)将SiLU激活与门控相结合,以略多的参数为代价,始终优于标准前馈层。