激活函数
Activation Function (ReLU / GELU / SiLU / SwiGLU)常用接在每层线性变换后的非线性函数,让网络能拟合复杂关系。
激活函数接在神经网络每层线性变换之后;没有它,多层叠起来仍等价于一次线性变换。常见几种:ReLU 把负数置零、正数原样输出,计算便宜,是卷积网络时代的默认选择;GELU(Hendrycks 与 Gimpel,2016)定义为 x·Φ(x),Φ 是标准正态分布的累积分布函数,BERT、ViT 等 Transformer 常用;SiLU(也叫 Swish)是 x·sigmoid(x);SwiGLU(Shazeer,2020)是门控线性单元的变体,把两路线性投影逐元素相乘、其中一路先过 Swish。LLaMA 就在 Transformer 前馈层(FFN)里用 SwiGLU 替换了 ReLU。
例子输入 -1、0.5、2 时,ReLU 输出 0、0.5、2;GELU 输出约 -0.16、0.35、1.95,负数不再被一刀切成 0。
- 也叫
- 激励函数、非线性激活
- 相关
- 多层感知机、Transformer、神经网络、归一化层(层归一化 / RMSNorm / 批归一化)、梯度消失 / 梯度爆炸、Llama
- 来源
- Gaussian Error Linear Units (GELUs) (arXiv:1606.08415)
GLU Variants Improve Transformer (arXiv:2002.05202)
LLaMA: Open and Efficient Foundation Language Models (arXiv:2302.13971)