拆解深度学习 “基石”:激活函数有啥用?z=wᵀx+b 怎样使用?
Ⅰ、激活函数本质、作用及常用激活函数的数学推导
一、激活函数的本质
在神经网络中,一个神经元的计算通常是:
z=wTx+bz = \mathbf{w}^T \mathbf{x} + bz=wTx+b
a=σ(z)a = \sigma(z)a=σ(z)
其中:
- w\mathbf{w}w 是权重(weight)
- x\mathbf{x}x是输入(input)
- b 是偏置(bias)
- z 是线性加权和(logit)
- σ(⋅)\sigma(\cdot)σ(⋅) 就是激活函数
- a 是神经元的输出(activation)
本质:
激活函数是一个非线性函数,它的作用是给神经元引入非线性表达能力。
如果没有激活函数(或者用线性激活函数 σ(z)=z\sigma(z)=zσ(z)=z),那么无论神经网络有多少层,最终输出都只是输入的线性组合,即:
y=WL(…W2(W1x+b1)+b2… )+bLy = W_L ( \dots W_2 (W_1 x + b_1) + b_2 \dots ) + b_Ly=WL(…W2(W1x+b1)+b2…)+bL
这等价于一个单层线性模型,无法拟合复杂的非线性关系。
二、激活函数的作用
激活函数在神经网络中有以下几个核心作用:
- 引入非线性
- 没有非线性,深层网络毫无意义(只是线性变换)
- 有了非线性,网络可以逼近任意复杂的函数(万能逼近定理)
- 控制输出范围
- 例如 Sigmoid 把输出压缩到 [0,1],适合二分类概率输出
- Tanh 把输出压缩到 [-1,1]
- 增加模型的鲁棒性
- 某些激活函数(如 ReLU)对输入的微小变化不敏感
- 缓解梯度消失问题(ReLU 在正区间梯度恒为 1)
- 提供梯度流
- 激活函数必须可导(至少在大部分点可导),才能用反向传播训练
三、常见激活函数及推导
我们来逐一介绍几种经典激活函数,包括它们的公式、图像特点、梯度(导数)以及优缺点。
1. Sigmoid 函数
公式:
σ(z)=11+e−z\sigma(z) = \frac{1}{1 + e^{-z}}σ(z)=1+e−z1
特点:
- 输出范围 (0, 1)
- 平滑可导
- 常用于二分类输出层
梯度推导:
σ′(z)=ddz(11+e−z)\sigma'(z) = \frac{d}{dz} \left( \frac{1}{1 + e^{-z}} \right)σ′(z)=dzd(1+e−z1)
=e−z(1+e−z)2= \frac{e^{-z}}{(1 + e^{-z})^2}=(1+e−z)2e−z
=σ(z)⋅(1−σ(z))= \sigma(z) \cdot (1 - \sigma(z))=σ(z)⋅(1−σ(z))
优缺点:
- 输出可解释为概率
- 容易梯度消失(z 很大或很小时,梯度接近 0)
- 输出均值不是 0,影响训练效果
2. Tanh 函数
公式:
tanh(z)=ez−e−zez+e−z\tanh(z) = \frac{e^z - e^{-z}}{e^z + e^{-z}}tanh(z)=ez+e−zez−e−z
特点:
- 输出范围 (-1, 1)
- 均值为 0,比 Sigmoid 训练收敛快
- 常用于隐藏层
梯度推导:
tanh′(z)=ddz(ez−e−zez+e−z)\tanh'(z) = \frac{d}{dz} \left( \frac{e^z - e^{-z}}{e^z + e^{-z}} \right)tanh′(z)=dzd(ez+e−zez−e−z)
=(ez+e−z)2−(ez−e−z)2(ez+e−z)2= \frac{(e^z + e^{-z})^2 - (e^z - e^{-z})^2}{(e^z + e^{-z})^2}=(ez+e−z)2(ez+e−z)2−(ez−e−z)2
=1−tanh2(z)= 1 - \tanh^2(z)=1−tanh2(z)
优缺点:
- 均值为 0,训练更快
- 仍有梯度消失问题
3. ReLU (Rectified Linear Unit)
公式:
ReLU(z)=max(0,z)\text{ReLU}(z) = \max(0, z)ReLU(z)=max(0,z)
特点:
- 计算极快(只需比较和取最大值)
- 在正区间梯度恒为 1,缓解梯度消失
- 会导致部分神经元 “死亡”(输出恒为 0)
梯度推导:
ReLU′(z)={1if z>00if z<0\text{ReLU}'(z) = \begin{cases} 1 & \text{if } z > 0 \\ 0 & \text{if } z < 0 \end{cases}ReLU′(z)={10if z>0if z<0
(z=0 处不可导,但实际训练中通常取 0 或 1)
优缺点:
- 计算简单,训练快
- 缓解梯度消失
- Dead ReLU 问题(神经元永久不激活)
4. Leaky ReLU
公式:
LeakyReLU(z)={zif z>0αzif z≤0\text{LeakyReLU}(z) = \begin{cases} z & \text{if } z > 0 \\ \alpha z & \text{if } z \leq 0 \end{cases}LeakyReLU(z)={zαzif z>0if z≤0
(α\alphaα通常取 0.01)
梯度推导:
LeakyReLU′(z)={1if z>0αif z≤0\text{LeakyReLU}'(z) = \begin{cases} 1 & \text{if } z > 0 \\ \alpha & \text{if } z \leq 0 \end{cases}LeakyReLU′(z)={1αif z>0if z≤0
优缺点:
- 解决 Dead ReLU 问题
- 计算简单
- 增加了一个超参数 (\alpha)
5. Softmax 函数
公式:
softmax(z)i=ezi∑j=1Kezj\text{softmax}(z)_i = \frac{e^{z_i}}{\sum_{j=1}^K e^{z_j}}softmax(z)i=∑j=1Kezjezi
(K 是类别数)
特点:
- 常用于多分类问题的输出层
- 输出值在 [0,1] 之间,且和为 1,可解释为概率
梯度推导:
对 Softmax 函数的梯度推导比较复杂,需要考虑两种情况:
- 当 i=ji = ji=j 时:
∂softmax(z)i∂zj=softmax(z)i⋅(1−softmax(z)i)\frac{\partial \text{softmax}(z)_i}{\partial z_j} = \text{softmax}(z)_i \cdot (1 - \text{softmax}(z)_i)∂zj∂softmax(z)i=softmax(z)i⋅(1−softmax(z)i)
- 当 i≠ji \neq ji=j 时:
∂softmax(z)i∂zj=−softmax(z)i⋅softmax(z)j\frac{\partial \text{softmax}(z)_i}{\partial z_j} = -\text{softmax}(z)_i \cdot \text{softmax}(z)_j∂zj∂softmax(z)i=−softmax(z)i⋅softmax(z)j
优缺点:
- 输出可解释为概率分布
- 计算开销较大
- 对输入敏感(容易数值不稳定)
四、激活函数的选择建议
- 输出层:
- 二分类:Sigmoid
- 多分类:Softmax
- 回归问题:线性激活(或 ReLU 变体)
- 隐藏层:
- 首选:ReLU 或其变体(LeakyReLU, ELU, Swish)
- 传统选择:Tanh
- 较少使用:Sigmoid(除非是 LSTM 等特殊结构)
五、总结
- 本质:激活函数引入非线性,使神经网络能拟合复杂函数
- 作用:增加模型表达能力、控制输出范围、影响训练效率
- 设计原则:非线性、可导、计算高效、梯度稳定
- 常用函数:Sigmoid、Tanh、ReLU、LeakyReLU、Softmax
Ⅱ、 z=wTx+bz = \mathbf{w}^T \mathbf{x} + bz=wTx+b使用示例
1. 场景设定(预测是否购买商品)
假设我们做一个简单的二分类模型
根据一个人的 ,判断他是否会购买某件商品。
-
输入特征:
x=[x1x2]=[258000]\mathbf{x} = \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} = \begin{bmatrix} 25 \\ 8000 \end{bmatrix}x=[x1x2]=[258000]
(年龄 25 岁,月收入 8000 元)
-
模型参数(权重和偏置,假设训练好了):
w=[w1w2]=[0.020.0005],b=−3\mathbf{w} = \begin{bmatrix} w_1 \\ w_2 \end{bmatrix} = \begin{bmatrix} 0.02 \\ 0.0005 \end{bmatrix}, \quad b = -3w=[w1w2]=[0.020.0005],b=−3
2. 计算过程
公式:
z=wTx+bz = \mathbf{w}^T \mathbf{x} + bz=wTx+b
- 计算加权和 wTx\mathbf{w}^T \mathbf{x}wTxwTx=[0.020.0005][258000]\mathbf{w}^T \mathbf{x} = \begin{bmatrix} 0.02 & 0.0005 \end{bmatrix} \begin{bmatrix} 25 \\ 8000 \end{bmatrix}wTx=[0.020.0005][258000] =(0.02×25)+(0.0005×8000)= (0.02 \times 25) + (0.0005 \times 8000)=(0.02×25)+(0.0005×8000)=0.5+4=4.5= 0.5 + 4 = 4.5=0.5+4=4.5
- 加上偏置 bz=4.5+(−3)=1.5z = 4.5 + (-3) = 1.5z=4.5+(−3)=1.5
3. 如何使用这个结果 z
-
如果是回归任务:z 可以直接作为预测值(比如预测购买概率的分数)。
-
如果是分类任务:我们会把 z 放进激活函数,比如Sigmoid
σ(z)=11+e−z=11+e−1.5≈0.8176\sigma(z) = \frac{1}{1 + e^{-z}} = \frac{1}{1 + e^{-1.5}} \approx 0.8176σ(z)=1+e−z1=1+e−1.51≈0.8176
得到概率值 (即 82% 的概率会购买)。
-
决策规则:
- 如果概率 > 0.5,则预测 “购买”,否则预测 “不购买”。这里 0.82 > 0.5 → 预测: 会购买
4. 权重和偏置的直观理解
-
w₁ = 0.02:年龄每增加 1 岁,购买分数增加 0.02
-
w₂ = 0.0005:月收入每增加 1 元,购买分数增加 0.0005
(收入的权重很小,但因为收入数值大,它对结果的影响其实很大)
-
b = -3:基础阈值,如果加权和小于 3,z 就会是负数,经过 Sigmoid 后概率会低于 0.5(不购买)
5. 再看一个例子(不同输入)
输入:
x=[183000]\mathbf{x} = \begin{bmatrix} 18 \\ 3000 \end{bmatrix}x=[183000]
(年龄 18 岁,月收入 3000 元)
计算:
wTx=(0.02×18)+(0.0005×3000)=0.36+1.5=1.86\mathbf{w}^T \mathbf{x} = (0.02 \times 18) + (0.0005 \times 3000) = 0.36 + 1.5 = 1.86wTx=(0.02×18)+(0.0005×3000)=0.36+1.5=1.86
z=1.86−3=−1.14z = 1.86 - 3 = -1.14z=1.86−3=−1.14
Sigmoid:
σ(−1.14)≈0.245\sigma(-1.14) \approx 0.245σ(−1.14)≈0.245
概率 24.5% → 预测:不购买
6. 小结
公式z=wTx+bz = \mathbf{w}^T \mathbf{x} + bz=wTx+b的运算过程就是:
- 输入特征和权重做线性加权和
- 加上偏置得到一个分数 z
- z 可以直接作为回归输出,或通过激活函数变成分类概率
这个形式的好处是:
- 简单、可解释
- 权重大小直接反映特征重要性
- 方便求梯度(反向传播)
- 是所有深度学习模型的基础单元
更多推荐



所有评论(0)