Day 1 Deep Learning Notes

线性神经网络与 MLP 入门

今天只抓住一条主线:线性模型负责“加权求和”,softmax 把分类输出变成概率,交叉熵衡量概率错得多离谱,激活函数让 MLP 从直线世界进入非线性世界。

线性回归 softmax 交叉熵 ReLU MLP 考试标准答法
一条主线 Linear → Activation → MLP → Softmax → Loss x₁ x₂ Σ+b 线性模型:加权求和 + 偏置 ReLU 激活函数:引入非线性 softmax:概率分布 MLP 可以组合出复杂非线性边界

一、学习目标

今天学完后,你需要能用自己的话说清楚这些内容。考试时不要求你背一大段,只要能把“是什么、为什么、公式、用途”连起来。

线性回归
能解释 ŷ = Xw + b,知道它是“加权求和 + 偏置”。
softmax
能解释它把 logits 转成概率分布,概率非负且总和为 1。
交叉熵
能解释它衡量预测概率与真实标签的差距。
激活函数
能解释为什么没有激活函数,多层网络仍是线性模型。
MLP 结构
能说出 input、hidden layer、activation、output 的关系。
模型区别
能说明线性模型和 MLP 的本质区别:隐藏层 + 非线性。

二、从线性神经网络开始

直觉解释
线性模型像一个“评分器”:每个输入特征先乘以一个重要程度,也就是权重,然后全部加起来,再加一个基础值,也就是偏置。
数学公式
ŷ = Xw + bX:输入特征矩阵;w:权重;b:偏置;ŷ:模型预测值。
简单例子
预测成绩:预测分数 = 0.6 × 学习时长 + 0.3 × 作业完成度 + 20。这里 0.6 和 0.3 是权重,20 是偏置。
考试怎么答
线性神经网络用输入特征的加权和加偏置得到输出,本质是仿射变换。它结构简单、容易解释,但只能表达线性关系。

1. 什么是线性模型

线性模型假设输入特征和输出之间的关系可以用一条直线、一个平面,或者高维空间里的超平面来表示。对于单个样本,常写成 ŷ = wᵀx + b;对于一批样本,常写成 ŷ = Xw + b

输入特征连接到一个输出 x₁ x₂ x₃ ŷ × w₁ × w₂ × w₃ 再加偏置 b

房价预测例子

假设只看两个特征:面积和房龄。

price = w_area · area + w_age · age + b

如果面积权重为正,面积越大预测价格越高;如果房龄权重为负,房龄越大预测价格越低。偏置可以理解为基础价格。

线性模型的局限

线性模型只能表达“特征增加一点,输出按固定比例变化”的关系。它很难处理复杂非线性数据,例如图像里一个像素的重要性往往取决于周围像素,而不是单独由这个像素决定。

三、分类任务与 softmax

回归 vs 分类

回归任务预测连续数值,例如房价、分数、温度。

分类任务预测类别,例如猫/狗/鸡,垃圾邮件/正常邮件。

logits / scores 是什么

神经网络最后一层通常先输出一组原始分数,叫 logits 或 scores。它们可以为负,也不保证相加为 1,所以不能直接当概率。

softmax(oᵢ) = exp(oᵢ) / Σⱼ exp(oⱼ)oᵢ 是第 i 类的 logit;分母是所有类别 exp(logit) 的总和。
作用 1
通过 exp 把输出变成正数。
作用 2
通过除以总和,让所有类别概率加起来等于 1。
作用 3
分数越大的类别,softmax 后概率通常越大。

三分类例子

给定 logits = [2.0, 1.0, 0.1],softmax 后约为:

logits
[2.0, 1.0, 0.1]
exp
[7.39, 2.72, 1.11]
除以总和
11.22
probabilities
[0.66, 0.24, 0.10]

最高 logit 是第 0 类,所以最高概率也是第 0 类。softmax 不改变大小顺序,但会把分数转成可解释的概率分布。

考试怎么答:softmax

softmax 常用于多分类任务的输出层。它把网络输出的未归一化分数 logits 转换为概率分布,使每个概率非负且所有类别概率之和为 1,同时保留类别分数的大小顺序,便于选择概率最大的类别作为预测结果。

四、交叉熵损失

直觉解释
损失函数像老师批改答案:预测越接近真实答案,loss 越小;预测越自信地错,loss 越大。
数学公式
L = - Σᵢ yᵢ log(ŷᵢ)
简单例子
真实类别是 class 1,one-hot 标签是 [0, 1, 0]。因为只有真实类别位置是 1,所以交叉熵只剩 -log(ŷ_class1)
考试怎么答
交叉熵衡量真实标签分布和预测概率分布之间的差异。分类任务中它会鼓励模型提高真实类别的预测概率。

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]

