CodeRoadMap
路线图学习路径文章题库资源社区

浏览

首页路线图学习路径知识库题库文章资源社区我的学习
CodeRoadMap

中文编程学习导航:路线图、讲义与题库,进度可同步。

路线图学习路径文章题库社区

© 2026 CodeRoadMap

津ICP备2026012044号-1|coderoadmap@126.com
首页/AI 人工智能入门 · 微软 12 周课/神经网络简介:多层感知机

课程目录

  1. 01人工智能简介
  2. 02知识表示与专家系统
  3. 03神经网络简介
  4. 04神经网络入门:感知机
  5. 05使用感知器进行多类别分类
  6. 06神经网络简介:多层感知机
  7. 07使用我们自己的框架进行MNIST分类
  8. 08神经网络框架
  9. 09使用 PyTorch/TensorFlow 进行分类
  10. 10计算机视觉
  11. 11计算机视觉简介
  12. 12使用光流检测运动
  13. 13卷积神经网络
  14. 14宠物面部分类
  15. 15预训练网络与迁移学习
  16. 16使用迁移学习对牛津宠物进行分类
  17. 17自动编码器
  18. 18生成对抗网络
  19. 19目标检测
  20. 20使用好莱坞头部数据集进行头部检测
  21. 21分割
  22. 22人体分割
  23. 23自然语言处理
  24. 24将文本表示为张量
  25. 25嵌入
  26. 26语言建模
  27. 27训练 Skip-Gram 模型
  28. 28循环神经网络
  29. 29生成网络
  30. 30使用 RNN 进行词级文本生成
  31. 31注意机制与Transformer
  32. 32命名实体识别
  33. 33命名实体识别 (NER)
  34. 34预训练大型语言模型
  35. 35遗传算法
  36. 36深度强化学习
  37. 37other-deeprl-lab
  38. 38多智能体系统
  39. 39伦理与负责任的人工智能
  40. 40多模态网络
第 06 课1 小时

神经网络简介:多层感知机

在上一节中,你学习了最简单的神经网络模型——单层感知机,这是一种线性二分类模型。

课程内容

神经网络简介:多层感知机

在上一节中,你学习了最简单的神经网络模型——单层感知机,这是一种线性二分类模型。

在本节中,我们将扩展这一模型,构建一个更灵活的框架,使我们能够:

  • 除了二分类,还能进行多分类
  • 除了分类问题,还能解决回归问题
  • 区分那些非线性可分的类别

我们还将开发一个基于 Python 的模块化框架,用于构建不同的神经网络架构。

课前测验

机器学习的形式化定义

让我们从形式化定义机器学习问题开始。假设我们有一个训练数据集 X 和对应的标签 Y,我们需要构建一个模型 f,以实现最准确的预测。预测的质量通过损失函数 ℒ 来衡量。以下是常用的损失函数:

  • 对于回归问题(需要预测一个数值),可以使用绝对误差 ∑i|f(x(i))-y(i)|,或平方误差 ∑i(f(x(i))-y(i))2
  • 对于分类问题,可以使用0-1损失(本质上等同于模型的准确率),或对数损失。

对于单层感知机,函数 f 定义为线性函数 f(x)=wx+b(其中 w 是权重矩阵,x 是输入特征向量,b 是偏置向量)。对于不同的神经网络架构,这个函数可以具有更复杂的形式。

在分类问题中,通常希望网络输出的是类别的概率。为了将任意数值转换为概率(例如对输出进行归一化),我们通常使用softmax 函数 σ,此时函数 f 变为 f(x)=σ(wx+b)。

在上述 f 的定义中,w 和 b 被称为参数 θ=⟨w,b⟩。给定数据集 ⟨X,Y⟩,我们可以将整个数据集上的总误差表示为参数 θ 的函数。

✅ 神经网络训练的目标是通过调整参数 θ 来最小化误差

梯度下降优化

梯度下降是一种著名的函数优化方法。其核心思想是,我们可以计算损失函数相对于参数的导数(在多维情况下称为),并调整参数以减少误差。其形式化过程如下:

梯度
  • 用一些随机值初始化参数 w(0), b(0)
  • 重复以下步骤多次:
    • w(i+1) = w(i)-η∂ℒ/∂w
    • b(i+1) = b(i)-η∂ℒ/∂b

在训练过程中,优化步骤通常是基于整个数据集计算的(记住,损失是通过所有训练样本的总和计算的)。然而,在实际操作中,我们会取数据集的小部分,称为小批量(minibatches),并基于数据的子集计算梯度。由于每次随机选取子集,这种方法被称为随机梯度下降(SGD)。

多层感知机与反向传播

如上所述,单层网络能够对线性可分的类别进行分类。为了构建更复杂的模型,我们可以将多个网络层组合起来。从数学上讲,这意味着函数 f 将具有更复杂的形式,并通过以下几个步骤计算:

  • z1=w1x+b1
  • z2=w2α(z1)+b2
  • f = σ(z2)

这里,α 是一个非线性激活函数,σ 是 softmax 函数,参数为 θ=<w1,b1,w2,b2>。

梯度下降算法保持不变,但计算梯度会更加复杂。根据链式求导法则,我们可以计算导数如下:

  • ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2)
  • ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1)

✅ 链式求导法则用于计算损失函数相对于参数的导数。

注意,这些表达式的最左部分是相同的,因此我们可以从损失函数开始,沿着计算图“向后”计算导数。因此,多层感知机的训练方法被称为反向传播(backpropagation),简称“反向传播”。

计算图

TODO: 图片引用

✅ 我们将在随后的 notebook 示例中更详细地讲解反向传播。

总结

在本节课中,我们构建了自己的神经网络库,并将其用于一个简单的二维分类任务。

? 挑战

在配套的 notebook 中,你将实现自己的框架,用于构建和训练多层感知机。你将能够详细了解现代神经网络的运行方式。

请前往 OwnFramework notebook 并完成相关内容。

课后测验

复习与自学

反向传播是人工智能和机器学习中常用的算法,值得深入学习。

作业

在本次实验中,你需要使用本节课中构建的框架来解决 MNIST 手写数字分类问题。

  • 实验说明
  • Notebook

← 上一课使用感知器进行多类别分类下一课 →使用我们自己的框架进行MNIST分类