17-2 神经网络的表示与基础任务

🎯 教学目标与重难点…

【三维目标】

  • 📚 知识目标:理解神经网络的层级结构(输入层、隐藏层、输出层)及各层的功能定位;掌握前向传播的数学表达 \( a^{[l]} = f^{[l]}(W^{[l]} a^{[l-1]} + b^{[l]}) \);理解神经网络用于回归和分类任务时的输出层设计与损失函数选择。
  • ⚙️ 能力目标:能够从零实现单隐藏层神经网络的前向传播计算;能够使用 NumPy 构建 MLP 回归模型并对比单神经元线性回归;能够分析不同输出层激活函数与损失函数的匹配关系。
  • 💡 素养目标:建立“神经网络即复合函数”的数学直觉;理解深度与宽度的基本权衡;掌握从单一神经元向多层网络过渡的思维框架。

【重点与难点】

  • 🟢 教学重点:神经网络的层级结构与符号体系(上标 \( [l] \) 表示层,下标 \( i \) 表示神经元索引);前向传播的矩阵运算形式;回归任务(线性输出 + MSE)与二分类任务(Sigmoid + 交叉熵)的网络结构与损失函数配置。
  • 🟡 教学难点:权重矩阵 \( W^{[l]} \) 与偏置向量 \( b^{[l]} \) 的维度推导;从单神经元到多神经元、从单层到多层的维度泛化;理解网络宽度(隐藏层神经元数)对模型容量的影响。

📌 一、 课程导入(5 分钟)

主题:从单个神经元到神经网络

第 17-1 课已经学习了逻辑回归——一个包含单个神经元的模型:

\[ \hat{y} = \sigma(w^T x + b) \]

该模型具有以下特征:

  • 输入特征直接连接到输出
  • 无中间层(隐藏层)
  • 表达能力受限于线性决策边界

现实问题的复杂度远超线性可分范畴。以下任务无法用单神经元解决:

任务 数据形态 单神经元能否解决?
预测房价(波士顿) 13 个特征 → 1 个连续值 ✅ 可解决(线性回归)
判断垃圾邮件 词频向量 → 二分类 可解决(逻辑回归)
手写数字识别(MNIST) 784 像素 → 10 类别 ❌ 线性模型准确率 ~70%
图像分类(CIFAR-10) 3072 像素 → 10 类别 ❌ 线性模型准确率 ~30%

核心问题:如何提升模型的表达能力?

解决方案:在输入与输出之间插入多个神经元,形成“隐藏层”——这就是神经网络。

本课路径

1神经元(逻辑回归)
23神经网络的结构表示
45前向传播(信息传递机制)
67用于回归的神经网络(连续输出)
89用于二分类的神经网络(概率输出)
  • 👨‍🏫 教师活动:回顾单神经元逻辑回归的局限性;展示 MNIST 手写数字图片,说明线性分类器的不足;给出本课结构图。
  • 🧑‍🎓 学生活动:回顾逻辑回归的模型形式;观察手写数字的变体,思考为什么需要更复杂的模型。

从已知的单神经元过渡到多层网络,建立“复杂任务需要多层抽象”的直觉;通过具体数据集的准确率对比,说明模型表达能力与任务复杂度的匹配关系。


📖 二、 解决问题过程(一):神经网络的表示(25 分钟)

2.1 网络结构的三层视图

一个典型的前馈神经网络包含三层:

1输入层 (Input Layer)  →  隐藏层 (Hidden Layer)  →  输出层 (Output Layer)
2      x                      a[1]                       a[2]
3    (特征向量)              (中间表示)                  (预测结果)
  • 输入层:接收原始数据,节点数 = 特征维度。不进行计算,仅做数据传递。
  • 隐藏层:进行特征变换与抽象。深度网络可以包含多个隐藏层。
  • 输出层:产生最终预测。结构取决于任务类型。

2.2 符号体系

统一的上标与下标