L = -log(0.80) ≈ 0.223

真实类别概率高,loss 小。

预测较差

真实类别 class 1,预测概率 [0.80, 0.15, 0.05]

L = -log(0.15) ≈ 1.897

真实类别概率低,loss 大。

所以要记住:正确类别概率越高,交叉熵越小;正确类别概率越低,交叉熵越大。

softmax + cross entropy 为什么常常一起使用

softmax 负责把 logits 转成概率分布;cross entropy 负责比较这个概率分布和真实 one-hot 标签的差距。它们正好组成分类任务里“输出概率 + 计算错误程度”的标准组合。

3. 损失函数到底在训练中做什么

损失函数不是只用来“打分”的,它还是训练的方向盘。模型每次预测后,loss 会告诉我们这次预测离真实答案有多远;反向传播再根据 loss 计算每个参数对错误的责任,最后优化器把参数往让 loss 变小的方向移动。

预测概率 ŷ
和真实标签 y 比较
得到 loss
根据 loss 调参数

4. 为什么交叉熵会惩罚“自信地错”

交叉熵对真实类别概率取 -log(p)。这个函数有一个很重要的形状:当真实类别概率 p 接近 1 时,loss 接近 0;当 p 接近 0 时,loss 会变得非常大。

p = 0.90
-log(0.90) ≈ 0.105

模型很相信正确答案,损失很小。

p = 0.50
-log(0.50) ≈ 0.693

模型不太确定,损失中等。

p = 0.01
-log(0.01) ≈ 4.605

真实类别概率极低,说明模型错得很自信,损失很大。

5. softmax + 交叉熵的梯度直觉

教材里常见一个非常重要的结论:当 softmax 和交叉熵组合使用时,logits 的梯度形式会变得很简洁:

∂L / ∂oᵢ = ŷᵢ - yᵢoᵢ 是第 i 类 logit;ŷᵢ 是 softmax 后的预测概率;yᵢ 是真实 one-hot 标签。

这句话的意思是:参数更新的信号,本质上来自“预测概率 - 真实标签”。如果某个错误类别预测概率太高,梯度会把它压下去;如果真实类别预测概率太低,梯度会把它抬上来。

用一个三分类例子看梯度方向

真实标签是 class 1:y = [0, 1, 0]。模型预测:ŷ = [0.66, 0.24, 0.10]

ŷ - y = [0.66, -0.76, 0.10]

第 0 类预测太高,所以梯度为正,训练会倾向于降低它的 logit;第 1 类是真实类别但概率太低,所以梯度为负,训练会倾向于提高它的 logit;第 2 类也略高,也会被压低。

易错点

softmax 是把输出变成概率;cross entropy 是计算预测概率和真实标签之间的差距。两者不是同一个东西。

五、为什么需要激活函数

这是 MLP 的核心。你可以把这节当成今天最重要的考试题。

先看一个关键事实

如果没有激活函数,多层线性层叠加以后仍然是线性模型。层数再多,也只是把一个线性变换改写成另一个线性变换。

1. 推导:两层线性层为什么仍然线性

h = W₁x + b₁ ŷ = W₂h + b₂ ŷ = W₂(W₁x + b₁) + b₂ ŷ = W₂W₁x + W₂b₁ + b₂ 令 W = W₂W₁,b = W₂b₁ + b₂ 所以 ŷ = Wx + b

这说明:中间加了隐藏层,但如果隐藏层只是线性变换,最后仍然可以合并成一个新的 Wx + b

考试必背

多层线性变换的组合仍然是线性变换。如果没有激活函数,无论神经网络有多少层,都等价于一个单层线性模型,无法学习非线性关系。激活函数引入非线性,使 MLP 能够拟合复杂函数和非线性决策边界。

2. ReLU:最常用的激活函数

ReLU(x) = max(0, x)

ReLU 的规则非常直接:输入小于 0,就输出 0;输入大于 0,就原样输出。它简单、计算快,并且在深层网络中通常比 sigmoid 更容易训练。

滑块演示:ReLU 和 sigmoid 的输出

拖动 x,观察两个激活函数的输出变化。

x = 1.5
ReLU(x)
1.50
sigmoid(x)
0.82

ReLU 曲线

x y 负数输出 0 正数原样通过

sigmoid 曲线

接近 1 接近 0 x=0 时约 0.5

3. sigmoid 和 tanh 简单了解

sigmoid

sigmoid(x) = 1 / (1 + exp(-x))

输出范围是 (0, 1),适合表示二分类概率,但在隐藏层中容易出现梯度变小的问题。

