吴恩达《深度学习》之看懂 Tanh 与 Sigmoid 的“均值几何学”

吴恩达《深度学习》之看懂 Tanh 与 Sigmoid 的“均值几何学” 现在把探索的指针指向Tanh 与 Sigmoid 的均值几何学。在神经网络的洪荒时代Sigmoid 曾是统治一切的绝对君王。但后来它被 Tanh 赶下了王座退守到了特定的边疆。很多初学者只记住了“Tanh 效果好”的结论却很少有人去凝视它们吐出来的激活值均值Mean of Activations在反向传播的微积分世界里引发了怎样的连锁反应。核心知识点场景问题实验发现中间隐藏层使用 Tanh 的收敛速度显著快于 Sigmoid。核心决策Tanh 具有零中心化Zero-centered特性通常优于非零均值的 Sigmoid。但在二分类任务的最终输出层需要概率映射时必须回归使用 Sigmoid。数学与反向传播核心Sigmoid 的输出恒为正数导致反向传播时同一层的权重梯度由于输入符号相同而发生强耦合迫使参数更新走憋屈的“之”字形Zig-zag路径引发“均值漂移Mean Shift”。今天我们不用复杂的偏微分方程我带你走进一间“只能单向拧螺丝的机械车间”看看 Sigmoid 的致命缺陷到底是怎么拖慢整个模型收敛速度的。第一步对比两者的物理疆域与“均值”首先我们来死死盯着这两个激活函数的输出范围值域。提问1. 传统的Sigmoid函数它的数学值域被锁在(0,1)(0, 1)(0,1)之间。请问无论你灌进去多么惊心动魄、有正有负的原始数据经过 Sigmoid 激活之后它吐出来的所有数字在符号上有什么共同点它的均值Mean大概会落在哪个数字附近2. 相比之下后起之秀Tanh双曲正切函数的数学值域是(−1,1)(-1, 1)(−1,1)。它是一个完美的中心对称图形。请问它吐出来的数字均值又会完美地落在哪个核心数字上你的大脑给出了数学直觉Sigmoid 吐出来的全是正数它的均值永远大于 0大约在 0.5 附近。这就是臭名昭著的非零均值Non-zero Mean。Tanh 吐出来的有正有负如果输入分布均匀它的均值会精准地等于 0我们称之为零中心化Zero-centered。第二步解构“非零均值”引发的反向传播悲剧“均值不是 0又怎么了多大点事”很多同学会这样想。现在让我们化身为反向传播链条里的一个权重更新审查官。假设在某一层网络里前向传播的输出是aSigmoid(z)a \text{Sigmoid}(z)aSigmoid(z)。接下来这个aaa会作为下一层的输入去乘以权重WWW得到下一层的中间变量假设简化的前向传播阶段为fW1a1W2a2f W_1 a_1 W_2 a_2fW1​a1​W2​a2​。在反向传播时我们需要计算损失函数对权重WWW的梯度。根据微积分的链式法则求偏导数公式为∂L∂W∂L∂f⋅a\frac{\partial L}{\partial W} \frac{\partial L}{\partial f} \cdot a∂W∂L​∂f∂L​⋅a提问请死死盯着公式里相乘的那个aaa我们刚才说了因为使用的是 Sigmoid这一层吐出来的所有a1,a2…a_1, a_2 \dotsa1​,a2​…百分之百全是正数。那么在这一秒决定整个梯度∂L∂W\frac{\partial L}{\partial W}∂W∂L​最终是正还是负的生死大权是不是全盘落在了前面那个共同的误差项∂L∂f\frac{\partial L}{\partial f}∂f∂L​身上如果∂L∂f\frac{\partial L}{\partial f}∂f∂L​这一秒算出来是正数那么这一层所有的权重梯度∂L∂W1,∂L∂W2…\frac{\partial L}{\partial W_1}, \frac{\partial L}{\partial W_2} \dots∂W1​∂L​,∂W2​∂L​…必须全都是正数如果它是负数所有梯度必须全都是负数。终极追问想象一下如果正确的优化路径要求W1W_1W1​增加梯度为正同时要求W2W_2W2​减小梯度为负。但在 Sigmoid 的暴政下网络由于一整批aaa全是正数导致W1W_1W1​和W2W_2W2​的梯度在同一秒内要么同时为正要么同时为负它们被死死地绑在了一辆战车上在这种极度痛苦的限制下你的优化小球在寻找最优解的权空间里还能走直线吗它是不是只能像一只螃蟹一样极度憋屈地走“之”字形Zig-zag拐弯抹角地前进因果闭环彻底看懂了因为无法各走各的路梯度方向被强行耦合导致参数更新在“之”字形的内耗里浪费了大量的计算资源。这就是 Sigmoid 的“均值漂移Mean Shift”引发的数值灾难。而Tanh 因为是零中心化Zero-centered的下一层的输入aaa有正有负这就瞬间解放了梯度的符号选择允许W1W_1W1​和W2W_2W2​朝着各自最正确的方向全速奔跑。这就是为什么 Tanh 的收敛速度能把 Sigmoid 甩开几条街第三步决策——什么时候我们必须“回归”Sigmoid既然 Tanh 如此完美那 Sigmoid 是不是应该被扔进历史的垃圾堆我们来看看在什么特定情况下你必须回归使用 Sigmoid。让我们回到一个最朴素的现实业务场景。提问假设我们要设计一个二分类模型比如预测一封邮件是不是垃圾邮件、或者自动化系统在进行黑客审计时判断代码是不是有高危漏洞。网络最终的输出必须代表一个概率值Probability。请问在数学和人类的常识里一个合格的概率它的物理边界必须被严格死锁在什么范围之间如果此时你依然顽固地使用 Tanh 吐出了一个-0.7的结果你打算怎么向你的产品经理或客户解释“一封邮件是垃圾邮件的概率是 -70%”答案浮出水面概率必须在[0,1][0, 1][0,1]之间。Tanh 的[−1,1][-1, 1][−1,1]在概率世界里是完全不合法的。因此你的终极决策是在中间的隐藏层为了追求极限的收敛速度我们果断抛弃 Sigmoid拥抱 Tanh或如今更常用的 ReLU 系列但在网络的最后一层Output Layer如果我们的任务是二分类且需要输出纯净的概率映射我们就必须回归王座请出 Sigmoid 来做最终的物理世界视界强转。第四步PyTorch 里的“各司其职”代码落地在 PyTorch 的标准全栈骨架中这种隐藏层和输出层的激活函数进化美学是这样落地的importtorchimporttorch.nnasnnclassBinaryClassifier(nn.Module):def__init__(self,input_dim,hidden_dim):super(BinaryClassifier,self).__init__()self.hidden_layernn.Linear(input_dim,hidden_dim)self.output_layernn.Linear(hidden_dim,1)# 隐藏层激活函数选用 Tanh零中心化告别均值漂移让中间层梯度全速收敛self.tanhnn.Tanh()# 输出层激活函数回归 Sigmoid将数值强转至 0 到 1 之间输出标准的概率self.sigmoidnn.Sigmoid()defforward(self,x):# 1. 信号穿过隐藏层hidden_outself.tanh(self.hidden_layer(x))# 2. 信号穿过输出层final_outself.sigmoid(self.output_layer(hidden_out))returnfinal_out总结让我们用最后一行最性感的极客因果链复盘这场均值分布的权衡艺术Sigmoid 隐藏层 ⟹ 非零均值 (0.5) ⟹ 反向传播梯度全同号耦合 ⟹ 被迫进行“之”字形内耗漂移 ⟹ 收敛速度奇慢\text{Sigmoid 隐藏层} \implies \text{非零均值 (0.5)} \implies \text{反向传播梯度全同号耦合} \implies \text{被迫进行“之”字形内耗漂移} \implies \text{收敛速度奇慢}Sigmoid隐藏层⟹非零均值(0.5)⟹反向传播梯度全同号耦合⟹被迫进行“之”字形内耗漂移⟹收敛速度奇慢Tanh 隐藏层 ⟹ 零中心化 (0) ⟹ 梯度符号彻底解耦释放 ⟹ 直奔最优解的最短路径 ⟹ 收敛速度暴涨\text{Tanh 隐藏层} \implies \text{零中心化 (0)} \implies \text{梯度符号彻底解耦释放} \implies \text{直奔最优解的最短路径} \implies \text{收敛速度暴涨}Tanh隐藏层⟹零中心化(0)⟹梯度符号彻底解耦释放⟹直奔最优解的最短路径⟹收敛速度暴涨特定终局场景 (二分类输出) ⟹ 回归使用 Sigmoid ⟹ 利用 (0,1) 疆域进行合法的概率映射\text{特定终局场景 (二分类输出)} \implies \text{回归使用 Sigmoid} \implies \text{利用 } (0,1) \text{ 疆域进行合法的概率映射}特定终局场景(二分类输出)⟹回归使用Sigmoid⟹利用(0,1)疆域进行合法的概率映射神经网络里的每一个激活函数都不只是一段简单的切线代码。它们是信息流在穿越数学时空时的滤镜。优秀的黑客在隐藏层追求“百花齐放、正负对称”的流动效率在终点站则追求“绝对严谨、契合现实”的物理边界。欢迎在评论区留下你的思考我们今天论证了 Tanh 通过零中心化完美解决了 Sigmoid 的“之”字形更新内耗。然而尽管 Tanh 比 Sigmoid 快得多为什么在现代超深神经网如包含几百层的深度黑客网络的隐藏层中大家最终大面积抛弃了 Tanh转而全面拥抱了看起来极度简单的ReLU修正线性单元Tanh 身上还隐藏着什么制约深层网络生存的致命物理死穴