符号 含义 示例
\( x_i \) 输入特征的第 \( i \) 个分量 \( x_1 \) 表示房价数据中的房间数
\( a^{[l]}_j \) 第 \( l \) 层第 \( j \) 个神经元的激活值 \( a^{[1]}_2 \) 表示隐藏层第 2 个神经元
\( a^{[l]} \) 第 \( l \) 层的激活值向量 \( a^{[1]} = [a^{[1]}_1, a^{[1]}_2, \dots, a^{[1]}_{n_1}]^T \)
\( W^{[l]} \) 第 \( l \) 层的权重矩阵 维度:\( n_l \times n_{l-1} \)
\( w^{[l]}_{j i} \) 第 \( l \) 层第 \( j \) 个神经元的第 \( i \) 个权重 连接 \( a^{[l-1]}_i \to a^{[l]}_j \)
\( b^{[l]} \) 第 \( l \) 层的偏置向量 维度:\( n_l \times 1 \)
\( z^{[l]} \) 第 \( l \) 层的加权输入(线性部分) \( z^{[l]} = W^{[l]} a^{[l-1]} + b^{[l]} \)
\( f^{[l]} \) 第 \( l \) 层的激活函数 逐元素应用
\( n_l \) 第 \( l \) 层的神经元数量 超参数

2.3 维度推导示例(含隐藏层的网络)

以一个具体网络为例:

  • 输入层:\( n_0 = 3 \)(3 个特征)
  • 隐藏层:\( n_1 = 4 \)(4 个神经元)
  • 输出层:\( n_2 = 1 \)(单输出,回归任务)

各层的参数维度

权重矩阵 \( W^{[l]} \) 偏置向量 \( b^{[l]} \) 线性输出 \( z^{[l]} \) 激活 \( a^{[l]} \)
第 1 层(隐藏) \( 4 \times 3 \) \( 4 \times 1 \) \( 4 \times 1 \) \( 4 \times 1 \)
第 2 层(输出) \( 1 \times 4 \) \( 1 \times 1 \) \( 1 \times 1 \) \( 1 \times 1 \)

计算流程

\[ z^{[1]} = W^{[1]} x + b^{[1]}, \quad a^{[1]} = f^{[1]}(z^{[1]}) \]\[ z^{[2]} = W^{[2]} a^{[1]} + b^{[2]}, \quad \hat{y} = a^{[2]} = f^{[2]}(z^{[2]}) \]

2.4 通用前向传播的数学形式

对任意第 \( l \) 层(\( l = 1, 2, \dots, L \)):

\[ z^{[l]} = W^{[l]} a^{[l-1]} + b^{[l]} \]\[ a^{[l]} = f^{[l]}(z^{[l]}) \]

其中 \( a^{[0]} = x \) 为输入特征。

2.5 单隐藏层网络的张量流图

flowchart LR
    subgraph 输入层
        x1["x₁"]
        x2["x₂"]
        x3["x₃"]
    end
subgraph 隐藏层
    h1["a₁¹"]
    h2["a₂¹"]
    h3["a₃¹"]
    h4["a₄¹"]
end

subgraph 输出层
    y["ŷ"]
end

x1 --> h1
x1 --> h2
x1 --> h3
x1 --> h4
x2 --> h1
x2 --> h2
x2 --> h3
x2 --> h4
x3 --> h1
x3 --> h2
x3 --> h3
x3 --> h4
h1 --> y
h2 --> y
h3 --> y
h4 --&gt; y</pre>

说明:权重以矩阵形式组织,每个隐藏层神经元接收所有前层神经元的输入。

  • 👨‍🏫 教师活动:在黑板上绘制三层网络结构图;标注各层参数矩阵的维度;用矩阵乘法展示前向传播过程;强调维度检查对于实现代码的重要性。
  • 🧑‍🎓 学生活动:在笔记本中画出三层网络结构图并标注维度;针对给出的具体网络结构,手算 \( z^{[1]} \) 中各元素的表达式。

建立清晰的符号体系和维度感知是成功实现神经网络的先决条件。通过具体数字示例让学生掌握维度推导的方法,避免在实际编码中出现矩阵维度不匹配的错误。