tanh

tanh(x) = (1 - exp(-2x)) / (1 + exp(-2x))

输出范围是 (-1, 1),以 0 为中心;形状类似 sigmoid,但范围不同。

4. 线性边界 vs 非线性边界

没有激活函数:直线边界

只能用一条直线切分空间

有激活函数的 MLP:曲线边界

多个非线性变换可组合复杂边界

六、MLP 的结构

MLP 是 Multi-Layer Perceptron,中文叫多层感知机。它是在输入层和输出层之间加入一个或多个隐藏层,并在隐藏层后使用激活函数。

input → linear layer → activation → hidden layer → linear layer → output
分类任务完整流程: x → Linear → ReLU → Linear → softmax → class probabilities
h = σ(W₁x + b₁) o = W₂h + b₂ ŷ = softmax(o)

三种层

input layer:输入特征,本身通常不算计算层。

hidden layer:隐藏层,学习中间表示。

output layer:输出 logits 或预测值。

hidden units / neurons

隐藏单元就是隐藏层里的神经元。每个隐藏单元接收上一层输入,做一次加权求和、加偏置,再通过激活函数输出一个新特征。

一个 3-4-2 的 MLP

Input layer Hidden layer + ReLU Output layer x₁ x₂ x₃ h₁ h₂ h₃ h₄ o₁ o₂ Linear: W₁x+b₁ Linear: W₂h+b₂

MLP 和线性模型的本质区别

线性模型只有一次线性变换,表达能力有限;MLP 增加隐藏层,并在隐藏层后加入非线性激活函数,因此可以学习复杂特征和非线性决策边界。

七、完整训练流程

训练的核心问题是:模型一开始的参数通常是随机的,预测会错。我们需要一种方法,根据错误程度自动调整参数,让下一次预测更好。这个过程就靠损失函数、反向传播和优化器配合完成。

1 输入数据 x
2 前向传播
3 得到预测 ŷ
4 计算 loss
5 反向传播
6 更新 w 和 b
7 重复训练

一句话记忆

前向传播负责“算预测”,损失函数负责“评估错多少”,反向传播负责“算参数该往哪改”,优化器负责“真的去改参数”。

1. 前向传播:从输入一路算到 loss

前向传播就是按网络结构从左到右计算。以一个分类 MLP 为例:

h = ReLU(W₁x + b₁) o = W₂h + b₂ ŷ = softmax(o) L = CrossEntropy(y, ŷ)

这里每一步都会产生中间结果。反向传播时,这些中间结果会被用来计算梯度,所以训练时不只是得到最终答案,还要记录计算过程。

2. 梯度:参数对 loss 的影响方向

梯度可以理解为一个问题的答案:如果这个参数稍微变大一点,loss 会变大还是变小?变化快不快?

梯度为正

参数变大时 loss 倾向于变大。为了让 loss 下降,参数应该减小。

梯度为负

参数变大时 loss 倾向于变小。为了让 loss 下降,参数应该增大。

参数更新的基本形式: w ← w - η · ∂L/∂w b ← b - η · ∂L/∂bη 是学习率,控制每次更新走多大一步。

3. 反向传播:用链式法则把责任分回去

反向传播不是一种新的数学魔法,它主要是在神经网络计算图上高效使用链式法则。因为 loss 是由最后输出算出来的,而最后输出又依赖前一层,前一层又依赖更前面的层,所以我们需要从后往前一层层计算梯度。

loss
输出层参数
隐藏层输出
隐藏层参数
输入附近参数
链式法则直觉: 如果 L 依赖 y,y 依赖 h,h 依赖 w 那么 ∂L/∂w = ∂L/∂y · ∂y/∂h · ∂h/∂w

这就是“反向”的原因:先知道最终 loss 对输出的影响,再逐层往前传,把每个参数对 loss 的影响都算出来。

4. 一个极简线性回归例子

假设只有一个输入特征,模型是 ŷ = wx + b,用平方损失:

L = 1/2 · (ŷ - y)²

如果某个样本 x = 2,真实值 y = 10,当前模型预测 ŷ = 6,那么误差是 ŷ - y = -4,说明预测偏低。

∂L/∂w = (ŷ - y) · x = -4 × 2 = -8 ∂L/∂b = (ŷ - y) = -4

梯度是负数,按照 w ← w - η·梯度 更新时,w 和 b 会增大,下一次预测值就会被推高。这和直觉一致:预测太低,就应该让模型输出变大。

5. 一个分类任务里的反向传播直觉

分类时,softmax + 交叉熵会产生 ŷ - y 这样的误差信号。它会从输出层开始往前传:

