21 神经网络概述
1. 回顾:逻辑回归(Logistic Regression)
在上一周的学习中,我们学习了逻辑回归模型,其计算流程如下:
输入特征向量:$\mathbf{x} \in \mathbb{R}^{n_x}$
参数:权重 $\mathbf{w} \in \mathbb{R}^{n_x}$,偏置 $b \in \mathbb{R}$
线性组合:
$$
z = \mathbf{w}^\top \mathbf{x} + b
$$激活函数(Sigmoid):
$$
a = \hat{y} = \sigma(z) = \frac{1}{1 + e^{-z}}
$$损失函数(单个样本):
$$
\mathcal{L}(a, y) = -\left[ y \log a + (1 - y) \log(1 - a) \right]
$$
这个过程可以用一个计算图(computation graph) 表示:
$$
\mathbf{x}, \mathbf{w}, b \rightarrow z \rightarrow a = \hat{y} \rightarrow \mathcal{L}
$$
2. 神经网络的基本思想
神经网络的核心思想是:将多个“逻辑回归单元”堆叠起来,形成多层结构。
“You can form a neural network by stacking together a lot of little sigmoid units.”
示例结构(含一个隐藏层):
- 输入层:3 个特征 $x_1, x_2, x_3$ → 向量 $\mathbf{x} \in \mathbb{R}^3$
- 隐藏层:3 个神经元(每个都执行类似逻辑回归的计算)
- 输出层:1 个神经元 → 输出 $\hat{y}$
3. 神经网络的前向传播(Forward Propagation)
我们将使用方括号上标表示网络的层数(注意:不是训练样本索引!):
- $[\ell]$ 表示第 $\ell$ 层(layer)
- $(i)$ 表示第 $i$ 个训练样本(如 $x^{(i)}$)
第 1 层(隐藏层):
设隐藏层有 $n^{[1]} = 3$ 个神经元。
权重矩阵:$\mathbf{W}^{[1]} \in \mathbb{R}^{3 \times 3}$(因为输入是 3 维)
偏置向量:$\mathbf{b}^{[1]} \in \mathbb{R}^{3}$
线性部分:
$$
\mathbf{z}^{[1]} = \mathbf{W}^{[1]} \mathbf{x} + \mathbf{b}^{[1]}
$$激活部分(逐元素 Sigmoid):
$$
\mathbf{a}^{[1]} = \sigma(\mathbf{z}^{[1]}) =
\begin{bmatrix}
\sigma(z_1^{[1]}) \
\sigma(z_2^{[1]}) \
\sigma(z_3^{[1]})
\end{bmatrix}
$$
第 2 层(输出层):
权重:$\mathbf{W}^{[2]} \in \mathbb{R}^{1 \times 3}$
偏置:$b^{[2]} \in \mathbb{R}$
线性部分:
$$
z^{[2]} = \mathbf{W}^{[2]} \mathbf{a}^{[1]} + b^{[2]}
$$激活(输出):
$$
a^{[2]} = \hat{y} = \sigma(z^{[2]})
$$
注意:$a^{[2]}$ 就是最终预测值 $\hat{y}$。
总结前向传播流程:
$$
\mathbf{x}
\overset{\mathbf{W}^{[1]}, \mathbf{b}^{[1]}}{\longrightarrow}
\mathbf{z}^{[1]}
\overset{\sigma}{\longrightarrow}
\mathbf{a}^{[1]}
\overset{\mathbf{W}^{[2]}, b^{[2]}}{\longrightarrow}
z^{[2]}
\overset{\sigma}{\longrightarrow}
a^{[2]} = \hat{y}
\rightarrow \mathcal{L}(a^{[2]}, y)
$$
4. 损失函数
对于单个样本 $(\mathbf{x}, y)$,损失函数仍为:
$$
\mathcal{L}(a^{[2]}, y) = -\left[ y \log a^{[2]} + (1 - y) \log(1 - a^{[2]}) \right]
$$
5. 反向传播(Backpropagation)概览
为了训练神经网络,我们需要通过反向传播计算梯度,更新参数。
逻辑回归中的反向传播步骤为:
$$
\mathcal{L} \rightarrow da \rightarrow dz \rightarrow d\mathbf{w}, db
$$
在神经网络中,这一过程被重复多次,从输出层向输入层逐层回传:
反向传播路径(以两层网络为例):
$$
\mathcal{L}
\rightarrow da^{[2]}
\rightarrow dz^{[2]}
\rightarrow d\mathbf{W}^{[2]}, db^{[2]}
\rightarrow da^{[1]}
\rightarrow dz^{[1]}
\rightarrow d\mathbf{W}^{[1]}, d\mathbf{b}^{[1]}
$$
这些梯度将用于梯度下降法更新参数。
6. 关键符号说明
| 符号 | 含义 |
|---|---|
| $x^{(i)}$ | 第 $i$ 个训练样本的输入特征 |
| $y^{(i)}$ | 第 $i$ 个训练样本的真实标签 |
| $[\ell]$ | 第 $\ell$ 层(layer index) |
| $\mathbf{W}^{[\ell]}$ | 第 $\ell$ 层的权重矩阵 |
| $\mathbf{b}^{[\ell]}$ | 第 $\ell$ 层的偏置向量 |
| $\mathbf{z}^{[\ell]}$ | 第 $\ell$ 层的线性输出 |
| $\mathbf{a}^{[\ell]}$ | 第 $\ell$ 层的激活输出($\mathbf{a}^{[0]} = \mathbf{x}$) |
7. 核心思想总结
- 神经网络 = 多层逻辑回归单元的堆叠
- 每一层都包含:线性变换 + 非线性激活(如 Sigmoid)
- 前向传播:从输入到输出逐层计算
- 反向传播:从损失函数反向计算梯度,用于参数更新
- 方括号上标 $[\cdot]$ 表示层,圆括号上标 $(\cdot)$ 表示样本