📖 三、 解决问题过程(二):做回归的神经网络(20 分钟)

3.1 回归任务的网络配置

配置项 选择 理由
输出层神经元数 \( 1 \) 回归输出为单个连续值
输出层激活函数 无(线性激活)\( f(z) = z \) 输出不限制取值范围
损失函数 均方误差(MSE) 衡量预测值与真实值的距离

网络结构(以单隐藏层为例):

\[ z^{[1]} = W^{[1]} x + b^{[1]}, \quad a^{[1]} = \text{ReLU}(z^{[1]}) \]\[ z^{[2]} = W^{[2]} a^{[1]} + b^{[2]}, \quad \hat{y} = z^{[2]} \]

3.2 损失函数

\[ J = \frac{1}{2m} \sum_{i=1}^{m} (\hat{y}^{(i)} - y^{(i)})^2 \]

或等价地:

\[ J = \frac{1}{m} \sum_{i=1}^{m} (\hat{y}^{(i)} - y^{(i)})^2 \]

(两种写法在使用梯度下降时效果相同,常数因子可由学习率吸收)

3.3 与线性回归的对比

对比维度 线性回归 回归神经网络(含隐藏层)
模型形式 \( \hat{y} = w^T x + b \) \( \hat{y} = W^{[2]} f(W^{[1]} x + b^{[1]}) + b^{[2]} \)
参数数量 \( n + 1 \) \( (n \times h) + h + (h \times 1) + 1 \)
表达能力 线性函数 可以逼近任意连续函数(通用近似定理)
计算复杂度 \( O(n) \) \( O(n \cdot h + h) \)
可解释性 高(权重直接表示特征贡献) 低(隐藏层特征是黑箱)

其中 \( n \) 为特征数,\( h \) 为隐藏层神经元数。

3.4 隐藏层的作用

隐藏层神经元学到的可以理解为特征的新的表示

层的深度 特征抽象层次 示例
输入层 原始特征(像素值) 图像中的每个像素
第一隐藏层 简单组合(边缘、纹理) 检测局部对比度
更深隐藏层 复杂模式(形状、部件) 检测眼睛、鼻子等
输出层 高层语义(类别) “这是一只猫”

信息从输入逐层向前流动,每个隐藏层都在构建更高层次的抽象。

  • 👨‍🏫 教师活动:在黑板上写出回归神经网络的完整前向表达式;对比线性回归的参数数量和计算量;用图示解释隐藏层的“特征抽象”功能。
  • 🧑‍🎓 学生活动:思考“如果隐藏层不使用激活函数,回归神经网络与线性回归有何区别”;记录通用近似定理的含义。

回归任务是理解神经网络输出的基础场景。通过与线性回归的系统对比,帮助学生看清“增加隐藏层”到底带来了什么本质变化——从线性到非线性的跃迁。


📖 四、 解决问题过程(三):做二分类的神经网络(20 分钟)

4.1 二分类任务的网络配置

配置项 选择 理由
输出层神经元数 \( 1 \) 二分类只需输出一个概率值
输出层激活函数 Sigmoid 输出 \( (0,1) \) 区间的概率
损失函数 二元交叉熵 概率输出的标准损失函数

网络结构(以单隐藏层为例):

\[ z^{[1]} = W^{[1]} x + b^{[1]}, \quad a^{[1]} = \text{ReLU}(z^{[1]}) \]\[ z^{[2]} = W^{[2]} a^{[1]} + b^{[2]}, \quad \hat{y} = \sigma(z^{[2]}) = \frac{1}{1 + e^{-z^{[2]}}} \]

4.2 与单神经元逻辑回归的对比

对比维度 单神经元逻辑回归 含隐藏层的二分类神经网络
决策边界 始终为直线 可以是任意曲线(非线性)
参数数量 \( n + 1 \) \( (n \times h) + h + (h \times 1) + 1 \)
能否解决 XOR 问题 ❌ 不能 ✅ 可以
表达能力 受限 显著提升

