别再死记硬背了!从Sigmoid到ReLU,我用一个Excel表格帮你彻底搞懂激活函数梯度消失

张开发
2026/4/15 5:12:52 15 分钟阅读

分享文章

别再死记硬背了!从Sigmoid到ReLU,我用一个Excel表格帮你彻底搞懂激活函数梯度消失
用Excel破解神经网络之谜Sigmoid与ReLU的梯度消失实验指南当我在第一次接触神经网络时那些复杂的数学公式和抽象概念让我望而却步。直到有一天我偶然发现用Excel表格可以直观地展示激活函数在反向传播中的表现差异一切突然变得清晰起来。这篇文章将带你用最熟悉的工具——Excel亲手构建一个微型神经网络亲眼见证Sigmoid如何杀死梯度而ReLU又如何成为深度学习革命的功臣。1. 准备工作搭建Excel神经网络实验台在开始实验前我们需要在Excel中搭建一个极简的神经网络模拟环境。这个模型只有两层一个输入层2个神经元、一个隐藏层2个神经元和一个输出层1个神经元。别担心即使你是Excel新手也能轻松完成这个设置。实验参数初始化表参数类型符号初始值说明输入值x10.5第一个输入特征输入值x2-0.3第二个输入特征权重W1_110.15输入1到隐藏1的权重权重W1_12-0.2输入1到隐藏2的权重权重W1_210.1输入2到隐藏1的权重权重W1_220.25输入2到隐藏2的权重偏置b1_10.05隐藏层1的偏置偏置b1_2-0.1隐藏层2的偏置权重W2_10.3隐藏1到输出的权重权重W2_2-0.4隐藏2到输出的权重偏置b20.2输出层的偏置目标值y0.8期望输出值学习率η0.1梯度下降步长在Excel中按照上表设置好初始参数后我们就可以开始构建前向传播的计算流程了。记住这个实验的关键不是追求数学完美而是通过可视化的数据变化理解神经网络的核心机制。2. 前向传播从输入到输出的数据旅程前向传播是神经网络做出预测的过程。在我们的Excel模型中这个过程可以分为三个主要步骤输入层到隐藏层的计算隐藏层神经元1的输入z1 x1*W1_11 x2*W1_21 b1_1隐藏层神经元2的输入z2 x1*W1_12 x2*W1_22 b1_2激活函数应用我们先使用Sigmoid函数a1 1/(1EXP(-z1))a2 1/(1EXP(-z2))后续实验中会替换为ReLUa1 MAX(0,z1)a2 MAX(0,z2)隐藏层到输出的计算最终输出y_pred a1*W2_1 a2*W2_2 b2Excel公式设置技巧使用命名单元格(range names)让公式更易读用条件格式高亮显示关键数值的变化为激活函数创建单独的计算列方便对比不同函数的效果完成这些设置后你应该能在Excel中看到完整的预测流程。记录下初始预测值我们将在反向传播中观察它如何逐步接近目标值。3. 反向传播梯度消失现象的直观展示反向传播是神经网络学习的关键。我们将分别在Sigmoid和ReLU激活函数下观察梯度是如何从输出层传播回输入层的。3.1 损失函数与初始梯度计算我们使用均方误差(MSE)作为损失函数Loss (y_pred - y)^2 / 2在Excel中我们可以这样计算初始梯度输出层梯度∂Loss/∂y_pred y_pred - y隐藏层到输出层的权重梯度∂Loss/∂W2_1 (y_pred - y) * a1∂Loss/∂W2_2 (y_pred - y) * a23.2 Sigmoid激活下的梯度传播当使用Sigmoid激活时隐藏层梯度的计算会涉及Sigmoid的导数σ(z) σ(z) * (1 - σ(z))在Excel中计算隐藏层神经元1的梯度δ1 (y_pred - y) * W2_1 * a1 * (1 - a1)隐藏层神经元2的梯度δ2 (y_pred - y) * W2_2 * a2 * (1 - a2)Sigmoid梯度消失现象观察表迭代次数W1_11梯度W1_12梯度W2_1梯度W2_2梯度Loss值10.00210.00180.045-0.0380.12550.00000.00000.001-0.0010.124100.00000.00000.0000.0000.124从表中可以清晰看到随着迭代进行靠近输入层的权重梯度迅速趋近于零这就是典型的梯度消失现象。因为Sigmoid的导数最大只有0.25多层连乘后梯度会指数级衰减。3.3 ReLU激活下的梯度传播切换到ReLU激活函数后梯度的计算变为ReLU(z) 1 if z 0 else 0在Excel中隐藏层神经元1的梯度δ1 (y_pred - y) * W2_1 * IF(z10,1,0)隐藏层神经元2的梯度δ2 (y_pred - y) * W2_2 * IF(z20,1,0)ReLU梯度保持现象观察表迭代次数W1_11梯度W1_12梯度W2_1梯度W2_2梯度Loss值10.0083-0.00690.045-0.0380.12550.0067-0.00560.036-0.0310.098100.0054-0.00450.029-0.0250.077与Sigmoid形成鲜明对比ReLU在正区间导数为1不会导致梯度连乘衰减。因此各层的权重都能得到有效的更新Loss值也下降得更快。4. 深度网络中的激活函数选择策略通过前面的实验我们已经直观理解了不同激活函数在梯度传播中的表现差异。现在让我们深入探讨在实际深度学习模型中如何选择合适的激活函数。4.1 激活函数特性对比常见激活函数特性对比表特性SigmoidTanhReLULeakyReLU输出范围(0,1)(-1,1)[0,∞)(-∞,∞)导数范围(0,0.25](0,1]{0,1}{a,1}梯度消失风险高中低(正区间)很低计算复杂度高高低低死亡神经元风险无无有很低输出均值0.500≈04.2 不同场景下的激活函数选择二分类输出层Sigmoid仍然是自然选择因为它直接输出概率值浅层网络Tanh在表现上可能优于Sigmoid因为它的输出是零中心的深层网络隐藏层ReLU及其变种(LeakyReLU, PReLU)是首选特殊架构LSTM/GRUTanh配合Sigmoid门控TransformerGELU表现更优4.3 实践中的调优技巧学习率设置ReLU对学习率更敏感通常需要比Sigmoid更小的学习率权重初始化配合激活函数特性选择适当的初始化方法ReLUHe初始化Sigmoid/TanhXavier/Glorot初始化批量归一化可以缓解ReLU的分布偏移问题监控指标跟踪各层的梯度幅度及时发现梯度消失/爆炸在Excel实验中你可以尝试调整学习率观察不同激活函数的表现差异。例如将学习率提高到0.5你会发现ReLU网络可能开始不稳定而Sigmoid网络依然缓慢学习。

更多文章