> _Neural networks are biologically inspired classifiers which is why they are often called "artificial neural networks" to distinguish them from the organic kind. However, in reality human neural networks are so much more capable and complex from artificial neural networks that it is usually better to not draw too many parallels between the two.
#第一性原理 神经网络就是通过线性变换 + 非线性激活,去拟合各种可能的函数规律
我们到目前为止看到的线性模型和神经网络的最大区别,在于神经网络的非线性导致大多数我们感兴趣的代价函数都变得非凸。这意味着神经网络的训练通常使用迭代的、基于梯度的优化,仅仅使得代价函数达到一个非常小的值;而不是像用于训练线性回归模型的线性方程求解器
很多人都会有这种感觉:**"神经网络就是通过线性变换 + 非线性激活,去拟合各种可能的函数规律"**。从某种角度讲,这确实是对神经网络的一个**概括**,也是神经网络之所以能解决众多问题(图像、文本、语音等)的根本原因——它具有**强大的函数逼近能力 (universal approximation)**。不过,要真正理解为什么"线性+非线性"能拟合万物,还需要从以下几个方面来展开。
| | 类型 | 主要特点 | 典型应用场景 | 代表网络 |
| -------- | ------ | ---------------- | ---------- | ------------------------------------------ |
| 基本的神经网络 | 前馈神经网络 | 信息单向传递,无[[反馈连接]] | 分类、回归、特征提取 | [多层感知机 MLP](多层感知机%20MLP.md)、[[CNN]]、ResNet |
| [[神经网络]] | | | | |
前馈网络与循环神经网络(RNN)的主要区别:
- 前馈网络无法处理序列数据中的时间依赖关系
- 前馈网络不维持内部状态来记忆之前的输入
- 前馈网络的结构更简单,通常训练起来也更容易
# 1. 神经网络的本质:函数逼近
## 1.1 线性变换 + 非线性激活
一个简单的全连接神经网络 (feed-forward neural network) 的每一层通常都是:
$h^{(l)}=\sigma(W^{(l)}h^{(l-1)}+b^{(l)})$
其中:
- $W^{(l)}$ 和 $b^{(l)}$ 是**可学习**的权重和偏置向量(线性部分)。
- $\sigma(\cdot)$ 是某种**非线性激活函数**(如 ReLU、tanh、sigmoid 等)。
- $h^{(l-1)}$ 是上层输出(或者对第 1 层来说是输入特征)。
把这些层"堆"到一起就是多层网络,多层网络本质上就是**一层一层地进行"线性变换 + 非线性变换"的级联**。
## 1.2 多层叠加带来"复合函数"
当你把多个线性+非线性操作组合在一起,就形成了一个**非常灵活的复合函数**。理论上,只要网络规模(隐藏单元数/隐藏层数)足够大,神经网络就可以"逼近"从输入到输出之间的任意复杂映射关系,这就是**Universal Approximation Theorem(通用逼近定理)**所阐明的:
> **只要神经网络有至少一层带有足够多的隐藏神经元,并且使用合适的激活函数,它就能以任意精度逼近一个连续函数(在给定的紧致域上)。**
换句话说,**线性+非线性的叠加,能够构造出多种形状的函数曲面**,从而拟合各类复杂的映射。
---
# 2. 为什么"线性 + 非线性"能表达万千变化?
1. **单层线性模型的局限**
只用"线性变换",就是我们熟知的线性回归或感知机,只能刻画"输入输出之间的一个超平面"。比如二分类时只能学到一个"直线/平面"分割边界,表达能力很有限。
2. **非线性激活**破局
一旦在线性操作之后插入一个**非线性激活函数**,就打破了单纯"线性—线性"叠加依然是"线性"的限制,能够在数据空间中塑造更灵活、更弯曲、更复杂的决策边界或映射关系。
3. **多层的级联**
多层意味着**复合函数**:
输出=f(⋯f(f(x)))\text{输出} = f(\cdots f(f(\mathbf{x})))
不同层可以捕捉到不同层级的特征。例如在图像中,第一层学到的是简单边缘/纹理,往上层可以组合成局部结构,最终更高层学到抽象语义。**在 NLP、语音、推荐系统等领域也是类似的"分层特征表示"**,这正是深度学习能够自动提取特征的关键。
---
# 3. 有了"万能逼近",为什么还要设计各种结构?
既然"线性+非线性"能拟合"万物",为什么还要出现卷积网络 (CNN)、循环网络 (RNN)、Transformer 等不同架构?原因在于:
1. **效率与泛化**
- 虽然你可以用一个巨大的全连接网络来逼近任何函数,但在实际问题中,这往往需要海量训练数据和巨大的参数量,且容易过拟合,训练难度也很大。
- 具有**特定结构**(例如卷积用来处理图像的局部平移不变结构、RNN 处理序列依赖、Transformer 使用自注意力捕捉长程依赖)的网络,更容易捕捉问题的先验特征,训练起来更高效,也更能泛化到新数据。
2. **数据分布与先验**
- 设计网络结构本质上是**把对任务和数据的理解融入到模型中**。
- 比如图像有局部相关性、时间序列有顺序依赖、语言有上下文依赖等。利用这些先验设计的结构,模型会更"事半功倍"。
3. **可解释性与可控性**
- 不同结构可以更好地解释"模型学到了什么特征",或者在生产环境中更好地做调整和部署。
- 仅仅依靠一个"超大"且"没有任何结构"的网络是不现实的:既难以训练,也难以解释。
---
# 4. 训练数据与损失函数同样关键
1. **数据量和数据分布**
- 神经网络要把"线性+非线性"这块"通用函数逼近器"真正**学好**,离不开充足且具有代表性的数据。
- 如果数据不足或分布与真实场景不匹配,即使"网络能拟合任何函数",它也可能陷入过拟合,或者在推断阶段效果不佳。
2. **损失函数与优化**
- 在训练过程中,我们通过定义损失函数(如交叉熵、均方误差等),利用梯度下降或变体来一步步更新网络权重,逼近所需的映射。
- 损失函数的设定和正则化等也会影响模型最终能学到什么函数形状。
---
# 5. 是"拟合一切"还是"盲目万能"?
虽然神经网络理论上可以近似任何函数,但在**实践**中还有若干需要注意的方面:
1. **需要正确的损失和足够的数据**
- 没有正确的目标函数或没有足够多的、高质量的训练数据,模型即使有很强的表达能力也无从发挥或会过度拟合。
2. **需要合理的网络结构和超参数**
- 结构过于简单,无法捕捉复杂关系;结构过于庞大,可能难以训练或过拟合。
- 激活函数的选择、正则化策略、学习率、batch size 等都会影响收敛效果和最终性能。
3. **模型可解释性和稳定性问题**
- 神经网络逼近的过程往往是一个"黑箱"式的自动学习,对于很多安全、医疗、金融场景,过于"黑箱"可能带来风险。
- 对抗样本 (adversarial example)、分布外数据等情况,网络也可能出现不可预测的行为。
---
# 6. 小结
- **本质**:是的,从数学角度看,神经网络确实可以被视为在做"线性变换 + 非线性函数"层层叠加,从而具备**通用函数逼近**能力。
- **价值**:正是由于有如此灵活的表达能力,神经网络才能被广泛应用于计算机视觉、自然语言处理、语音识别、推荐系统等众多领域。
- **前提**:要想让这种"通用逼近"发挥作用,需要**足够多且多样化的数据**、**合理的结构设计**和**恰当的训练策略**。
- **局限**:真正的"万物拟合"受限于现实中的数据、训练方法、硬件资源、可解释性需求等;因此,人们通过各种改进方法、加入先验和结构,让神经网络在特定任务上表现更好。
所以,**"线性 + 非线性可以拟合一切"** 这句话在某种意义上**非常正确**:它解释了为什么深度学习方法具有极大的潜力和普适性。但要发挥其威力,还需要结合大量的工程技巧、数据、以及对任务的理解。就像一把"威力无穷的魔法棒",要真正把魔法变成现实,还需要**数据燃料**和**正确的使用方法**。
---