XOR 问题的意义:XOR(异或)是线性不可分问题的经典代表。单神经元逻辑回归无法正确分类 XOR 数据,而含一个隐藏层的网络可以完美解决。这直观验证了引入隐藏层的必要性。

4.3 网络结构变化的影响:宽度(隐藏层神经元数)

固定层数(单隐藏层),改变隐藏层宽度 \( h \) 对模型的影响:

\( h \) 值 参数量 表达容量 风险
过小(如 1) 欠拟合 无法捕获数据模式
适中(如 32) 适中 较好 一般表现最佳
过大(如 1024) 过拟合 训练慢、泛化差

4.4 二分类神经网络的前向传播实现框架

 1import numpy as np
 2
 3def sigmoid(z):
 4    return 1 / (1 + np.exp(-z))
 5
 6def relu(z):
 7    return np.maximum(0, z)
 8
 9# 参数初始化
10n_input = 2      # 输入特征数
11n_hidden = 4     # 隐藏层神经元数
12n_output = 1     # 输出层神经元数
13
14np.random.seed(42)
15W1 = np.random.randn(n_hidden, n_input) * 0.01
16b1 = np.zeros((n_hidden, 1))
17W2 = np.random.randn(n_output, n_hidden) * 0.01
18b2 = np.zeros((n_output, 1))
19
20# 前向传播(单个样本)
21def forward_propagation(X):
22    # X: 列向量,维度 (n_input, 1)
23    Z1 = np.dot(W1, X) + b1
24    A1 = relu(Z1)
25    Z2 = np.dot(W2, A1) + b2
26    A2 = sigmoid(Z2)
27    return A2
  • 👨‍🏫 教师活动:写出二分类神经网络的完整表达式;对比其与逻辑回归的异同;用 XOR 问题说明隐藏层的必要性;演示宽度变化对模型的影响。
  • 🧑‍🎓 学生活动:记录 XOR 问题的真值表,思考为什么单神经元无法解决;对比二分类和回归网络的输出层差异。

二分类是神经网络最直观的应用场景。通过与第 17-1 课的单神经元逻辑回归对比,学生能清晰看到“增加隐藏层”对表达能力的提升,建立从简单模型到复杂模型的演进式理解。


✍️ 五、 代码实践与课堂练习(15 分钟)

5.1 前向传播实现练习

 1import numpy as np
 2import matplotlib.pyplot as plt
 3
 4# ========== 1. 激活函数 ==========
 5def sigmoid(z):
 6    return 1 / (1 + np.exp(-z))
 7
 8def relu(z):
 9    return np.maximum(0, z)
10
11# ========== 2. 参数初始化 ==========
12def initialize_parameters(n_input, n_hidden, n_output):
13    np.random.seed(42)
14    W1 = np.random.randn(n_hidden, n_input) * 0.01
15    b1 = np.zeros((n_hidden, 1))
16    W2 = np.random.randn(n_output, n_hidden) * 0.01
17    b2 = np.zeros((n_output, 1))
18    return W1, b1, W2, b2
19
20# ========== 3. 前向传播 ==========
21def forward_propagation(X, W1, b1, W2, b2):
22    Z1 = np.dot(W1, X) + b1
23    A1 = relu(Z1)
24    Z2 = np.dot(W2, A1) + b2
25    A2 = sigmoid(Z2)
26    return A2
27
28# ========== 4. 测试代码 ==========
29# 生成一个随机样本(2个特征)
30X_sample = np.array([[1.0], [0.5]])
31W1, b1, W2, b2 = initialize_parameters(2, 4, 1)
32
33y_pred = forward_propagation(X_sample, W1, b1, W2, b2)
34print(f"输入: {X_sample.ravel()}")
35print(f"预测输出: {y_pred[0, 0]:.4f}")