真实类概率太低
提高真实类 logit
压低错误类 logit
调整隐藏层特征
更新 W、b

所以反向传播不只是改最后一层,它还会告诉前面的隐藏层:你提取的特征是否有助于分类,如果没用,就通过梯度慢慢调整。

易错点:反向传播和梯度下降不是一回事

反向传播负责计算梯度,也就是每个参数该怎么影响 loss;梯度下降/优化器负责使用这些梯度更新参数。前者是“算方向”,后者是“走一步”。

考试怎么答:反向传播

反向传播是一种在神经网络中高效计算梯度的方法。它从损失函数开始,利用链式法则将误差信号从输出层逐层传回前面的层,计算各层参数对 loss 的偏导数。随后优化器根据这些梯度更新权重和偏置,使损失函数逐渐减小。

八、考试高频问题与标准答案

1. 什么是线性神经网络?

线性神经网络是由线性变换或仿射变换构成的简单神经网络,例如线性回归和 softmax 回归。其核心计算是输入特征的加权和加偏置。

2. softmax 的作用是什么?

softmax 将 logits 转换为概率分布,使输出非负、总和为 1,并保持分数越大概率越大的关系。

3. 为什么分类任务常用 cross entropy?

因为交叉熵可以衡量真实标签分布与预测概率分布的差异,并且会鼓励模型提高真实类别的预测概率。

4. 为什么 MLP 需要激活函数?

激活函数引入非线性,否则多层线性变换可以合并成一个线性变换,网络无法学习复杂非线性关系。

5. 没有激活函数的多层网络为什么等价于单层线性模型?

因为线性或仿射变换的组合仍然是线性或仿射变换,例如 W₂(W₁x+b₁)+b₂ 可以写成 Wx+b。

6. ReLU 的优点是什么?

ReLU 公式简单、计算快,对正数梯度传递直接,通常能缓解 sigmoid/tanh 在深层网络中容易出现的梯度消失问题。

7. MLP 和线性模型有什么区别?

MLP 比线性模型多了隐藏层和非线性激活函数,因此表达能力更强,可以拟合非线性函数和非线性分类边界。

8. 一个分类 MLP 的前向传播过程是什么?

输入 x 先经过线性层和激活函数得到隐藏表示 h,再经过输出线性层得到 logits,最后通过 softmax 得到类别概率。

九、自测题

点击按钮查看答案。打印时答案会自动显示。

1. 判断题:公式 ŷ = Xw + b 中,w 表示输入样本本身。
错误。X 表示输入特征,w 表示权重,b 表示偏置,ŷ 表示预测值。
2. 选择题:线性模型的本质是?

A. 随机猜测 B. 加权求和 + 偏置 C. 只做 softmax D. 一定有隐藏层

答案:B。线性模型通过权重控制各特征影响,再加偏置得到输出。
3. 判断题:logits 可以直接当概率,因为它们来自神经网络。
错误。logits 可能为负,也不保证总和为 1,需要 softmax 转换成概率分布。
4. 简答题:softmax 的三个作用是什么?
把输出变成正数;让所有类别概率之和为 1;让分数更大的类别得到更大的概率。
5. 选择题:真实类别是 class 2,one-hot 标签应该是?

A. [1,0,0] B. [0,1,0] C. [0,0,1] D. [1,1,1]

答案:C。若按 class 0、class 1、class 2 编号,class 2 的 one-hot 是 [0,0,1]。
6. 判断题:交叉熵越小,通常表示预测越接近真实标签。
正确。对 one-hot 标签来说,真实类别的预测概率越高,-log(概率) 越小。
7. 简答题:为什么没有激活函数的多层网络仍然是线性模型?
因为线性变换叠加仍是线性变换。例如 W₂(W₁x+b₁)+b₂ 可以合并成 Wx+b。
8. 选择题:ReLU(x) 的公式是?

A. 1/(1+exp(-x)) B. max(0,x) C. x² D. softmax(x)

答案:B。ReLU(x)=max(0,x),负数输出 0,正数原样输出。
9. 判断题:MLP 与线性模型的区别只在于参数更多,与激活函数无关。
错误。关键区别是 MLP 有隐藏层并使用非线性激活函数;没有激活函数,参数再多也可能退化为线性模型。
10. 简答题:分类 MLP 的输出层为什么通常接 softmax?
因为输出层先给出 logits,softmax 能把 logits 转成各类别概率,之后可以用交叉熵计算分类损失。

十、最后总结

概念 作用 公式 考试关键词
线性模型 根据输入特征预测连续值或 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₂) 输入层、隐藏层、输出层、非线性