这章要解决什么问题?
上一章我们说了“机器能学习”,这一章我们要看它具体是用什么器官学的。 为什么简单的线性公式不够用?为什么我们需要模仿人脑? 传说中的“神经网络”到底长什么样?
1. 为什么我们需要“深度”学习?
在上一章的“猫狗识别”里,如果所有的猫都长得标准,所有的狗都长得标准,那简单的数学公式(比如画一条线把它们分开)就够了。
但现实世界太复杂了:
- 有的猫缩成一团(形状变了)。
- 有的猫躲在草丛里(颜色变了)。
- 有的照片是黑白的。
简单的线性分类器(Linear Classifier)遇到这些情况直接歇菜。这就好比你想用一把直尺去测量海岸线的长度——工具太简单,无法描述复杂的现实。
为了处理这种非线性 (Non-linear) 的复杂问题,我们需要一个更复杂的脑子——神经网络 (Neural Networks)。
2. 神经网络:模仿人脑的积木
深度学习的核心,就是人工神经网络 (Artificial Neural Networks, ANN)。
它的灵感来源 是生物学。

2.1 神经元 (Neuron / Perceptron)
生物神经元的工作方式很简单:
- 树突 (Dendrites):接收信号(比如手碰到了火)。
- 细胞体 (Soma):处理信号(这信号够不够强?)。
- 轴突 (Axon):如果信号够强,就发射出去,传给下一个神经元(缩手!)。
我们在电脑里造的人工神经元也是一模一样的逻辑:
拆解一下这个微小的机器:
- 输入 (Inputs):从上一层传过来的数据(比如照片像素)。
- 权重 (Weights):每个输入有多重要(比如“有胡须”这个特征很重要,权重就大)。
- 激活函数 (Activation Function):这是灵魂。它决定了这个神经元要不要“兴奋”。
2.2 为什么必须要有“激活函数”?
这就是很多人的知识盲区了。为什么不能直接把数字加起来传下去?
如果只有加减乘除(线性运算),你就算堆一万层神经网络,最后也等价于一层。就像你把一堆这直线叠在一起,它还是一条直线,弯不过来。
激活函数引入了“弯曲”。
- ReLU (Rectified Linear Unit):最常用的激活函数。
- 逻辑:如果结果小于0,就变成0(死掉);如果大于0,保持原样。
- 作用:让网络学会“忽略”某些没用的信号,只关注有用的。这就引入了非线性,让模型能理解复杂的形状。
3. 深度网络:一层包一层的特征
所谓“深度”学习(Deep Learning),就是很多层神经网络叠在一起。
每一层都在看不同的东西:
- 输入层 (Input Layer):看到原始像素(一堆 255, 0, 128...)。
- 隐藏层 1 (Hidden Layer 1):发现了一些线条和边缘。
- 隐藏层 2 (Hidden Layer 2):发现线条拼成了形状(眼睛、耳朵)。
- 隐藏层 3 (Hidden Layer 3):发现形状拼成了对象(这是猫脸)。
- 输出层 (Output Layer):大喊一声:“是猫!”
这就是“深度 = 抽象”。 层数越多,模型能理解的概念就越抽象、越高级。
工程注
理论上越深越好,但实际上层数越深,训练越难(比如梯度传着传着就没了),容易导致过拟合或训练失败。这也是后来 ResNet (残差连接) 等结构出现的原因。