5.2 输出层配置对比可视化

 1import numpy as np
 2import matplotlib.pyplot as plt
 3
 4x = np.linspace(-5, 5, 200)
 5
 6plt.figure(figsize=(8, 5))
 7plt.plot(x, x, label='线性(回归)', linewidth=2)
 8plt.plot(x, 1/(1+np.exp(-x)), label='Sigmoid(二分类)', linewidth=2)
 9plt.axhline(y=0, color='k', linestyle='-', linewidth=0.5)
10plt.axhline(y=1, color='k', linestyle='--', alpha=0.5)
11plt.xlabel('线性输出 z')
12plt.ylabel('最终输出')
13plt.legend()
14plt.grid(True, alpha=0.3)
15plt.title('回归 vs 二分类:输出层配置对比')
16plt.show()
  • 👨‍🏫 教师活动:运行前向传播代码,展示各中间变量的维度变化;可视化输出层配置的对比。
  • 🧑‍🎓 学生活动:在 Jupyter 中复现代码,修改隐藏层神经元数观察维度变化;完成课堂练习。

通过可执行的代码,将抽象的矩阵运算具象化。维度检查训练是编码实践中的重要排查技能。


✍️ 六、 课堂练习与巩固(10 分钟)

📝 任务一:维度推导训练

题目

考虑一个神经网络:输入层 \( n_0 = 10 \),两个隐藏层 \( n_1 = 64 \),\( n_2 = 32 \),输出层 \( n_3 = 5 \)。

  1. 写出 \( W^{[1]}, W^{[2]}, W^{[3]} \) 的维度
  2. 写出 \( b^{[1]}, b^{[2]}, b^{[3]} \) 的维度
  3. 前向传播中 \( a^{[1]}, a^{[2]}, a^{[3]} \) 的维度分别是什么?
  4. 当输入为一个样本(列向量)时,\( z^{[3]} \) 的维度是多少?
答案与解析
  1. \( W^{[1]}: 64 \times 10 \),\( W^{[2]}: 32 \times 64 \),\( W^{[3]}: 5 \times 32 \)
  2. \( b^{[1]}: 64 \times 1 \),\( b^{[2]}: 32 \times 1 \),\( b^{[3]}: 5 \times 1 \)
  3. \( a^{[1]}: 64 \times 1 \),\( a^{[2]}: 32 \times 1 \),\( a^{[3]}: 5 \times 1 \)
  4. \( z^{[3]}: 5 \times 1 \)

解析:权重矩阵 \( W^{[l]} \) 的维度为 \( n_l \times n_{l-1} \),偏置 \( b^{[l]} \) 为 \( n_l \times 1 \),激活 \( a^{[l]} \) 与 \( z^{[l]} \) 维度一致为 \( n_l \times 1 \)。

📝 任务二:二分类网络的前向传播

题目

手动计算以下简单网络的前向传播结果,不使用代码。

  • 输入:\( x = \begin{bmatrix} 1 \\ 1 \end{bmatrix} \)
  • 隐藏层权重 \( W^{[1]} = \begin{bmatrix} 0.5 & -0.5 \\ -0.5 & 0.5 \end{bmatrix} \),偏置 \( b^{[1]} = \begin{bmatrix} 0 \\ 0 \end{bmatrix} \)
  • 隐藏层激活函数:ReLU
  • 输出层权重 \( W^{[2]} = \begin{bmatrix} 1 & -1 \end{bmatrix} \),偏置 \( b^{[2]} = \begin{bmatrix} 0 \end{bmatrix} \)
  • 输出层激活函数:Sigmoid

求解:\( a^{[1]} \)、\( z^{[2]} \)、\( \hat{y} \)

答案与解析
  1. \( z^{[1]} = W^{[1]} x + b^{[1]} = \begin{bmatrix} 0.5 & -0.5 \\ -0.5 & 0.5 \end{bmatrix} \begin{bmatrix} 1 \\ 1 \end{bmatrix} = \begin{bmatrix} 0 \\ 0 \end{bmatrix} \)
  2. \( a^{[1]} = \text{ReLU}(z^{[1]}) = \begin{bmatrix} 0 \\ 0 \end{bmatrix} \)
  3. \( z^{[2]} = W^{[2]} a^{[1]} + b^{[2]} = \begin{bmatrix} 1 & -1 \end{bmatrix} \begin{bmatrix} 0 \\ 0 \end{bmatrix} + 0 = 0 \)
  4. \( \hat{y} = \sigma(0) = 0.5 \)

