1. 引言
在本篇文章中,我们将深入分析神经网络中激活函数的作用。从历史上看,激活函数的发展路径颇为复杂。我们会从认识论、技术实现和数学原理三个层面,探讨为何最终我们选择了非线性激活函数。
我们会从线性激活函数出发,分析其局限性,并通过具体示例说明:在处理非线性问题时,使用线性激活函数是不合适的。
2. 前馈神经网络的结构
我们聚焦于全连接的前馈神经网络(Feed-Forward Neural Networks),其结构如下图所示:
这类网络没有递归连接,每一层的神经元与下一层的所有神经元相连。
它们属于监督学习神经网络,通过样本数据进行训练,将网络输出与目标值进行比较来学习。
信息传播方向是从左到右。我们用向量 x 表示输入单元,用 y 表示输出单元。输入和输出之间的关系由神经元内部的数学变换建模。
一个包含多个隐藏层的网络被称为深度网络。
2.1 激活函数
我们来看单个神经元的结构:
每个连接通过权重 wᵢ 放大或抑制输入 xᵢ。每个神经元有 N 个输入,其加权和为:
$$ \Sigma = w_0 + \sum_{i=1}^{N} w_i x_i $$
权重中包含了偏置项(bias),其输入固定为 1,作用是提供一个偏移量,相当于函数的 y 截距。
⚠️ 没有偏置项时,模型会被限制通过原点 (x=0, y=0),这在很多实际问题中并不适用。
加权和 Σ 会通过一个函数 φ 进行变换,这个函数就是激活函数。如果 φ 是非线性的,那么整个网络就可以建模非线性关系。
3. 模型演进的背景
3.1 模型的发展
过去三百年中,经验科学的发展很大程度上依赖于模型的构建。这些模型不仅基于测量数据,也融合了对现象的定性理解。
例如,相对论和量子力学的建立,经历了长期的实验验证和理论推演。这些理论之所以准确,是因为我们能够识别出影响现象的所有变量和参数。
在两个模型都能解释数据时,我们往往根据通用性、简洁性和优雅性来做选择。这正是奥卡姆剃刀(Occam’s Razor)原则的体现。
3.2 新范式的出现
随着计算能力的提升,我们面对的问题越来越复杂,数据量巨大,但缺乏对现象的深入理解。此时,传统的建模方式不再适用。
我们无法像物理模型那样进行定性推理,也难以判断模型是否接近最优解。这就迫使我们采用一种新的范式:
✅ 模型结构的选择变得具有高度任意性
✅ 我们必须在信息不完整的情况下做出决策
3.3 一个实际例子
考虑个性化广告推荐系统。我们可能认为广告点击率与年龄、购买历史相关,但如何量化这种关系?是否要考虑用户的地理位置、浏览时间、设备类型等?
这些问题没有标准答案,也没有明确的理论支撑。因此,模型结构的选择只能是经验性的。
3.4 选择的任意性
虽然我们可以尝试回答这些问题,但无法保证已经识别了所有影响因素。这使得基于这些参数构建的模型无法达到传统科学模型那样的准确性。
神经网络等“黑盒”模型正是为了解决这类问题而诞生的。它们能在有限时间内给出一个结果,无论好坏。这也说明:
✅ 神经网络的结构在很大程度上是一种经验性、任意性的选择
4. 线性模型与非线性模型
数学函数可以分为线性和非线性两类。
线性函数满足以下性质:
$$ f(ax + by) = af(x) + bf(y) $$
线性模型由线性函数构成,否则为非线性模型。
一般而言,线性模型结构更简单,便于理解和计算。而非线性模型则更复杂,但能表达更丰富的函数关系。
需要注意的是:
❌ 一个统计模型是否为线性模型,不完全取决于其函数形式,而是看其参数是否线性。
例如,多项式回归虽然是非线性函数,但参数是线性的,因此属于线性模型。而神经网络由于使用了非线性激活函数,因此属于非线性模型。
4.1 线性模型的直观理解
假设我们想用线性模型预测一个依赖于单一变量的问题。
我们可以将输入变量(自变量)和目标变量(因变量)绘制在二维坐标图中。线性模型的目标是找到一条最佳拟合直线。
例如,最小二乘回归(Linear Least Square Regression)的目标是找到使平方误差最小化的直线:
当变量增加到两个时,我们需要用三维空间中的一个平面来拟合数据。随着变量增多,模型就变成一个高维空间中的超平面。
当我们需要拟合曲线时,就必须使用非线性模型。
5. 线性激活函数的局限性
5.1 单层网络的表达能力
考虑一个只有一个隐藏层的神经网络,使用线性激活函数:
// 伪代码示例
double linearActivation(double x) {
return x;
}
double computeOutput(double[] inputs, double[] weights) {
double sum = 0;
for (int i = 0; i < inputs.length; i++) {
sum += inputs[i] * weights[i];
}
return linearActivation(sum);
}
即使有多个隐藏层,只要激活函数是线性的,整个网络的输出仍然是输入的线性组合。因为多个线性函数的组合仍然是线性函数。
5.2 多层网络也无法提升能力
考虑如下结构的多层网络:
输入 -> 线性变换 -> 线性变换 -> 输出
等价于:
输出 = W2 * (W1 * 输入 + b1) + b2 = (W2*W1) * 输入 + (W2*b1 + b2)
仍然是一个线性函数。
✅ 结论:线性激活函数无法提升模型的表达能力
5.3 无法拟合非线性问题
考虑一个典型的非线性分类问题,如 XOR 问题:
x1 | x2 | y |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
使用线性模型无法找到一条直线将两类样本完全分开。而使用非线性激活函数的神经网络可以轻松解决这个问题。
6. 总结
✅ 线性激活函数的神经网络本质上等价于一个线性模型
✅ 无法建模非线性关系
✅ 在面对非线性问题(如 XOR)时表现差
✅ 多层结构也无法弥补线性激活函数的缺陷
因此,非线性激活函数是神经网络具备强大建模能力的关键所在。这也是我们最终走向非线性函数的根本原因。
参考资料
- Ben Krose and Patrick van der Smag, An Introduction to Neural Networks
- Jürgen Schmidhuber, Deep learning in neural networks: An overview
- Christopher Bishop, Neural Networks for Pattern Recognition
- Wikipedia: Occam’s Razor, ARIMA