GPT中的激活函数详解 | AI生成和翻译

Home 2025.11

Andrej Karpathy在《让我们构建GPT》视频中对激活函数的解析

在其YouTube视频《让我们构建GPT:从零开始,代码实现,逐行讲解》(注:提供的时间戳指向约2小时51分40秒处)中,Andrej Karpathy围绕GPT-2 Transformer架构中的多层感知机(MLP)层探讨了激活函数。他重点阐释了语言模型选择特定激活函数的原因,着重分析梯度流、神经元健康度和实证性能。讨论从MLP的作用切入(作为注意力机制”缩减”后的”映射”操作),详细讲解了GPT-2使用的核心激活函数GELU,并与ReLU、tanh等替代方案进行对比,还简要提及现代语境中的Swish函数。

以下是根据该章节内容对GELUtanh的专项解析(他未对tanh单独展开,而是将其作为突显GELU优势的参照系)。

GELU(高斯误差线性单元)

Karpathy将GELU定义为GPT-2的MLP中(两个线性层之间)提供非线性变换的核心激活函数,强调其在GPT-2、BERT等大型语言模型中确保训练平稳可靠的关键作用。

他在代码实现中将其简化为MLP前向传播的一部分,演示了如何独立处理每个词元的注意力汇聚输出。

tanh(双曲正切函数)

Karpathy在GPT-2构建中未使用tanh,而是将其作为反面教材来说明现代激活函数(如GELU)的优越性,将其视为深度网络中应避免的典型旧式选择。

快速对比(基于Karpathy的论述框架)

Karpathy在视频中通过对比论证GELU的合理性:

激活函数 输出范围 核心优势 主要缺陷 是否用于GPT-2?
GELU \( (-\infty, \infty) \) 始终保持正梯度;神经元平滑激活 计算量略高于ReLU 是(近似形式)
tanh (-1, 1) 有界输出(利于某些归一化) 梯度消失;早饱和

他还提及ReLU(\( \max(0, x) \),易产生死亡神经元)是GELU的直接改进对象,而Swish(\( x \cdot \sigma(x) \),用于Llama 3等后续模型)可视为GELU的可学习变体——但论述核心始终是GELU对于GPT的实用性。

这段约5-10分钟的讲解融入其代码实践演示,展现了这些选择如何使模型在莎士比亚文本上实现可靠训练。欲获取完整细节,请跳转至视频对应时间戳!


Back

x-ai/grok-4.1-fast

Donate