解析:由于 \( W^{[1]} \) 的两行恰好相反,在输入 \( [1, 1]^T \) 时线性输出为 0,经 ReLU 后仍为 0,输出层预测概率为 0.5(完全不确定)。


📝 七、 课堂小结(5 分钟)

flowchart TB
    root["17-2 神经网络的表示与基础任务"]

    subgraph C1["🏗️ 网络表示"]
        direction TB
        A1["输入层 → 隐藏层 → 输出层"]
        A2["W[l]: n_l × n_{l-1}, b[l]: n_l × 1"]
        A3["z[l] = W[l]a[l-1] + b[l], a[l] = f[l](z[l])"]
    end

    subgraph C2["📈 回归网络"]
        direction TB
        B1["输出层: 1 个神经元, 线性激活"]
        B2["损失: MSE"]
        B3["单层等价于线性回归"]
        B4["多层可逼近任意连续函数"]
    end

    subgraph C3["📊 二分类网络"]
        direction TB
        C1["输出层: 1 个神经元, Sigmoid 激活"]
        C2["损失: 二元交叉熵"]
        C3["隐藏层使决策边界非线性化"]
        C4["→ 可解决 XOR 问题"]
    end

    subgraph C4["⚙️ 宽度"]
        direction TB
        D1["隐藏层神经元数 h 为超参数"]
        D2["太小: 欠拟合"]
        D3["太大: 过拟合 + 训练慢"]
    end

    root --> C1
    root --> C2
    root --> C3
    root --> C4

    style root fill:#4b6cb7,stroke:#253b6e,color:#fff,stroke-width:2px
    style C1 fill:#e3f2fd,stroke:#2196f3
    style C2 fill:#fff3e0,stroke:#ff9800
    style C3 fill:#e8f5e9,stroke:#4caf50
    style C4 fill:#f3e5f5,stroke:#9c27b0

✏️ 随堂检测与互动练习

点击展开:随堂测试题(带解析)

一、 单选题

  1. 对于第 \( l \) 层的权重矩阵 \( W^{[l]} \),其维度应为?
  • A. \( n_{l-1} \times n_l \)
  • B. \( n_l \times n_{l-1} \)
  • C. \( n_l \times 1 \)
  • D. \( 1 \times n_l \)
【答案】

【解析】B。权重矩阵的行数为当前层神经元数 \( n_l \),列数为前一层神经元数 \( n_{l-1} \)。这样 \( W^{[l]} a^{[l-1]} \) 的维度为 \( n_l \times 1 \)。

  1. 回归神经网络与线性回归的本质区别在于:
  • A. 回归神经网络使用了更复杂的优化算法
  • B. 回归神经网络包含隐藏层和非线性激活函数
  • C. 回归神经网络的输出是离散值
  • D. 回归神经网络不使用梯度下降
【答案】

【解析】B。核心区别在于模型结构:线性回归是单层线性模型,回归神经网络包含隐藏层和激活函数,具有非线性表达能力。

  1. 二分类神经网络的输出层应使用以下哪种配置?
  • A. 1 个神经元 + 线性激活 + MSE 损失
  • B. 1 个神经元 + Sigmoid 激活 + 交叉熵损失
  • C. 2 个神经元 + Softmax 激活 + 交叉熵损失
  • D. 1 个神经元 + Tanh 激活 + MSE 损失
【答案】

【解析】B。二分类标准配置:1 个输出神经元、Sigmoid 将输出映射为 \( (0,1) \) 概率、交叉熵衡量概率预测质量。

  1. 在神经网络中,a^{[1]}_3 表示:
  • A. 第 3 层第 1 个神经元的激活值
  • B. 第 1 层第 3 个神经元的激活值
  • C. 所有层的第 3 个神经元
  • D. 第 3 个样本在第 1 层的输出
