文章

21 神经网络概述

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)$ 表示样本
本文由作者按照 CC BY 4.0 进行授权