一、学习目标
今天学完后,你需要能用自己的话说清楚这些内容。考试时不要求你背一大段,只要能把“是什么、为什么、公式、用途”连起来。
能解释 ŷ = Xw + b,知道它是“加权求和 + 偏置”。
能解释它把 logits 转成概率分布,概率非负且总和为 1。
能解释它衡量预测概率与真实标签的差距。
能解释为什么没有激活函数,多层网络仍是线性模型。
能说出 input、hidden layer、activation、output 的关系。
能说明线性模型和 MLP 的本质区别:隐藏层 + 非线性。
二、从线性神经网络开始
1. 什么是线性模型
线性模型假设输入特征和输出之间的关系可以用一条直线、一个平面,或者高维空间里的超平面来表示。对于单个样本,常写成 ŷ = wᵀx + b;对于一批样本,常写成 ŷ = Xw + b。
房价预测例子
假设只看两个特征:面积和房龄。
如果面积权重为正,面积越大预测价格越高;如果房龄权重为负,房龄越大预测价格越低。偏置可以理解为基础价格。
线性模型的局限
线性模型只能表达“特征增加一点,输出按固定比例变化”的关系。它很难处理复杂非线性数据,例如图像里一个像素的重要性往往取决于周围像素,而不是单独由这个像素决定。
三、分类任务与 softmax
回归 vs 分类
回归任务预测连续数值,例如房价、分数、温度。
分类任务预测类别,例如猫/狗/鸡,垃圾邮件/正常邮件。
logits / scores 是什么
神经网络最后一层通常先输出一组原始分数,叫 logits 或 scores。它们可以为负,也不保证相加为 1,所以不能直接当概率。
通过 exp 把输出变成正数。
通过除以总和,让所有类别概率加起来等于 1。
分数越大的类别,softmax 后概率通常越大。
三分类例子
给定 logits = [2.0, 1.0, 0.1],softmax 后约为:
[2.0, 1.0, 0.1]
[7.39, 2.72, 1.11]
11.22
[0.66, 0.24, 0.10]
最高 logit 是第 0 类,所以最高概率也是第 0 类。softmax 不改变大小顺序,但会把分数转成可解释的概率分布。
考试怎么答:softmax
softmax 常用于多分类任务的输出层。它把网络输出的未归一化分数 logits 转换为概率分布,使每个概率非负且所有类别概率之和为 1,同时保留类别分数的大小顺序,便于选择概率最大的类别作为预测结果。
四、交叉熵损失
1. one-hot label 是什么
如果有 3 个类别,真实类别是第 1 类,则标签写成 [0, 1, 0]:真实类别位置为 1,其他位置为 0。
2. 为什么只关心真实类别概率
因为 one-hot 标签中只有真实类别的 yᵢ = 1,其他类别的 yᵢ = 0,所以求和里其他项都消失。
预测较好
真实类别 class 1,预测概率 [0.10, 0.80, 0.10]。
真实类别概率高,loss 小。
预测较差
真实类别 class 1,预测概率 [0.80, 0.15, 0.05]。
真实类别概率低,loss 大。
所以要记住:正确类别概率越高,交叉熵越小;正确类别概率越低,交叉熵越大。
softmax + cross entropy 为什么常常一起使用
softmax 负责把 logits 转成概率分布;cross entropy 负责比较这个概率分布和真实 one-hot 标签的差距。它们正好组成分类任务里“输出概率 + 计算错误程度”的标准组合。
3. 损失函数到底在训练中做什么
损失函数不是只用来“打分”的,它还是训练的方向盘。模型每次预测后,loss 会告诉我们这次预测离真实答案有多远;反向传播再根据 loss 计算每个参数对错误的责任,最后优化器把参数往让 loss 变小的方向移动。
4. 为什么交叉熵会惩罚“自信地错”
交叉熵对真实类别概率取 -log(p)。这个函数有一个很重要的形状:当真实类别概率 p 接近 1 时,loss 接近 0;当 p 接近 0 时,loss 会变得非常大。
模型很相信正确答案,损失很小。
模型不太确定,损失中等。
真实类别概率极低,说明模型错得很自信,损失很大。
5. softmax + 交叉熵的梯度直觉
教材里常见一个非常重要的结论:当 softmax 和交叉熵组合使用时,logits 的梯度形式会变得很简洁:
这句话的意思是:参数更新的信号,本质上来自“预测概率 - 真实标签”。如果某个错误类别预测概率太高,梯度会把它压下去;如果真实类别预测概率太低,梯度会把它抬上来。
用一个三分类例子看梯度方向
真实标签是 class 1:y = [0, 1, 0]。模型预测:ŷ = [0.66, 0.24, 0.10]。
第 0 类预测太高,所以梯度为正,训练会倾向于降低它的 logit;第 1 类是真实类别但概率太低,所以梯度为负,训练会倾向于提高它的 logit;第 2 类也略高,也会被压低。
易错点
softmax 是把输出变成概率;cross entropy 是计算预测概率和真实标签之间的差距。两者不是同一个东西。
五、为什么需要激活函数
这是 MLP 的核心。你可以把这节当成今天最重要的考试题。
先看一个关键事实
如果没有激活函数,多层线性层叠加以后仍然是线性模型。层数再多,也只是把一个线性变换改写成另一个线性变换。
1. 推导:两层线性层为什么仍然线性
这说明:中间加了隐藏层,但如果隐藏层只是线性变换,最后仍然可以合并成一个新的 Wx + b。
考试必背
多层线性变换的组合仍然是线性变换。如果没有激活函数,无论神经网络有多少层,都等价于一个单层线性模型,无法学习非线性关系。激活函数引入非线性,使 MLP 能够拟合复杂函数和非线性决策边界。
2. ReLU:最常用的激活函数
ReLU 的规则非常直接:输入小于 0,就输出 0;输入大于 0,就原样输出。它简单、计算快,并且在深层网络中通常比 sigmoid 更容易训练。
滑块演示:ReLU 和 sigmoid 的输出
拖动 x,观察两个激活函数的输出变化。
ReLU 曲线
sigmoid 曲线
3. sigmoid 和 tanh 简单了解
sigmoid
输出范围是 (0, 1),适合表示二分类概率,但在隐藏层中容易出现梯度变小的问题。
tanh
输出范围是 (-1, 1),以 0 为中心;形状类似 sigmoid,但范围不同。
4. 线性边界 vs 非线性边界
没有激活函数:直线边界
有激活函数的 MLP:曲线边界
六、MLP 的结构
MLP 是 Multi-Layer Perceptron,中文叫多层感知机。它是在输入层和输出层之间加入一个或多个隐藏层,并在隐藏层后使用激活函数。
三种层
input layer:输入特征,本身通常不算计算层。
hidden layer:隐藏层,学习中间表示。
output layer:输出 logits 或预测值。
hidden units / neurons
隐藏单元就是隐藏层里的神经元。每个隐藏单元接收上一层输入,做一次加权求和、加偏置,再通过激活函数输出一个新特征。
一个 3-4-2 的 MLP
MLP 和线性模型的本质区别
线性模型只有一次线性变换,表达能力有限;MLP 增加隐藏层,并在隐藏层后加入非线性激活函数,因此可以学习复杂特征和非线性决策边界。
七、完整训练流程
训练的核心问题是:模型一开始的参数通常是随机的,预测会错。我们需要一种方法,根据错误程度自动调整参数,让下一次预测更好。这个过程就靠损失函数、反向传播和优化器配合完成。
一句话记忆
前向传播负责“算预测”,损失函数负责“评估错多少”,反向传播负责“算参数该往哪改”,优化器负责“真的去改参数”。
1. 前向传播:从输入一路算到 loss
前向传播就是按网络结构从左到右计算。以一个分类 MLP 为例:
这里每一步都会产生中间结果。反向传播时,这些中间结果会被用来计算梯度,所以训练时不只是得到最终答案,还要记录计算过程。
2. 梯度:参数对 loss 的影响方向
梯度可以理解为一个问题的答案:如果这个参数稍微变大一点,loss 会变大还是变小?变化快不快?
梯度为正
参数变大时 loss 倾向于变大。为了让 loss 下降,参数应该减小。
梯度为负
参数变大时 loss 倾向于变小。为了让 loss 下降,参数应该增大。
3. 反向传播:用链式法则把责任分回去
反向传播不是一种新的数学魔法,它主要是在神经网络计算图上高效使用链式法则。因为 loss 是由最后输出算出来的,而最后输出又依赖前一层,前一层又依赖更前面的层,所以我们需要从后往前一层层计算梯度。
这就是“反向”的原因:先知道最终 loss 对输出的影响,再逐层往前传,把每个参数对 loss 的影响都算出来。
4. 一个极简线性回归例子
假设只有一个输入特征,模型是 ŷ = wx + b,用平方损失:
如果某个样本 x = 2,真实值 y = 10,当前模型预测 ŷ = 6,那么误差是 ŷ - y = -4,说明预测偏低。
梯度是负数,按照 w ← w - η·梯度 更新时,w 和 b 会增大,下一次预测值就会被推高。这和直觉一致:预测太低,就应该让模型输出变大。
5. 一个分类任务里的反向传播直觉
分类时,softmax + 交叉熵会产生 ŷ - y 这样的误差信号。它会从输出层开始往前传:
所以反向传播不只是改最后一层,它还会告诉前面的隐藏层:你提取的特征是否有助于分类,如果没用,就通过梯度慢慢调整。
易错点:反向传播和梯度下降不是一回事
反向传播负责计算梯度,也就是每个参数该怎么影响 loss;梯度下降/优化器负责使用这些梯度更新参数。前者是“算方向”,后者是“走一步”。
考试怎么答:反向传播
反向传播是一种在神经网络中高效计算梯度的方法。它从损失函数开始,利用链式法则将误差信号从输出层逐层传回前面的层,计算各层参数对 loss 的偏导数。随后优化器根据这些梯度更新权重和偏置,使损失函数逐渐减小。
八、考试高频问题与标准答案
线性神经网络是由线性变换或仿射变换构成的简单神经网络,例如线性回归和 softmax 回归。其核心计算是输入特征的加权和加偏置。
softmax 将 logits 转换为概率分布,使输出非负、总和为 1,并保持分数越大概率越大的关系。
因为交叉熵可以衡量真实标签分布与预测概率分布的差异,并且会鼓励模型提高真实类别的预测概率。
激活函数引入非线性,否则多层线性变换可以合并成一个线性变换,网络无法学习复杂非线性关系。
因为线性或仿射变换的组合仍然是线性或仿射变换,例如 W₂(W₁x+b₁)+b₂ 可以写成 Wx+b。
ReLU 公式简单、计算快,对正数梯度传递直接,通常能缓解 sigmoid/tanh 在深层网络中容易出现的梯度消失问题。
MLP 比线性模型多了隐藏层和非线性激活函数,因此表达能力更强,可以拟合非线性函数和非线性分类边界。
输入 x 先经过线性层和激活函数得到隐藏表示 h,再经过输出线性层得到 logits,最后通过 softmax 得到类别概率。
九、自测题
点击按钮查看答案。打印时答案会自动显示。
A. 随机猜测 B. 加权求和 + 偏置 C. 只做 softmax D. 一定有隐藏层
A. [1,0,0] B. [0,1,0] C. [0,0,1] D. [1,1,1]
A. 1/(1+exp(-x)) B. max(0,x) C. x² D. softmax(x)
十、最后总结
| 概念 | 作用 | 公式 | 考试关键词 |
|---|---|---|---|
| 线性模型 | 根据输入特征预测连续值或 logits | ŷ = Xw + b | 加权求和、偏置、仿射变换 |
| softmax | 把 logits 转换为类别概率分布 | exp(oᵢ) / Σⱼ exp(oⱼ) | 非负、总和为 1、概率分布 |
| 交叉熵 | 衡量预测概率与真实标签的差距 | L = -Σᵢ yᵢ log(ŷᵢ) | 真实类别概率越高,loss 越小 |
| 激活函数 | 在网络中引入非线性 | h = σ(Wx+b) | 非线性、表达能力、决策边界 |
| ReLU | 常用隐藏层激活函数 | ReLU(x)=max(0,x) | 简单、快、正数通过、负数置零 |
| MLP | 用隐藏层和激活函数学习复杂函数 | h=σ(W₁x+b₁), ŷ=softmax(W₂h+b₂) | 输入层、隐藏层、输出层、非线性 |
打印提示:浏览器中按 Cmd/Ctrl + P 可保存为 PDF;页面已包含打印样式,自测答案会在打印版中显示。