【答案】

【解析】B。上标 \( [1] \) 表示第 1 层,下标 \( 3 \) 表示该层第 3 个神经元。

  1. 关于网络宽度(隐藏层神经元数量),以下说法正确的是:
  • A. 宽度越大,模型一定表现越好
  • B. 宽度越大,参数量越少,训练越快
  • C. 宽度太小可能导致欠拟合,宽度太大可能导致过拟合
  • D. 宽度对模型性能没有影响
【答案】

【解析】C。A 错误:过宽会导致过拟合;B 错误:宽度与参数量成正比;D 明显错误。

二、 判断题

  1. 前向传播中,每一层的输入都是上一层的输出,信息只能单向流动。( )
【答案】

【解析】。前馈神经网络的数据流是单向的,从输入层经过各隐藏层到达输出层。

  1. 如果隐藏层不使用激活函数,神经网络仍然可以逼近任意非线性函数。( )
【答案】

【解析】×。没有非线性激活函数的隐藏层等价于线性变换,多层线性变换仍为线性函数,无法逼近非线性函数。

  1. 二分类神经网络的输出层使用线性激活函数,并通过 MSE 损失来训练。( )
【答案】

【解析】×。二分类输出层应使用 Sigmoid 激活 + 交叉熵损失。线性激活 + MSE 用于回归任务。

三、 计算题

题目

给定一个网络:\( n_0 = 3 \),\( n_1 = 4 \),\( n_2 = 2 \)。设 \( W^{[1]} \) 的维度为 \( 4 \times 3 \),\( W^{[2]} \) 的维度为 \( 2 \times 4 \)。

输入 \( x = [1, 2, 0.5]^T \),\( W^{[1]} \) 的第一行 \( = [0.2, -0.1, 0.3] \),\( b^{[1]}_1 = 0.1 \)。

计算该隐藏层第一个神经元 \( a^{[1]}_1 \) 的加权输入 \( z^{[1]}_1 \),假设采用 ReLU 激活函数。

【答案】

\( z^{[1]}_1 = W^{[1]}_{1,1} \cdot x_1 + W^{[1]}_{1,2} \cdot x_2 + W^{[1]}_{1,3} \cdot x_3 + b^{[1]}_1 \)

\( z^{[1]}_1 = 0.2 \times 1 + (-0.1) \times 2 + 0.3 \times 0.5 + 0.1 = 0.2 - 0.2 + 0.15 + 0.1 = 0.25 \)

\( a^{[1]}_1 = \text{ReLU}(0.25) = 0.25 \)


📮 八、 课后作业与拓展

📮 课后作业

作业一:前向传播的 NumPy 实现(必做)

在 Jupyter Notebook 中完成以下任务:

  1. 随机初始化一个三层网络:输入层 5 个特征,隐藏层 10 个神经元(ReLU),输出层 3 个神经元(线性,回归任务)
  2. 生成 100 个随机样本(维度 \( 5 \times 100 \)),完成整个训练集的批量前向传播
  3. 在每个计算步骤后使用 .shape 打印各中间变量的维度,验证矩阵维度匹配
  4. 计算该批次的 MSE 损失

作业二:隐藏层的作用与 XOR 问题(必做)

  1. 参考讲义内容,解释为什么单神经元逻辑回归无法解决 XOR 问题
  2. 尝试设计一个含隐藏层的神经网络(给出 \( W^{[1]}, b^{[1]}, W^{[2]}, b^{[2]} \) 的具体数值),使其能够正确分类 XOR 数据集的 4 个样本
  3. 写出该网络的完整前向传播计算过程

💡 提示:XOR 数据为 \( (0,0) \to 0 \),\( (0,1) \to 1 \),\( (1,0) \to 1 \),\( (1,1) \to 0 \)。

作业三:回归网络与线性回归的对比实验(必做)

