0. 这部分到底要学到什么程度?
这四份课件不是要求你成为深度学习工程师,而是要求你能把“神经网络如何表示、如何训练、为什么有效、不同网络适合什么任务”讲清楚,并能做最基本的数值计算。近年考试已经从纯搜索/博弈/传统机器学习,逐渐加入了网络结构设计、具体原理理解,以及手推反向传播。
神经元、激活函数、损失函数、梯度下降、BP、卷积核、池化、词向量、RNN 状态、LSTM 门。
卷积/池化输出、CNN 参数量、softmax/交叉熵、一次 BP 的 δ 与权重更新、简单最大似然。
给定任务,说明输入、输出、网络结构、损失函数、训练样本与为什么选 MLP/CNN/RNN/LSTM。
最短复习顺序
这部分与往年题的关系
旧题中神经网络出现不多,但并非完全没有:2010 年出现过单层 Perceptron 能否解决 XOR、以及根据两个 recurrent network 状态空间模型画结构图。2021 年开始明确考“设计神经网络:输入单个数字图片,输出英文单词,要求使用 MLP、CNN、RNN”。这意味着复习时不能只背定义,要能把任务翻译成网络结构。
1. 前馈神经网络与反向传播
这一部分对应课件3。你要把它理解成一条线:从“模式匹配”出发,用神经元表示一个可学习模式;再把神经元横向扩展成多分类器、纵向扩展成多层网络;最后用损失函数、梯度下降和 BP 自动学习权重。
1.1 AI、机器学习、深度学习的层级关系
人工智能是大目标,机器学习是让系统从数据中改善性能的一类方法,深度学习是机器学习中使用多层神经网络进行表示学习的方法。课件用历史线索强调:早期人工智能更多依赖人工规则;机器学习兴起后,系统从数据中学习;深度学习的突破来自更大的数据、更强的计算和更深的网络。
1.2 从数字识别到“模式匹配”
课件先用数字 3 和数字 8 的图像解释神经网络。把图像展开成向量 \(x=(x_1,x_2,\ldots,x_n)\),把“数字 3 的模式”也写成权重向量 \(w=(w_1,w_2,\ldots,w_n)\)。匹配程度就是点积:
如果输入图像的笔画与“3 的模式”越相似,点积越大;不相似则点积小甚至为负。这个思想非常重要:神经元的权重本质上就是它想检测的模式。
为什么要加激活函数?
单纯点积没有统一范围,也不方便解释成概率或置信度。Sigmoid 把任意实数压到 0 到 1:
如果 \(net\) 很大,输出接近 1;如果 \(net\) 很小,输出接近 0。
为什么要加偏置 b?
偏置相当于调整阈值。课件例子中,数字 3 与模式 3 的匹配值是 143,数字 8 与模式 3 的匹配值是 115。如果直接 sigmoid,二者都可能很接近 1;加上 \(b=-129\) 后变成 \(\sigma(14)\) 和 \(\sigma(-14)\),区分明显。
1.3 神经元的统一数学模型
一个神经元接收输入 \(x_1,\ldots,x_n\),每条边有权重 \(w_1, \ldots,w_n\),再加偏置 \(b\),输出为:
把偏置并入权重,可以令 \(x_0=1,w_0=b\),于是:
考试手推 BP 时,偏置经常被当作“恒为 1 的输入”来更新,更新量就是 \(\Delta b=\eta\delta\)。
1.4 激活函数:为什么不能一直线性?
| 激活函数 | 形式 | 输出范围 | 理解与考试点 |
|---|---|---|---|
| 符号函数 | \(sgn(net)\) | \(\{-1,1\}\) | 早期感知机常用,不可导,不适合 BP。 |
| Sigmoid | \(1/(1+e^{-net})\) | \((0,1)\) | 可解释为概率,但在两端导数接近 0,容易梯度消失。 |
| tanh | \((e^x-e^{-x})/(e^x+e^{-x})\) | \((-1,1)\) | 零中心,比 sigmoid 更对称,但仍可能饱和。 |
| ReLU | \(\max(0,net)\) | \([0,+\infty)\) | 正半轴导数为 1,缓解梯度消失,是现代网络常用激活。 |
| Softmax | \(o_i=e^{z_i}/\sum_j e^{z_j}\) | 每项 0 到 1,总和 1 | 多分类输出层常用,把多个 logit 变成概率分布。 |
1.5 横向扩展与纵向扩展
横向扩展是增加输出神经元。识别 0 到 9 就设 10 个输出神经元,每个输出神经元负责检测一种数字模式。纵向扩展是增加隐藏层。隐藏层可以先检测局部模式,例如“3 的左部”“8 的右部”,再由更高层把局部模式组合成完整模式。
单层 Perceptron 不能解决 XOR,因为 XOR 的正负样本不是线性可分的。多层网络可以先构造“局部逻辑”,再组合得到 XOR 输出。这是神经网络第一次寒冬相关的经典考点。
单层感知机不能解决 XOR 的简洁证明
设 \((1,0),(0,1)\) 为正类,\((0,0),(1,1)\) 为负类,感知机判断条件是 \(w_1x_1+w_2x_2+b>0\)。正类要求 \(w_1+b>0, w_2+b>0\),负类要求 \(b<0, w_1+w_2+b<0\)。由 \(w_1>-b, w_2>-b\) 得 \(w_1+w_2+b>-b>0\),与 \(w_1+w_2+b<0\) 矛盾。
1.6 全连接网络、前馈网络、多层感知机
课件把 Fully-Connected Network、Feedforward Network、Multi-Layer Perceptron、Dense Layer 放在一起讲。这里不要被名字吓到:
- 全连接层 / 稠密层:上一层每个神经元都连到下一层每个神经元。
- 前馈网络:信息只从输入流向输出,没有循环反馈。
- 多层感知机 MLP:通常指若干全连接层堆叠而成的前馈网络。
1.7 数据集、标签与损失函数
神经网络不是人工写规则,而是从标注数据中学习权重。以动物分类为例,输入是图片,标签是猫/狗/兔/鸟。输出层可以使用 one-hot 标签:猫为 \([1,0,0,0]\),狗为 \([0,1,0,0]\)。训练就是调节权重,让实际输出 \(o\) 接近期望输出 \(t\)。
误差平方和损失
其中 \(d\) 是样本编号,\(k\) 是输出神经元编号。\(1/2\) 是为了求导时抵消平方的 2。
交叉熵损失
分类问题中,通常只有正确类别的 \(t_{kd}=1\),因此交叉熵变成 \(H_d(w)=-\log(o_{yd})\)。也就是说,正确类概率越大,损失越小。
1.8 梯度下降:权重到底怎么动?
训练目标是最小化损失函数 \(E(w)\)。梯度 \(\nabla E(w)\) 指向损失上升最快方向,因此沿负梯度方向更新:
\(\eta\) 是学习率。太小,训练慢;太大,可能震荡甚至发散。课件还区分三种处理样本的方式:
| 算法 | 每次用多少样本 | 优点 | 缺点 |
|---|---|---|---|
| 批量梯度下降 | 全部训练集 | 梯度稳定 | 慢,内存开销大 |
| 随机梯度下降 SGD | 一个样本 | 更新频繁,能在线学习 | 震荡大 |
| 小批量梯度下降 | 一批样本 | 现代深度学习最常用,兼顾稳定和效率 | 需要选 batch size |
1.9 BP 反向传播:手推必须掌握
BP 的核心是链式法则。先前向计算每个神经元输出,再从输出层向前计算误差项 \(\delta\),最后更新每条权重。课件采用的符号可以总结为:
这里 \(x_{ji}\) 表示连到神经元 \(j\) 的第 \(i\) 个输入。如果是偏置,把它看成输入 1,所以 \(\Delta b_j=\eta\delta_j\)。
手推 BP 的固定答题格式
- 前向传播:逐层算 \(net_j=\sum_i w_{ji}x_i+b_j\),再算 \(o_j=g(net_j)\)。
- 算损失:通常 \(E=\frac12\sum_k(t_k-o_k)^2\) 或交叉熵。
- 输出层 δ:若题目是 sigmoid + 平方误差,用 \(\delta_k=(t_k-o_k)o_k(1-o_k)\)。
- 隐藏层 δ:用下一层的 δ 加权求和,再乘本层激活函数导数。
- 更新权重:用旧权重算 δ;更新时 \(w\leftarrow w+\eta\delta x\)。
- 写清学习率和偏置:偏置输入为 1,不能漏。
1.10 一个完整手推 BP 数值例题
设有 2 输入、2 隐藏、1 输出网络,所有激活均为 sigmoid,损失为 \(E=\frac12(t-o)^2\),学习率 \(\eta=0.5\)。输入 \(x_1=1,x_2=0\),目标 \(t=1\)。
| 连接 | 初始权重 | 连接 | 初始权重 |
|---|---|---|---|
| \(x_1\to h_1\) | 0.20 | \(h_1\to o\) | 0.30 |
| \(x_2\to h_1\) | -0.10 | \(h_2\to o\) | -0.20 |
| \(b_{h1}\) | 0.00 | \(b_o\) | 0.05 |
| \(x_1\to h_2\) | -0.30 | ||
| \(x_2\to h_2\) | 0.40 | \(b_{h2}\) | 0.10 |
2. 卷积神经网络、梯度消失与过拟合
这一部分对应课件2。CNN 的核心不是“多了一个卷积层”这么简单,而是用局部连接、权值共享和池化把图像的空间结构用起来。后半部分讲深层网络的两个大问题:梯度消失与过拟合。
2.1 为什么全连接网络不适合直接处理图像?
如果把一张图片展平成向量,再用全连接层连接到下一层,每个像素都连到每个神经元,参数量巨大。例如课件中 25 个输入连 9 个输出,另加偏置就是 \(25\times9+9=234\) 个参数。图像里真正有用的往往是局部结构:边缘、角点、笔画、纹理。CNN 用小卷积核在图像上滑动,就能检测局部模式。
单个 \(3\times3\) 卷积核参数:\(3\times3+1=10\)
2.2 卷积到底在算什么?
课件中的卷积更准确说是深度学习中的“滑动点积”。把一个小矩阵 \(K\) 放在输入矩阵 \(X\) 的某个局部窗口上,对应元素相乘再求和,得到输出特征图的一个位置。
例如输入窗口为
2 1 0 9 5 4 2 3 4
卷积核为
-1 0 1 -1 0 1 -1 0 1
则该位置输出为 \((-1)2+0\cdot1+1\cdot0+(-1)9+0\cdot5+1\cdot4+(-1)2+0\cdot3+1\cdot4=-5\)。
2.3 局部连接与权值共享
- 局部连接:一个输出只看输入的局部窗口,而不是整张图。
- 权值共享:同一个卷积核在所有位置使用同一组参数,因此能检测“同一种模式出现在任意位置”。
- 训练获得:传统图像处理中边缘核可能人工设计;CNN 中卷积核通常通过训练学习。
2.4 卷积核大小、padding、stride 与输出尺寸
| 概念 | 含义 | 为什么需要 |
|---|---|---|
| 卷积核大小 | 常见 \(3\times3,5\times5,7\times7\) | 小核提细粒度特征;大核看更大区域。两层 \(3\times3\) 的感受野等效 \(5\times5\)。 |
| padding | 在输入边缘补 0 或其他值 | 保留边缘信息;配合步长控制输出大小。 |
| stride | 卷积核每次移动的距离 | 大于 1 可降采样、增大感受野、提高平移稳定性。 |
如果输入 \(32\times32\),卷积核 \(5\times5\),padding=2,stride=1,则输出仍是 \(32\times32\)。如果 stride=2,则输出 \(\lfloor(32+4-5)/2\rfloor+1=16\)。
2.5 多卷积核与多通道输入
一个卷积核产生一个输出通道;有多少个卷积核,就有多少个输出通道。彩色图像有 RGB 三个输入通道,因此卷积核也必须有三个通道,形状是 \(K_h\times K_w\times C_{in}\)。
例如输入通道数 3,使用 64 个 \(3\times3\) 卷积核,参数量是 \(3\times3\times3\times64+64=1792\)。
2.6 池化 pooling
池化是一种降维手段,常见最大池化和平均池化。最大池化在窗口中取最大值;平均池化取平均值。池化逐通道进行,不改变通道数,只改变每个通道的高和宽。
2.7 LeNet、VGG 与 CNN 特点
LeNet 是早期用于手写数字/文档识别的经典 CNN,结构是卷积、池化、卷积、池化、全连接。VGG-16 的思路是使用大量小卷积核,尤其是 \(3\times3\) 卷积,堆叠成更深网络。课件强调 CNN 的三个特点:
- 参数少,只与卷积核大小、输入通道数、输出通道数有关,而不是与整张图全部像素两两连接。
- 特征抽取能力强,从低层边缘到高层语义逐级组合。
- 具有一定程度的平移不变性,特别适合视觉问题。
2.8 梯度消失:深层网络为什么难训练?
对 sigmoid 神经元,隐藏层误差项是:
当输出 \(o_j\) 接近 0 或 1 时,\(o_j(1-o_j)\) 接近 0。层数越深,多个小于 1 的因子连乘,前面层的梯度就会趋近于 0,权重几乎不更新。这就是梯度消失。
2.9 GoogLeNet 与 Inception
GoogLeNet 是 ImageNet 2014 冠军,课件强调两点:辅助分类器和 Inception 模块。辅助分类器在网络中间也接一个分类头,训练时给中间层直接监督信号,缓解深层网络训练困难。Inception 模块把同一输入同时送入不同大小的卷积核和池化分支,让网络自己选择不同尺度的特征。
1×1 卷积为什么有用?
\(1\times1\) 卷积不看空间邻域,只在同一像素位置上混合通道。它可以把 192 个通道压到 32 个通道,再做 \(5\times5\) 卷积。参数对比如下:
先 \(1\times1\) 降到 32 通道,再 \(5\times5\):\((1\times1\times192+1)\times32+(5\times5\times32+1)\times32=31,808\)
2.10 ResNet:残差网络
更深的网络理论上不应比浅层差,因为多出来的层至少可以学习恒等映射。但实际训练中,深层普通网络可能出现退化:训练误差反而更高。ResNet 的办法是加入 skip connection,让模块输出:
于是模块只需要学习残差 \(F(X)=F'(X)-X\)。如果最优情况就是恒等映射,只要学到 \(F(X)\approx0\) 即可。加法路径让梯度也能更直接地向前传播。
当残差块改变尺寸,例如 stride=2 使长宽减半、通道数翻倍时,恒等映射的 \(X\) 也需要用投影或其他方式变成同维度,课件中称“虚线”连接。
2.11 过拟合:训练好不等于泛化好
过拟合是模型在训练集上表现很好,但在新数据上表现差。欠拟合是模型太简单,训练集也学不好;恰拟合是在训练数据和新数据上都表现较好。
| 方法 | 做法 | 背后思想 |
|---|---|---|
| 验证集/测试集 | 训练集学习参数,验证集调超参数和早停,测试集最终评价 | 不要只看训练误差,要估计泛化能力。 |
| 正则化项 | 损失加 \(\lambda\lVert w\rVert_2^2\) | 限制权重过大,降低模型复杂度。 |
| Dropout | 训练时随机临时舍弃部分神经元 | 防止神经元过度依赖,近似训练多个子网络。 |
| 数据增强 | 图像缩放、旋转、裁剪、调色等 | 数据越多、变化越丰富,越不容易记死训练样本。 |
3. 神经网络语言模型、词向量与 word2vec
这一部分对应课件4。核心问题是:神经网络只能处理数值向量,文本里的词怎么变成向量?又怎样通过预测上下文或中心词学到“语义相近的词向量更近”?
3.1 one-hot 编码:简单但没有语义
one-hot 用与词表等长的向量表示一个词,只有该词对应位置为 1,其余为 0。例如词表 \({我,在,清华大学,学习,生活,美丽的,清华园,中}\),则“清华大学”为 \([0,0,1,0,0,0,0,0]\)。
3.2 分布式表示与词嵌入
分布式表示用低维稠密向量表示词,如 \([-0.85,2.3,1.5,-0.54,\ldots]\)。每一维不一定有明确人工含义,但整体向量位置可以表达语义。课件用“动物、植物、食物”维度举例:猪、羊、熊猫、白菜、竹子在这些维度上的取值不同,因此相似词距离更近。
3.3 语言模型:计算一句话的概率
语言模型要计算词序列概率。设句子为 \(w_1w_2\cdots w_m\),用链式法则:
n 元语言模型近似认为当前词只依赖前 \(n-1\) 个词:
3.4 神经网络语言模型 NLM
NLM 用前 \(n-1\) 个词的词向量拼接作为输入,经过隐藏层,最后用 softmax 输出词表中每个词作为当前词的概率。设词表大小为 \(K\),词向量维度为 \(m\),窗口大小为 \(n\),输入向量维度就是 \(m(n-1)\)。
3.5 NLM 如何训练:最大似然
训练语料库 \(C\) 中每个位置都有一个真实当前词。NLM 训练目标是让真实词的条件概率尽量大:
通常取对数,把乘积变成求和:
等价地,最小化负对数似然。词向量查表矩阵也是模型参数,因此会通过 BP 一起学习。
最大似然小例子:计算机科学 / 计算机工程
语料库有三句话:“计算机 科学”“计算机 科学”“计算机 工程”,窗口为 2。希望估计 \(p(科学|计算机)\) 和 \(p(工程|计算机)\)。设 \(p(科学|计算机)=p\),则 \(p(工程|计算机)=1-p\)。联合概率为 \(p^2(1-p)\)。令它最大,得到 \(p=2/3\),\(p(工程|计算机)=1/3\)。这就是“让观测到的数据概率最大”的思想。
3.6 NLM 的问题
- 输入维度为 \(m(n-1)\),全连接参数多。
- 输出层神经元个数等于词表大小 \(K\),softmax 分母要对所有词求和,计算开销大。
- 如果词表有几十万词,直接 softmax 非常慢。
3.7 word2vec:为了学词向量而简化 NLM
word2vec 的目标不是完整地计算句子概率,而是高效学到词向量。课件介绍两种结构:
| 模型 | 输入 | 输出/预测目标 | 一句话理解 |
|---|---|---|---|
| CBOW | 中心词前后 \(c\) 个上下文词 | 中心词 \(w_t\) | 看上下文猜中间词。 |
| Skip-Gram | 中心词 \(w_t\) | 前后 \(c\) 个上下文词 | 看中间词猜周围词。 |
3.8 霍夫曼树与层次 softmax
为减少 softmax 对整个词表求和的开销,word2vec 可以使用霍夫曼树。每个词是叶节点,频度越高的词越靠近根,编码越短。预测一个词不再是在 \(K\) 个词中做一次大 softmax,而是在根到该词叶节点的路径上做一串二分类选择。
一个词的概率 = 路径上每一步选择概率的乘积。
3.9 TextCNN:词向量的应用
TextCNN 用词向量矩阵表示一句话。每一行是一个词的词向量,卷积核宽度与词向量长度一致,高度表示一次看几个词,例如 2-gram、3-gram、4-gram。卷积后对每个卷积核做 1-最大池化,拼接后接全连接和 softmax 做分类,如情感分类。
4. RNN、LSTM 与序列任务
这一部分对应课件5。RNN 的核心是“状态”:处理第 t 个输入时,网络不仅看当前输入 \(x^{(t)}\),还看上一时刻隐藏状态 \(h^{(t-1)}\)。LSTM 是 RNN 的特殊实现,用门控机制解决普通 RNN 的长期依赖和重点选择问题。
4.1 什么是序列数据?
语音、文本、时间序列都有先后联系。句子“我 非常 喜欢 这部 城市 题材 电影”不是一堆无序词,前面的“非常喜欢”会影响后面对整句情感的理解。RNN 用隐藏状态不断累积已经读过的信息。
其中 \(U\) 连接当前输入,\(W\) 连接上一时刻隐藏状态。课件强调这些状态转移控制参数在所有时间步 全局共享,不是每个位置一套新参数。
4.2 RNN 的一般结构
一般 RNN 在每个时间步可以产生输出:
如果任务只需要整句分类,可以只用最后一个隐藏状态 \(h^{(T)}\) 作为句子向量;如果每个位置都要输出标签,例如分词,则每个 \(h^{(t)}\) 都接输出层。
4.3 RNN 训练:BP Through Time
课件写“循环神经网络的训练:BP”。更完整地说,RNN 训练是把同一个循环模块沿时间展开,然后对展开后的计算图做反向传播。因为同一组 \(W,U,V\) 在不同时间步共享,梯度要把所有时间步贡献相加。
4.4 三类典型任务
| 任务 | 输入 | 输出 | 用哪个状态 |
|---|---|---|---|
| 序列级分类 | 一整句话 | 一个类别,例如情感正/负 | 通常用最后状态 \(h^{(T)}\) 或池化后的状态。 |
| 序列标注 | 一串字/词 | 每个位置一个标签 | 每个 \(h^{(t)}\) 都输出。 |
| 序列到序列 | 源序列 | 目标序列 | 编码器产生上下文,解码器逐步生成。 |
中文分词:B/E/M/S 标注
“清华计算机系”可以标成 B E B M E S:B 是词首,E 是词尾,M 是词中,S 是单字词。RNN 每个字输出一个标签概率。
看图说话:图像到句子
看图说话是“图像—句子”训练样本。图像先由神经网络编码成向量,再由 RNN 解码器逐字/逐词输出句子。损失函数通常是每个时间步目标词的负对数似然之和。
4.5 普通 RNN 的局限
- 无法利用后文:单向 RNN 预测前面位置时看不到后面的词。例如“南京市长江大桥”前几个字的切分需要后文帮助。
- 前面信息被淹没:长文本分类时,最后状态可能主要记住近处词,忘掉前面关键内容。
- 梯度消失:沿时间反向传播时反复乘以权重和激活导数,远处时间步梯度可能趋近于 0。
4.6 双向 RNN 与 seq2seq
双向 RNN 同时做正向处理和反向处理,再把两边隐藏状态拼接。这样每个位置既能看左边上下文,也能看右边上下文,适合分词、词性标注、命名实体识别等序列标注任务。
seq2seq 用编码器把输入序列压成上下文表示,再由解码器生成输出序列。机器翻译、问答系统、拼音输入法都可以按这个思路建模。
4.7 LSTM:用门控选择记什么、忘什么、输出什么
课件把 LSTM 的动机总结为三点:长程依赖问题、重点选择问题、梯度消失问题。LSTM 引入状态 \(s^{(t)}\) 作为长期记忆,引入隐藏输出 \(h^{(t)}\) 作为短期输出。三个门都是 sigmoid 输出的向量,取值在 0 到 1,用来按维度筛选信息。
门的概念
门是一个与状态同维度的向量 \(g=(g_1,\ldots,g_m)\),每个分量在 0 到 1。对信息向量 \(s\) 做按位乘 \(g\odot s\):接近 1 的维度保留,接近 0 的维度抑制。
LSTM 公式
课件中输入门记为 \(g\),输出门记为 \(q\),候选信息用 tanh 编码。
为什么 LSTM 有助于长期记忆?
普通 RNN 的状态更新是每步经过矩阵乘法和非线性,长距离梯度容易连续相乘而消失。LSTM 的长期状态 \(s^{(t)}\) 通过 \(f^{(t)}\odot s^{(t-1)} + \cdots\) 更新,主路径包含加法和门控按位乘,信息更容易跨很多步保留。课件雨课堂题问“为什么 \(s(t)\) 保留长期记忆?”,对应答案是:更新主要由加减操作完成。
4.8 深度学习框架与应用流程
课件最后提到 TensorFlow、PyTorch、Keras、飞桨、计图等框架。框架的意义是把神经网络写成计算图,自动求导,免去每换一个网络就手推一次 BP 的负担。
5. 期末题型解法模板
这里把课件内容转成考试可用的答题套路。真正考试不一定照抄这些题,但结构基本相同。
5.1 题型一:手推反向传播
答题时不要跳步,按“前向 → 损失 → 输出层 δ → 隐藏层 δ → 更新”写。即使最后算错一个小数,只要公式和步骤清楚,通常能拿大部分分。
| 层 | δ 公式 | 权重更新 |
|---|---|---|
| 输出层 sigmoid + 平方误差 | \(\delta_k=(t_k-o_k)o_k(1-o_k)\) | \(w_{ki}\leftarrow w_{ki}+\eta\delta_k x_i\) |
| 隐藏层 sigmoid | \(\delta_h=o_h(1-o_h)\sum_k\delta_k w_{kh}\) | \(w_{hi}\leftarrow w_{hi}+\eta\delta_h x_i\) |
| 偏置 | 把输入看作 1 | \(b_j\leftarrow b_j+\eta\delta_j\) |
5.2 题型二:设计网络结构
这题不是让你写代码,而是看你是否理解三类网络适合什么信息结构。
MLP 方案
说明:MLP 可以做分类,但展平会破坏空间结构,因此参数较多、对平移变化不如 CNN 稳定。损失函数用 10 类交叉熵。
CNN 方案
说明:CNN 利用局部连接和权值共享提取笔画、边缘等局部特征,再组合成数字整体,适合图像输入。损失函数用交叉熵。
RNN 方案
RNN 可以有两种合理画法:
- 把图像当序列:把每一行或每一列像素当作一个时间步输入 RNN,最后隐藏状态接 softmax 10 类,再映射成英文单词。
- 图像到字符序列:先用 MLP/CNN 编码图像,再用 RNN 解码器依次输出字符,例如 o → n → e → <EOS>。这更贴近“输出英文单词”是序列的表述。
说明:如果题目强制“使用 RNN”,第一种写法简单;如果强调输出单词的字母序列,第二种写法更完整。训练样本是“数字图片—英文单词/字符序列”,损失函数是每个字符位置的交叉熵之和。
5.3 题型三:卷积与池化计算
常见问法:给输入矩阵、卷积核、padding/stride,求输出;或给网络结构,求每层尺寸和参数量。固定公式如下:
做题时先算空间尺寸,再算通道数。卷积层输出通道数等于卷积核个数;池化层不改变通道数。
例:输入 28×28×1,Conv 5×5、6 个核、P=0、S=1,随后 2×2 maxpool、S=2
卷积输出尺寸 \((28-5)/1+1=24\),通道数 6,所以为 \(24\times24\times6\)。卷积参数 \(5\times5\times1\times6+6=156\)。池化后尺寸 \(12\times12\times6\),参数 0。
5.4 题型四:解释梯度消失、ResNet、Dropout
| 问题 | 标准答题骨架 |
|---|---|
| 什么是梯度消失? | 深层网络反向传播时,梯度经过多层链式乘法;sigmoid/tanh 饱和区导数接近 0;前层权重更新量趋近 0,训练困难。 |
| ReLU 为什么有帮助? | 正半轴导数为 1,减少连续小导数相乘;计算简单。但负半轴仍为 0,可能出现 dead ReLU。 |
| Inception 为什么有效? | 并行多尺度卷积,让网络同时抽取不同粒度特征;1×1 卷积融合通道并降维,减少参数。 |
| ResNet 为什么有效? | skip connection 使模块学习残差 \(F(X)\),而不是完整映射;恒等映射容易表达;梯度可沿加法路径传播。 |
| Dropout 为什么减轻过拟合? | 训练时随机丢弃神经元,减少共适应,近似训练许多子网络,提升泛化。 |
5.5 题型五:NLM / word2vec / TextCNN 概念题
| 问法 | 答题关键词 |
|---|---|
| one-hot 有什么缺点? | 高维稀疏;不同词距离相同;不能表达语义相似性。 |
| 词向量怎么学? | 训练语言模型或 word2vec;参数通过 BP/最大似然更新;相似上下文导致相似表示。 |
| CBOW 与 Skip-Gram 区别? | CBOW:上下文预测中心词;Skip-Gram:中心词预测上下文。 |
| 霍夫曼树作用? | 把大词表 softmax 改成路径上的二分类;高频词路径短,训练计算量降低。 |
| TextCNN 如何做情感分类? | 词向量矩阵作为输入;不同高度卷积核抽取 n-gram 特征;1-max pooling;拼接;softmax 分类。 |
5.6 题型六:RNN/LSTM 结构题
旧题出现过“给两个状态空间模型,画 recurrent network 结构图”。模板如下:
画法:输入 \(u(n)\) 经 \(w_a\),上一状态 \(x(n)\) 经延迟和 \(w_b\),加偏置求和得到 \(x(n+1)\);输出端对当前状态 \(x(n)\) 过 \(\psi\)。
画法:输入和上一状态先加权求和,再过 \(\psi\) 得到下一状态;输出直接等于当前状态 \(x(n)\)。
LSTM 雨课堂图题中,遗忘门是作用在 \(s^{(t-1)}\) 上、决定旧长期状态保留多少的 sigmoid 门;长期记忆能保留的关键是状态更新主要由加法和门控组成。
6. 公式与易错点速查
6.1 一页公式表
| 主题 | 公式 | 用途 |
|---|---|---|
| 神经元 | \(net=\sum_iw_ix_i+b,\ o=g(net)\) | 前向传播。 |
| Sigmoid | \(\sigma(x)=1/(1+e^{-x}),\ \sigma'(x)=\sigma(x)(1-\sigma(x))\) | BP 常用。 |
| Softmax | \(o_i=e^{z_i}/\sum_j e^{z_j}\) | 多分类概率输出。 |
| 平方误差 | \(E=\frac12\sum_k(t_k-o_k)^2\) | 课件 BP 推导。 |
| 交叉熵 | \(H=-\sum_kt_k\log o_k\) | 分类常用损失。 |
| 输出层 δ | \(\delta_k=(t_k-o_k)o_k(1-o_k)\) | sigmoid + 平方误差。 |
| 隐藏层 δ | \(\delta_h=o_h(1-o_h)\sum_k\delta_kw_{kh}\) | 反向传播。 |
| 权重更新 | \(w_{ji}\leftarrow w_{ji}+\eta\delta_jx_i\) | SGD 一步更新。 |
| 卷积尺寸 | \(\lfloor(H+2P-K)/S\rfloor+1\) | 求输出高/宽。 |
| 卷积参数 | \(K_hK_wC_{in}C_{out}+C_{out}\) | 求参数量。 |
| RNN | \(h^{(t)}=\tanh(Wh^{(t-1)}+Ux^{(t)}+b)\) | 序列状态更新。 |
| LSTM 状态 | \(s^{(t)}=f^{(t)}\odot s^{(t-1)}+g^{(t)}\odot\tilde{i}^{(t)}\) | 长期记忆更新。 |
| 语言模型 | \(p(w_1\cdots w_m)=\prod_ip(w_i|context_i)\) | 最大似然训练。 |
6.2 易错点清单
- BP 符号:课件用 \(\delta=-\partial E/\partial net\),所以更新写 \(w\leftarrow w+\eta\delta x\)。如果你用梯度 \(\partial E/\partial w\),则是 \(w\leftarrow w-\eta\partial E/\partial w\)。两种写法不要混。
- 隐藏层 δ:必须乘激活函数导数,还要把所有后继节点的 \(\delta w\) 加起来。
- 偏置:当作输入 1,不要漏更新。
- 卷积输出通道:等于卷积核个数,不等于输入通道数。
- 多通道卷积:每个卷积核深度必须等于输入通道数,所有通道相乘求和后产生一个输出通道。
- 池化:不改变通道数,只改变高和宽。
- 1×1 卷积:不是“没用”,它混合通道并降维。
- 验证集与测试集:验证集用于调参/早停,测试集用于最终评估,不能把测试集当调参工具。
- CBOW/Skip-Gram:CBOW 是上下文预测中心词;Skip-Gram 是中心词预测上下文。
- RNN 参数共享:每个时间步用同一套参数,不是展开后每一层独立参数。
- LSTM 的 s 与 h:\(s\) 是长期状态,\(h\) 是当前对外输出;做逐位置标注通常用 \(h^{(t)}\) 输出。
7. 课件逐页导读地图
下面不是逐字复述课件,而是告诉你每组页面在讲什么、读的时候要抓住什么问题。
课件3:前馈神经网络与反向传播
| 页码 | 主题 | 读懂标准 |
|---|---|---|
| 1-4 | AI/ML/DL 与神经网络历史 | 能说出深度学习属于机器学习,神经网络是 ANN/NN。 |
| 5-13 | 数字识别、模式匹配、神经元建模 | 理解权重是模式,点积是匹配,偏置是阈值,激活函数把 net 变输出。 |
| 14-18 | 激活函数 | 知道 sigmoid、tanh、ReLU、softmax 的作用和输出范围。 |
| 19-29 | 横向/纵向扩展、XOR、数据驱动 | 能解释为什么要多输出、多隐藏层,为什么模式由数据学习而非人工写死。 |
| 30-39 | 全连接网络、数据集、损失、梯度下降 | 会写平方误差、交叉熵、梯度下降更新式,区分 GD/SGD/mini-batch。 |
| 40-50 | BP 推导与算法 | 会算输出层 δ、隐藏层 δ、权重更新。 |
| 51-58 | 学到的模式、XOR 练习、交叉熵总结 | 知道 BP 可用于不同网络/损失/激活,softmax+交叉熵用于分类。 |
课件2:卷积神经网络、梯度消失、过拟合
| 页码 | 主题 | 读懂标准 |
|---|---|---|
| 1-10 | CNN 动机、局部模式、边缘检测 | 能手算一次卷积,解释局部连接与权值共享。 |
| 11-19 | 卷积核大小、padding、stride、多核、多通道、池化 | 会算输出尺寸、参数量,知道多核产生多通道,池化不改通道数。 |
| 20-27 | 应用、LeNet、VGG、CNN 特点 | 能说明 CNN 为什么适合图像。 |
| 28-43 | 梯度消失、ReLU、GoogLeNet、Inception、ResNet | 会解释梯度消失原因和 ReLU/辅助分类器/Inception/ResNet 的作用。 |
| 44-56 | 过拟合、验证集、正则化、Dropout、数据增强、ResNet 结构 | 能区分欠拟合/过拟合,列出减轻过拟合方法并解释原理。 |
课件4:神经网络语言模型
| 页码 | 主题 | 读懂标准 |
|---|---|---|
| 1-8 | one-hot 与分布式词表示 | 能说出 one-hot 缺点和 embedding 的意义。 |
| 9-16 | 语言模型、NLM、最大似然、NLM 问题 | 能写条件概率、softmax 输出、最大似然目标,知道计算开销来源。 |
| 17-26 | word2vec、CBOW、Skip-Gram、霍夫曼树 | 能区分 CBOW/Skip-Gram,解释层次 softmax 降低计算量。 |
| 27-32 | TextCNN 应用 | 能画 TextCNN:词向量矩阵、卷积、1-max pooling、softmax。 |
| 33-35 | NLM 训练样本与最大似然例子 | 能从窗口生成训练样本,并做简单 MLE 推理。 |
课件5:循环神经网络
| 页码 | 主题 | 读懂标准 |
|---|---|---|
| 1-10 | 序列数据、状态空间模型、简单 RNN | 会写 \(h^{(t)}=\tanh(Wh^{(t-1)}+Ux^{(t)})\),理解参数共享。 |
| 11-20 | RNN 训练与应用:分类、分词、看图说话、双向、seq2seq | 能根据任务判断用最后状态、每步输出还是编码器-解码器。 |
| 21-34 | LSTM | 知道普通 RNN 的三大问题,能说出遗忘门、输入门、输出门和状态更新。 |
| 35-44 | 框架、总结、应用流程、雨课堂题 | 知道框架自动求导;能回答遗忘门位置和长期记忆原因。 |
最后的复习策略
把这份指南学完后,建议用三张纸自测:第一张默写 BP 一步更新;第二张画 MLP/CNN/RNN/LSTM/CBOW/Skip-Gram;第三张列出“每类任务该用什么网络以及为什么”。如果这三张纸能独立写出来,神经网络部分基本就从“没听过”补到了可应试水平。
打印版提示:网页中的公式如果没有渲染,可直接按 TeX 源码阅读。