神经网络中的激活函数与反向传播
约 1038 字大约 3 分钟
神经网络中的激活函数与反向传播
一、从回归到分类:思维模式的转变
- 人类在处理问题时,更倾向于使用离散的分类(如“有毒/无毒”),而非精确的连续数值拟合。
- 这引出了对神经网络输出的新需求:将连续输出转化为代表类别的离散值(如0和1)。
二、激活函数的引入
为了将线性函数的输出转化为分类结果,需要引入激活函数。
1. 阶跃函数(符号函数)
- 定义:当输入大于某个阈值时输出1,否则输出0。
- 缺点:不连续、不可导(除分界点外导数为0),不利于使用梯度下降算法进行优化。
2. Sigmoid函数(逻辑斯特函数)
- 公式:
A = 1 / (1 + e^(-Z)) - 特性:
- 输出值被压缩在 (0, 1) 区间内,适合表示概率或进行二分类。
- 函数光滑、连续、处处可导。
- 其导数有一个简洁的公式:
dA/dZ = A * (1 - A)。
3. 激活函数的作用
- 实现分类:将神经元的线性输出映射为非线性输出,使其能够表达“是/否”的逻辑判断。
- 引入非线性:这是激活函数更核心的作用。如果没有非线性激活函数,无论神经网络有多少层,其整体仍然是一个线性系统,表达能力有限。非线性激活函数是神经网络能够拟合复杂函数关系的灵魂。
三、带激活函数的神经元模型
一个完整的神经元(感知器)包含两部分:
- 线性计算:
Z = W * X + b - 非线性激活:
A = σ(Z),其中 σ 代表激活函数(如Sigmoid)。
此时,从输入 X 到最终输出 A 的关系是一个复合函数。
四、复合函数与链式法则
为了对包含激活函数的复杂模型(E = (Y - A)^2,其中 A = σ(Z), Z = WX + b)进行梯度下降,需要计算代价函数 E 对参数 W 和 b 的导数。
1. 链式法则
- 核心:对于复合函数,其导数等于外层函数导数与内层函数导数的乘积。
- 公式(以E对W求导为例):
dE/dW = (dE/dA) * (dA/dZ) * (dZ/dW) - 意义:链式法则将复杂的求导过程分解为多个简单步骤的连乘,使得反向传播算法得以高效实现。梯度可以从最终输出层,沿着网络结构反向传播到每一层的参数。
2. 具体导数计算(以Sigmoid为例)
dE/dA = -2 * (Y - A)dA/dZ = A * (1 - A)(Sigmoid函数的导数)dZ/dW = XdZ/db = 1
因此:
dE/dW = -2 * (Y - A) * A * (1 - A) * XdE/db = -2 * (Y - A) * A * (1 - A)
五、反向传播算法
- 定义:利用链式法则,将代价函数的梯度从输出层向输入层反向传播,以计算网络中每个参数(权重W、偏置b)的梯度。
- 历史意义:该算法由Hinton等人在1986年明确引入神经网络,解决了多层网络参数训练的核心难题,成为现代深度学习的基石。
六、编程实验核心步骤
- 在前向传播中,在线性计算后加入Sigmoid激活函数。
- 在反向传播中,使用链式法则推导的新公式(
dE/dW和dE/db)来计算梯度。 - 应用梯度下降更新参数:
W = W - α * dE/dW,b = b - α * dE/db。 - 通过多轮迭代,Sigmoid曲线会逐渐调整形态,以拟合分类边界。
总结
本节课完成了神经网络的两个关键升级:
- 引入Sigmoid激活函数,使神经元具备非线性分类能力,并为网络注入了非线性表达能力。
- 应用链式法则进行反向传播,系统地解决了包含激活函数的复合模型在梯度下降中的求导问题。激活函数提供了非线性,链式法则实现了梯度的高效反向传播,二者的结合使得训练多层复杂神经网络成为可能,奠定了深度学习的基础。