使用 scikit-learn 的 make_regression 生成 1000 个样本的非线性回归数据:

  1. 训练线性回归模型(LinearRegression),记录测试集 MSE
  2. 训练单隐藏层 MLP 回归模型(MLPRegressor),隐藏层设为 50 个神经元,ReLU 激活
  3. 对比两个模型的测试集 MSE,分析差异原因
  4. 调整隐藏层神经元数,观察 MSE 变化曲线

作业四:理论拓展(选做)

  1. 查阅资料,了解“通用近似定理”(Universal Approximation Theorem)的数学表述与证明思路,撰写 300 字以内的总结
  2. 了解神经网络的“深度”(层数)与“宽度”(神经元数)的权衡关系,分析各自对模型容量、训练难度、泛化能力的影响

📋 九、 板书设计

🛠️ 板书设计
 1┌───────────────────────────────────────────────────────────────────────────────┐
 2│                17-2 神经网络的表示与基础任务                                  │
 3├───────────────────────────────────────────────────────────────────────────────┤
 4│                                                                               │
 5│  一、网络结构                                                                 │
 6│                                                                               │
 7│      输入层 x  →  隐藏层 a¹  →  输出层 a²                                    │
 8│      (n₀)          (n₁)          (n₂)                                       │
 9│                                                                               │
10│      前向传播:  z[l] = W[l]·a[l-1] + b[l]                                   │
11│                a[l] = f[l](z[l])                                             │
12│                                                                               │
13│  二、回归网络                                                                 │
14│                                                                               │
15│      输出层:  神经元数 = 1, 激活 = 线性                                       │
16│      损失:    MSE = (1/m)∑(ŷ - y)²                                          │
17│      特点:    单层 = 线性回归,多层可逼近非线性函数                            │
18│                                                                               │
19│  三、二分类网络                                                               │
20│                                                                               │
21│      输出层:  神经元数 = 1, 激活 = Sigmoid                                    │
22│      损失:    二元交叉熵                                                     │
23│      特点:    隐藏层使决策边界非线性化                                        │
24│                                                                               │
25│  四、宽度 (隐藏层神经元数 h)                                                   │
26│                                                                               │
27│      h 太小 → 欠拟合     h 适中 → 较好    h 太大 → 过拟合 + 训练慢            │
28│                                                                               │
29└───────────────────────────────────────────────────────────────────────────────┘

🔤 本课用到的单词

单词 发音(美式) 解释
Neural Network /ˈnʊrəl ˈnetwɜːrk/ 神经网络,由多层神经元组成的计算模型
Hidden Layer /ˈhɪdən ˈleɪər/ 隐藏层,输入层与输出层之间的中间层
Forward Propagation /ˈfɔːrwərd ˌprɑːpəˈɡeɪʃən/ 前向传播,信息从输入层向输出层逐层传递的过程
Weight Matrix /weɪt ˈmeɪtrɪks/ 权重矩阵,存储相邻两层之间的连接权重
Bias /ˈbaɪəs/ 偏置,每个神经元的偏移项
Activation /ˌæktɪˈveɪʃən/ 激活值,神经元经过激活函数后的输出
Width /wɪdθ/ 宽度,某一层神经元的数量
Depth /depθ/ 深度,神经网络的层数
Capacity /kəˈpæsəti/ 容量,模型能够学习复杂函数的能力
Universal Approximation Theorem /ˌjuːnɪˈvɜːrsl əˌprɑːksɪˈmeɪʃən ˈθiːərəm/ 通用近似定理,证明神经网络可逼近任意连续函数
XOR Problem /ˈzɔːr ˈprɑːbləm/ 异或问题,线性不可分问题的经典示例
Underfitting /ˌʌndərˈfɪtɪŋ/ 欠拟合,模型未能充分学习训练数据的规律
Overfitting /ˌoʊvərˈfɪtɪŋ/ 过拟合,模型过度拟合训练数据导致泛化能力下降
Representation /ˌreprɪzenˈteɪʃən/ 表示,数据在网络内部各层的编码形态