HCIP-AI 题目1-10学习笔记
题目1-10学习笔记
目录
- 词向量:Word2Vec、GloVe、FastText、ELMo、BERT
- CNN 卷积层参数量
- GAN 模式崩塌
- 图像去噪与滤波
- MindSpore 全连接层 Dense
- 神经网络结构设计
- MindSpore GRAPH_MODE
- MindSpore 图像增强
- NLP 共现窗口
- 全局高频易错点
- 一页式考前复习
第 1 题:词向量
完整题目
以下关于词向量说法错误的是哪一项?
A. BERT与ELMo都可以生成动态词向量。
B. Word2Vec有两种类型,Skip-gram与CBOW。
C. 原始的GloVe方法可以很好地处理未登录词问题。
D. 用FastText获取词向量能够考虑子词级别信息。
正确答案
C
逐项解析
A. BERT与ELMo都可以生成动态词向量 —— 正确
BERT 与 ELMo 都属于**上下文化词表示(Contextualized Representation)**方法。
同一个词放在不同上下文中,得到的最终表示可以不同。
例如:
我吃了一个苹果。
苹果发布了新手机。
2
第一个“苹果”是水果,第二个“苹果”是公司。
传统静态词向量通常只能给“苹果”一个固定向量,而 ELMo/BERT 能根据上下文产生不同表示。
核心对应:
ELMo -> BiLSTM
BERT -> Transformer Encoder
2
B. Word2Vec有两种类型,Skip-gram与CBOW —— 正确
Word2Vec 的两种经典训练架构:
CBOW:上下文 -> 中心词
Skip-gram:中心词 -> 上下文
2
口诀:
CBOW:周围猜中间
Skip-gram:中间猜周围
2
C. 原始GloVe可以很好处理未登录词 —— 错误
OOV:
Out Of Vocabulary
未登录词 / 词表外词
2
原始 GloVe 属于典型的 word-level 静态词向量。
如果某个词训练时根本不在词表中,就没有直接对应的预训练词向量,因此原始 GloVe 本身并不擅长解决 OOV。
D. FastText能够考虑子词级别信息 —— 正确
FastText 的经典核心特征之一:
Subword
Character n-gram
2
例如:
playing
可以利用类似:
pla
lay
ayi
yin
ing
...
2
3
4
5
6
这样的字符级 n-gram。
因此即使完整单词没有见过,只要它包含的部分字符 n-gram 在训练中出现过,就仍有机会组合出合理的表示。
第 1 题扩展知识:从 One-hot 一直讲到 BERT
1. 为什么计算机需要“词表示”?
自然语言中的“猫”“狗”“苹果”首先只是符号。
计算机需要把这些符号变成数字,才能进行:
- 加减乘除
- 矩阵运算
- 相似度计算
- 神经网络训练
这个过程属于:
Word Representation
词表示
2
2. One-hot Encoding:最基础的词表示
假设词表只有:
猫
狗
苹果
香蕉
2
3
4
One-hot 可以表示为:
| 词 | One-hot |
|---|---|
| 猫 | [1,0,0,0] |
| 狗 | [0,1,0,0] |
| 苹果 | [0,0,1,0] |
| 香蕉 | [0,0,0,1] |
One-hot 的问题
问题 1:高维
如果词表有 100 万个词,那么每个词就是 100 万维向量。
问题 2:稀疏
绝大部分位置都是 0,因此属于:
Sparse Representation
稀疏表示
2
问题 3:难体现语义相似度
“猫”和“狗”明明语义比较接近,但 One-hot 并没有直接表达这种关系。
因此后来出现:
Embedding
Dense Representation
分布式表示 / 稠密表示
2
3
3. Embedding:稠密向量
词可以表示成低维连续向量:
如果语义相近,它们在向量空间中通常也更接近。
4. 分布假设 Distributional Hypothesis
词向量背后的经典思想:
经常出现在相似上下文中的词,语义通常也比较相似。
例如:
我养了一只猫。
我养了一只狗。
猫是一种宠物。
狗是一种宠物。
2
3
4
“猫”和“狗”的上下文高度相似,因此模型可能学到:
5. 如何衡量两个词向量是否相似?
经典方法:
余弦相似度 Cosine Similarity
直觉上:
- 越接近 1:方向越相似
- 接近 0:相关性较弱
- 越接近 -1:方向越相反
例如通常:
6. Word2Vec 是什么?
Word2Vec 是经典的静态词向量方法。
所谓静态:
一个词 -> 一个基本固定的向量
例如:
苹果很好吃。
苹果发布了新手机。
2
传统 Word2Vec 中两个“苹果”通常共享同一个词向量,因此对一词多义处理能力有限。
7. CBOW:上下文预测中心词
CBOW:
Continuous Bag of Words
例子:
我 今天 去 [北京] 旅游
用:
今天、去、旅游
预测:
北京
因此:
口诀:
CBOW:周围猜中间
8. Skip-gram:中心词预测上下文
Skip-gram 与 CBOW 相反。
给出:
北京
预测附近可能出现:
去
旅游
故宫
2
3
因此:
口诀:
Skip-gram:中间猜周围
9. CBOW 与 Skip-gram 的常见比较
考试中可粗略记忆:
CBOW
- 综合上下文预测中心词
- 训练通常较快
- 对高频词表现常较稳定
Skip-gram
- 用中心词预测多个上下文词
- 计算量通常更大
- 对低频词、罕见词的表示往往更有优势
注意:这是经典教材层面的经验性总结,不应理解为所有任务中绝对成立。
10. Word2Vec 为什么能学到语义?
因为相似词会反复出现在相似上下文中。
例如:
猫 -> 宠物、可爱、喂养……
狗 -> 宠物、可爱、喂养……
2
为了完成预测任务,模型会逐渐把它们的向量调整得更接近。
11. Word2Vec 的语义关系现象
经典示例:
它说明词向量空间中可能编码某些语义方向和关系。
注意:
这不是严格意义上的“自然语言代数定律”,而是词向量空间中经常观察到的语义结构现象。
12. Word2Vec 高频伴生考点:Negative Sampling
如果词表有几十万甚至几百万个词,每次都对整个词表做完整 softmax,计算成本很高。
因此 Word2Vec 常使用:
Negative Sampling
负采样
2
例如:
正样本:
猫 -> 宠物
随机抽负样本:
猫 -> 飞机
猫 -> CPU
猫 -> 冰箱
2
3
训练目标可以直观理解成:
这样可以减少每次更新涉及的词数量,提高训练效率。
13. GloVe 是什么?
GloVe:
Global Vectors for Word Representation
核心关键词:
Global
Co-occurrence
全局共现统计
2
3
Word2Vec 更偏向通过预测任务学习;GloVe 更强调利用整个语料库的词-词共现统计。
14. 什么叫“共现”?
例如语料中:
猫喜欢吃鱼
狗喜欢吃肉
猫是一种宠物
狗是一种宠物
2
3
4
可以统计一个词和另一个词在一定窗口范围内共同出现的次数。
形成类似:
| 宠物 | 鱼 | 肉 | 飞机 | |
|---|---|---|---|---|
| 猫 | 100 | 80 | 5 | 1 |
| 狗 | 95 | 3 | 75 | 1 |
这种信息就是:
Co-occurrence Statistics
共现统计
2
15. GloVe 共现矩阵
常记:
表示:
词
出现在词 上下文中的共现次数。
GloVe 的经典目标函数形式:
初学和选择题阶段不必死背完整公式,但必须认识:
GloVe -> Global Co-occurrence
16. Word2Vec 与 GloVe 的经典区分
| 方法 | 经典理解 |
|---|---|
| Word2Vec | Prediction-based,偏预测 |
| GloVe | Count-based / Global Co-occurrence,偏全局统计 |
二者最后都可以得到稠密词向量,但训练思想不同。
17. OOV 到底是什么?
OOV:
Out Of Vocabulary
假设训练词表:
测试时突然出现:
OpenAI
如果:
那么它就是 OOV。
18. OOV 与低频词不是一回事
假设:
| 词 | 训练语料出现次数 |
|---|---|
| 的 | 1,000,000 |
| 北京 | 50,000 |
| 石墨烯 | 3 |
“石墨烯”虽然只出现 3 次,但只要进入了词表,就不是 OOV。
所以:
Rare Word(低频词) ≠ OOV(词表外词)
19. 为什么原始 Word2Vec / GloVe 难处理 OOV?
它们可以粗略理解成建立:
完整单词 -> 向量
例如:
| Word | Vector |
|---|---|
| apple | [0.2,0.4,...] |
| dog | [0.7,-0.1,...] |
| cat | [0.6,-0.2,...] |
如果新词根本不在这张表中,就没有可直接查询的向量。
20. Vocabulary:词表
Vocabulary 通常写成:
例如:
每个 token 可以映射到一个整数 ID:
| Token | ID |
|---|---|
| 我 | 0 |
| 你 | 1 |
| 北京 | 2 |
| NLP | 3 |
基本流程:
Text -> Token -> Token ID -> Embedding
21. Embedding Matrix
假设:
词向量维度:
Embedding Matrix:
每一行对应一个 token 的 300 维向量。
这也解释了传统静态词向量的 OOV 问题:
新词如果连词表 ID 都没有,就无法简单地从固定 embedding matrix 中查到对应行。
22. FastText 为什么改善 OOV?
FastText 不只看完整单词,还看单词内部的字符片段。
例如:
playing
字符 3-gram 可以包含:
pla
lay
ayi
yin
ing
2
3
4
5
因此可以粗略写成:
其中:
表示这个词对应的一组字符 n-gram。
完整词没见过,不代表其中所有 n-gram 都没见过。
因此 FastText 对 OOV 更友好。
23. n-gram 是什么?
n-gram:
连续的 n 个单位组成的片段。
如果单位是字符,单词:
apple
字符 2-gram:
ap
pp
pl
le
2
3
4
字符 3-gram:
app
ppl
ple
2
3
FastText 的经典特色就是利用字符 n-gram。
24. Word-level、Subword-level、Character-level
Word-level
playing
整个单词作为一个单位。
Character-level
拆成:
p l a y i n g
Subword-level
拆成介于字符和完整词之间的片段,例如:
play
ing
2
或其他算法产生的子词。
25. Subword 和 Context 必须区分
Subword
看:
这个词内部有什么?
典型:
FastText
Character n-gram
2
Context
看:
这个词周围有什么?
典型:
ELMo
BERT
2
口诀:
Subword:往词里面看
Context:往词周围看
2
26. FastText 能处理 OOV,所以它是动态词向量吗?
不是。
这是高频陷阱。
FastText 的优势来自:
词内部的 Subword 信息
而动态/上下文化词表示强调:
同一个词因句子上下文不同而改变表示
因此:
FastText -> 典型静态表示
ELMo/BERT -> 上下文化动态表示
2
27. 为什么需要动态词向量?
传统静态词向量难处理一词多义。
例如:
苹果很好吃。
苹果发布了新手机。
2
静态词向量:
上下文化表示:
28. ELMo
ELMo:
Embeddings from Language Models
经典核心:
双向语言模型
BiLSTM
上下文化表示
2
3
可以粗略理解为:
左 -> 右
右 -> 左
2
两个方向共同提供上下文信息。
29. RNN、LSTM、BiLSTM 的关系
可以先建立:
RNN
└── LSTM
└── BiLSTM
2
3
RNN 通过序列递归传递信息。
LSTM 在 RNN 基础上引入门控机制,以改善长期依赖和梯度传播问题。
BiLSTM 同时利用正向和反向序列信息。
ELMo 的经典实现与 BiLSTM 密切相关。
30. BERT
BERT:
Bidirectional Encoder Representations from Transformers
拆解:
B -> Bidirectional
E -> Encoder
R -> Representations
T -> Transformers
2
3
4
核心:
Transformer Encoder
Self-Attention
Bidirectional Context
Contextualized Representation
2
3
4
31. Transformer 与 Self-Attention
BERT 不再主要依赖 RNN/LSTM 的逐步递归结构,而建立在 Transformer Encoder 上。
Transformer 的核心机制之一:
Self-Attention
自注意力
2
经典公式:
直觉:
Q:Query,我想找什么?
K:Key,每个位置提供什么索引信息?
V:Value,每个位置真正携带什么内容?
2
3
通过 Q 和 K 计算相关程度,再决定从各个 V 中聚合多少信息。
32. 为什么 BERT 是“动态”的?
BERT 的处理可以粗略理解为:
Token Embedding
-> Transformer Layers
-> Contextualized Hidden Representation
2
3
同一个 token 在不同句子中:
可以不同,因为最终 hidden state 已经融合上下文。
因此:
BERT 最终表示不是简单的固定查表结果。
33. Embedding 与 Hidden State 不要完全混淆
教学中常说:
BERT 词向量
但更严谨地说:
- BERT 输入端有 input embeddings
- Transformer 层继续处理
- 最终得到 contextualized hidden representations
所以“BERT 动态词向量”是便于理解的说法;严格表述通常是“上下文化表示”。
34. BERT 自己有没有 Subword?
有。
经典 BERT 通常使用:
WordPiece
等 subword tokenization 思路。
因此:
FastText 使用 subword,不代表只有 FastText 使用 subword。
需要区分机制:
FastText:
字符 n-gram 参与词向量构造
BERT:
输入通常先经过 subword tokenizer,再由 Transformer 产生上下文化表示
2
3
4
5
35. Token 不一定等于 Word
Token 是模型实际处理的基本单位。
一个完整单词可能:
- 恰好是一个 token
- 被拆成多个 subword token
- 在字符级模型中拆成字符
因此:
Token ≠ 必然等于完整单词
36. 为什么现代 NLP 喜欢 Subword Tokenization?
两个极端:
完全 Word-level
问题:
- 词表很大
- 新词多
- OOV 严重
- 各种词形变化增加词表规模
完全 Character-level
问题:
- 序列非常长
- 单字符语义信息较弱
Subword 是折中:
Character <-> Subword <-> Word
既控制词表大小,又能拆解很多罕见词。
37. 静态 vs 动态 / 上下文化总表
| 方法 | 静态/上下文化 | 关键技术 | OOV / Subword 特征 |
|---|---|---|---|
| One-hot | 静态 | 离散编码 | OOV 差 |
| Word2Vec | 静态 | CBOW / Skip-gram | 原版 OOV 差 |
| GloVe | 静态 | 全局共现 | 原版 OOV 差 |
| FastText | 静态 | Character n-gram | OOV 较友好 |
| ELMo | 上下文化 | BiLSTM | 核心重点是 Context |
| BERT | 上下文化 | Transformer | 常使用 WordPiece 等 Subword |
第 1 题速记
Word2Vec:上下文预测
CBOW:周围猜中间
Skip-gram:中间猜周围
GloVe:全局共现
FastText:字符 n-gram,OOV 更友好
ELMo:BiLSTM + 上下文化
BERT:Transformer + Self-Attention + 上下文化
2
3
4
5
6
7
第 2 题:CNN 卷积层权重参数量
完整题目
John最近正在学习搭建卷积神经网络,假设输入图像大小是15×15×3(w×h×t),经过一个含4个卷积核的卷积层,其中卷积核大小均为5×5,步长为2,无填充,在不计算bias的情况下,该卷积层共有多少权重参数?
A. 75
B. 100
C. 300
D. 600
正确答案
C. 300
逐步计算
输入:
其中:
15 -> 高/宽
15 -> 宽/高
3 -> 输入通道数(RGB)
2
3
单个卷积核空间大小:
但卷积核必须覆盖所有输入通道,所以实际单个卷积核:
单个卷积核参数:
共有 4 个卷积核:
因此:
卷积层参数量通用公式
不计算 bias:
其中:
:卷积核高度 :卷积核宽度 :输入通道数 :输出通道数 / 卷积核个数
如果计算 bias:
本题若算 bias:
为什么输入的 15×15 不参与权重参数量?
卷积核在整个图像空间上共享参数。
同一个卷积核会滑过很多空间位置,但不是每滑到一个位置就重新创建一套参数。
因此:
输入 H、W -> 影响输出特征图尺寸
卷积核 H、W + 输入/输出通道 -> 决定卷积权重数量
2
Stride 和 Padding 是否影响参数量?
通常:
Stride -> 不改变卷积核权重数量
Padding -> 不改变卷积核权重数量
2
它们主要影响输出特征图尺寸。
输出尺寸公式
普通卷积、无 dilation 时:
本题:
所以:
宽度同理:
输出通道数等于卷积核个数:
所以输出特征图:
CNN 参数题高频陷阱
陷阱 1:把输入 15×15 乘进去
错误。
陷阱 2:忘记输入通道数
RGB 图像不是单纯的
陷阱 3:忘记卷积核个数
4 个卷积核意味着:
陷阱 4:题目说“不计算 bias”却又加 4
本题明确不算 bias,所以答案是 300,不是 304。
第 2 题速记
卷积参数 =
核高 × 核宽 × 输入通道 × 输出通道
算 bias:
再 + 输出通道数
输入图像 H/W、Stride、Padding:
主要影响输出尺寸,不直接决定权重个数
2
3
4
5
6
7
8
第 3 题:GAN 模式崩塌
完整题目
在使用GAN网络的时候,会出现生成样本单一的现象。这属于生成对抗网络中的哪一类问题?
A. 模式崩塌
B. 欠拟合
C. 过拟合
D. 梯度消失
正确答案
A. 模式崩塌
A. 模式崩塌 —— 正确
GAN:
Generative Adversarial Network
生成对抗网络
2
包含:
- Generator:生成器
- Discriminator:判别器
理想情况下,不同随机噪声:
应该生成丰富多样的结果:
模式崩塌时:
即大量不同输入被映射成高度相似输出。
表现:
- 样本重复
- 多样性低
- 只覆盖真实数据分布的一小部分模式
B. 欠拟合 —— 错误
欠拟合:
模型能力不足或训练不足,连训练数据中的主要规律都没有学好。
典型表现:
- 训练集表现差
- 测试集表现也差
它不是“GAN 生成样本单一”的专门术语。
C. 过拟合 —— 错误
过拟合:
模型过度适应训练数据,训练集表现很好,但泛化能力下降。
GAN 模式崩塌的关键是:
生成分布缺少多样性
不是普通监督学习中的“训练集记得太死”。
D. 梯度消失 —— 错误
梯度消失属于优化问题。
例如判别器过强时,生成器可能获得较弱的有效梯度,训练困难。
它可能和 GAN 训练不稳定有关,但题目直接说:
生成样本单一
对应的专门术语是:
Mode Collapse
Mode / 模态是什么意思?
可以粗略理解为真实数据分布中的某一种典型模式。
例如人脸数据可能包含:
- 不同性别
- 不同年龄
- 不同发型
- 不同表情
- 不同姿态
如果生成器最后只会生成非常相似的一类脸,就说明它只覆盖了少数模式。
第 3 题速记
GAN + 生成样本单一
GAN + 大量输出重复
GAN + 多样性不足
=> Mode Collapse
2
3
4
第 4 题:椒盐噪声与中值滤波
完整题目
一张图片在存放过程中出现了很多小的噪声,或白或黑,对其扫描进行以下哪一个操作的去噪效果最好?
A. 均值滤波
B. 中值滤波
C. 高斯滤波
D. 拉普拉斯滤波
正确答案
B. 中值滤波
先判断噪声类型
题干:
很多小噪声
或白或黑
2
典型对应:
椒盐噪声
Salt-and-Pepper Noise
2
也属于典型脉冲噪声。
表现:
- 随机黑点
- 随机白点
- 像盐和胡椒撒在图像上
A. 均值滤波
均值滤波:
对局部窗口内的像素求平均。
优点:
- 简单
- 有平滑作用
缺点:
- 容易模糊边缘
- 极端黑白噪点会明显影响平均值
因此对椒盐噪声通常不如中值滤波。
B. 中值滤波 —— 正确
中值滤波:
将局部窗口像素排序,取中间值。
例如:
10 11 12
10 255 11
12 10 11
2
3
其中:
255
是孤立异常白点。
排序后中位数仍接近正常像素值 11,因此极端值容易被排除。
优势:
- 对椒盐噪声特别有效
- 对孤立极值鲁棒
- 相比均值滤波更有利于保持边缘
C. 高斯滤波
高斯滤波属于加权平滑。
与均值滤波不同:
- 中心位置权重大
- 离中心越远权重越小
更典型地用于:
高斯噪声
所以考试常见对应:
高斯噪声 -> 高斯滤波
D. 拉普拉斯滤波
Laplacian 属于二阶微分算子。
常用于:
- 边缘检测
- 图像锐化
- 增强高频细节
它不是典型椒盐噪声去除方法。
因为微分对高频成分敏感,噪声本身也属于高频成分,所以还可能把噪声强化。
图像滤波总记忆
椒盐噪声 -> 中值滤波
高斯噪声 -> 高斯滤波
均值滤波 -> 基础平滑,但容易模糊
拉普拉斯 -> 边缘检测 / 锐化
2
3
4
第 5 题:MindSpore 全连接层
完整题目
下列哪一项属于MindSpore的网络结构算子?
A. mindspore.nn.Dense
B. mindspore.layer.Dense
C. mindspore.nn.FC
D. mindspore.layer.FC
正确答案
A. mindspore.nn.Dense
Dense 是什么?
Dense:
Dense Layer
Fully Connected Layer
全连接层
2
3
数学形式:
其中:
:输入 :权重矩阵 :偏置 :输出
MindSpore 中典型写法
import mindspore.nn as nn
layer = nn.Dense(in_channels=128, out_channels=10)
2
3
完整路径:
mindspore.nn.Dense
其他选项为什么不对?
本题中的:
mindspore.layer.Dense
mindspore.nn.FC
mindspore.layer.FC
2
3
都不是对应的标准 Dense 层写法。
考试记忆:
MindSpore 网络层 -> mindspore.nn
全连接层 -> Dense
2
全连接层参数量顺带记忆
如果输入维度:
输出维度:
权重矩阵:
不算 bias:
算 bias:
这与 CNN 参数量题可以一起对比复习。
第 6 题:神经网络结构设计
完整题目
以下关于神经网络结构的设计,描述错误的是哪一项?
A. LSTM网络的输入层通常是3维的。
B. 在分类问题中,输出层的单元数一般等于分类的类型数。
C. 每个隐藏层的单元数越多分类精度越高。但是也会带来计算性能的下降,因此,要平衡质量和性能间的关系。
D. 隐藏层的层数越多,网络精度越高,所以可以设置尽可能多的隐藏层。
正确答案
D
A. LSTM 输入通常是 3 维 —— 正确
LSTM 处理序列数据。
常见输入形状:
(batch_size, sequence_length, feature_size)
即:
- batch:批次
- sequence/time step:时间步 / 序列长度
- feature:每个时间步的特征维度
部分框架可能采用:
(sequence_length, batch_size, feature_size)
具体顺序取决于框架设置,但“批次 + 时间 + 特征”三个维度是核心。
B. 分类问题输出层单元数一般等于类别数 —— 正确
对于常见单标签多分类任务:
输出层单元数 ≈ 类别数
例如:
猫
狗
鸟
汽车
2
3
4
4 分类,常见输出层就是 4 个单元。
10 分类:
out_features = 10
后续通常结合 softmax 或等价分类损失。
注意
不能把这句话机械推广到所有任务:
- 二分类有时使用 1 个 logit + sigmoid
- 多标签分类与普通单标签多分类不同
- 回归问题输出层设计完全不同
但在本题普通分类语境中,B 正确。
C. 隐藏层单元数增加需要权衡 —— 本题语境下正确
增加隐藏单元通常意味着:
- 模型容量增加
- 参数量增加
- 表达能力增强
- 计算量增加
- 显存占用增加
- 过拟合风险可能增加
所以需要平衡:
模型能力
泛化性能
训练成本
推理性能
2
3
4
需要特别注意:
“单元数越多分类精度越高”不能理解成无限成立的严格规律。
增加容量不保证验证集/测试集精度持续提高。
D. 隐藏层越多,精度必然越高 —— 错误
深度增加可能增强模型表达能力,但:
网络越深 ≠ 精度必然越高
可能带来:
- 过拟合
- 梯度消失
- 梯度爆炸
- 优化难度上升
- 训练时间增加
- 显存开销增加
- 推理延迟增加
- 数据不足时收益下降
因此不能“尽可能多地堆隐藏层”。
模型容量与泛化
神经网络设计本质上是折中。
模型太简单
可能:
欠拟合
模型太复杂
可能:
过拟合
通常要通过:
- 验证集
- 正则化
- Dropout
- Early Stopping
- 数据增强
- 合理架构
- 超参数搜索
来寻找更合适的模型复杂度。
梯度消失与梯度爆炸
深层网络中,反向传播需要多次链式求导。
如果梯度反复乘上很小的值:
梯度消失
如果反复乘上较大的值:
梯度爆炸
这也是“网络并非越深越好”的原因之一。
现代深层网络通过:
- ReLU 等激活
- Batch Normalization / Layer Normalization
- 残差连接
- 合理初始化
- 梯度裁剪
等技术改善训练。
第 7 题:MindSpore 静态图模式
完整题目
MindSpore深度学习框架可以支持动态图和静态图模式,下列哪一项是MindSpore静态图的设置代码?
A. context.set_context(mode=context.GPU_MODE)
B. context.set_context(mode=context.GRAPH_MODE)
C. context.set_context(mode=context.PYNATIVE_MODE)
D. context.set_context(mode=context.ASCEND_MODE)
正确答案
B. context.set_context(mode=context.GRAPH_MODE)
A. GPU_MODE —— 错误
GPU 是设备/硬件目标概念,不是本题的执行模式名称。
B. GRAPH_MODE —— 正确
context.set_context(mode=context.GRAPH_MODE)
对应:
图模式
静态图模式
2
典型思想:
- 先构建/编译计算图
- 进行图级优化
- 再执行
通常有利于高性能执行。
C. PYNATIVE_MODE —— 错误
context.PYNATIVE_MODE
对应:
动态图 / 即时执行模式
特点:
- 更接近普通 Python 执行
- 更方便逐步调试
- 操作执行后较快得到结果
D. ASCEND_MODE —— 错误
Ascend 属于硬件设备平台概念,而不是这里的图执行模式。
执行模式和设备一定分开
执行模式
GRAPH_MODE
PYNATIVE_MODE
2
设备
CPU
GPU
Ascend
2
3
不要混为一谈。
静态图 vs 动态图
| 对比 | GRAPH_MODE | PYNATIVE_MODE |
|---|---|---|
| 类型 | 静态图/图模式 | 动态图 |
| 执行 | 先构图/编译再执行 | 即时执行 |
| 调试体验 | 相对偏图编译 | 更接近 Python |
| 优化 | 更便于整体图优化 | 灵活直观 |
考试口诀:
GRAPH -> 静态图
PYNATIVE -> 动态图
GPU/Ascend -> 设备,不是执行模式
2
3
第 8 题:MindSpore 图像增强模块
完整题目
MindSpore深度学习框架专门用于图像增强的是以下哪一个模块?
A. mindspore.numpy
B. mindspore.nn
C. mindspore.ops
D. mindspore.dataset.vision
正确答案
D. mindspore.dataset.vision
A. mindspore.numpy
主要用于:
NumPy 风格数值计算
不是专门图像增强模块。
B. mindspore.nn
主要包含:
- 神经网络层
- 损失函数
- 网络构建相关组件
例如:
mindspore.nn.Dense
C. mindspore.ops
主要提供:
张量操作
各种算子
2
D. mindspore.dataset.vision —— 正确
主要面向:
视觉数据预处理
图像变换
图像增强
2
3
典型操作:
- Resize
- Crop
- RandomCrop
- RandomHorizontalFlip
- Normalize
- Decode
- ColorAdjust 等
什么是数据增强?
训练时对样本做随机变换,例如:
翻转
裁剪
旋转
缩放
颜色变化
2
3
4
5
目的:
- 增加训练样本多样性
- 缓解过拟合
- 提高鲁棒性
- 改善泛化能力
注意:
数据增强通常不是简单复制出一堆永久的新文件,而是在数据流水线中动态产生变换后的训练样本。
数据增强与预处理的区别
两者有重叠,但可以粗略理解:
预处理
目标偏向:
让数据满足模型输入要求
例如:
- Resize
- Normalize
- Decode
- 类型转换
数据增强
目标偏向:
人为增加训练数据变化,提高泛化
例如:
- RandomCrop
- RandomFlip
- 随机颜色变化
MindSpore 模块速记
mindspore.nn
-> 网络层
mindspore.ops
-> 张量算子
mindspore.numpy
-> NumPy 风格计算
mindspore.dataset.vision
-> 图像预处理 / 图像增强
2
3
4
5
6
7
8
9
10
11
第 9 题:NLP 共现窗口
完整题目
在“Deep learning is my favorite subject”这句话中,如果窗口长度为3,则以下哪两个词的共现频率为0?
A. Deep与subject
B. my与is
C. learning与is
D. favorite与subject
正确答案
A. Deep与subject
第一步:分词并编号
句子:
Deep learning is my favorite subject
编号:
1 Deep
2 learning
3 is
4 my
5 favorite
6 subject
2
3
4
5
6
第二步:窗口长度为 3,依次滑动
[Deep, learning, is]
[learning, is, my]
[is, my, favorite]
[my, favorite, subject]
2
3
4
第三步:逐项判断
A. Deep 与 subject —— 共现频率为 0
Deep 只在靠前窗口出现。
subject 只在最后窗口出现。
没有任何一个长度为 3 的窗口同时包含二者。
所以:
B. my 与 is —— 不为 0
同时出现在:
[learning, is, my]
[is, my, favorite]
2
C. learning 与 is —— 不为 0
同时出现在:
[Deep, learning, is]
[learning, is, my]
2
D. favorite 与 subject —— 不为 0
同时出现在:
[my, favorite, subject]
什么是共现窗口?
共现窗口用于统计:
某个词附近一定范围内出现了哪些词。
这类统计是传统 NLP 的重要基础。
相关:
- 共现矩阵
- 分布语义模型
- GloVe
- 词语相似度分析
- 传统词表示
共现矩阵
可以构建一个矩阵:
表示:
词
与词 在指定窗口规则下共同出现的次数。
如果两个词经常在相似上下文中出现,它们的分布特征往往更相似。
这与前面“分布假设”直接相关。
窗口长度 vs 窗口半径
这是非常容易混淆的点。
定义 1:窗口长度 = 3
可能表示:
每次取连续 3 个词
本题就是按这个规则。
定义 2:window size = 3
有些教材可能表示:
中心词左边看 3 个
中心词右边看 3 个
2
也就是窗口半径为 3。
因此做题时:
必须以题目、教材或示例给出的定义为准,不能看到“window size=3”就机械套一种解释。
共现题最稳做法
1. 分词
2. 给词编号
3. 明确窗口定义
4. 写出所有滑动窗口
5. 检查两个词是否至少共同出现一次
2
3
4
5
不要只凭两个词在句子中的“感觉距离”作答。
全局知识串联
1. NLP 技术路线
One-hot
↓
稠密 Embedding
↓
Word2Vec / GloVe
↓
FastText(Subword)
↓
ELMo(上下文化)
↓
BERT(Transformer 上下文化)
2
3
4
5
6
7
8
9
10
11
2. Word2Vec、GloVe、FastText、ELMo、BERT 对照
| 模型 | 核心思想 | 静态/动态 | 子词 | 关键架构/关键词 |
|---|---|---|---|---|
| Word2Vec | 上下文预测 | 静态 | 原版否 | CBOW / Skip-gram |
| GloVe | 全局共现 | 静态 | 原版否 | Co-occurrence |
| FastText | 词 + 字符 n-gram | 静态 | 是 | Subword |
| ELMo | 双向语言模型 | 上下文化 | 非核心考点 | BiLSTM |
| BERT | 双向上下文化预训练 | 上下文化 | 常用 | Transformer / Self-Attention |
3. CNN 与 Dense 参数量对比
Dense
Conv2D
如果题目明确不算 bias,就去掉最后一项。
4. 欠拟合、过拟合、模式崩塌、梯度消失区别
| 概念 | 核心表现 |
|---|---|
| 欠拟合 | 模型连主要规律都没学好 |
| 过拟合 | 训练集很好,泛化变差 |
| 模式崩塌 | GAN 输出高度单一 |
| 梯度消失 | 反向传播梯度越来越小,难以更新 |
5. 图像滤波对应关系
| 问题/目标 | 常见方法 |
|---|---|
| 椒盐噪声 | 中值滤波 |
| 高斯噪声 | 高斯滤波 |
| 基础平滑 | 均值滤波 |
| 边缘检测/锐化 | 拉普拉斯 |
6. MindSpore 高频模块
| 功能 | 对应 |
|---|---|
| 全连接层 | mindspore.nn.Dense |
| 神经网络层 | mindspore.nn |
| 张量算子 | mindspore.ops |
| NumPy 风格计算 | mindspore.numpy |
| 图像增强 | mindspore.dataset.vision |
| 静态图 | GRAPH_MODE |
| 动态图 | PYNATIVE_MODE |
| 设备 | CPU / GPU / Ascend |
全局高频易错点总表
| 考点 | 正确理解 | 常见误区 |
|---|---|---|
| One-hot | 高维稀疏离散表示 | 认为能很好表达语义相似度 |
| Embedding | 稠密连续表示 | 与 One-hot 混淆 |
| Word2Vec | CBOW + Skip-gram | 认为只有一种结构 |
| CBOW | 上下文预测中心词 | 和 Skip-gram 记反 |
| Skip-gram | 中心词预测上下文 | 和 CBOW 记反 |
| Negative Sampling | 减少完整 softmax 计算 | 误认为是一种词向量模型 |
| GloVe | 全局共现统计 | 认为原始 GloVe 擅长 OOV |
| FastText | 字符 n-gram / Subword | 误认为是动态词向量 |
| OOV | 词表中不存在 | 与低频词混淆 |
| Rare Word | 词表中存在但频率低 | 认为一定是 OOV |
| ELMo | BiLSTM 上下文化表示 | 当作静态词向量 |
| BERT | Transformer 上下文化表示 | 把最终表示当固定查表向量 |
| Token | 模型处理单位 | 认为一定等于完整 Word |
| Subword | 词内部片段 | 与 Context 混淆 |
| CNN 参数 | 把输入 H/W 乘进去 | |
| CNN bias | 每个输出通道通常一个 | 每个空间位置都加一个独立 bias |
| Stride | 影响输出尺寸 | 认为改变卷积核权重数量 |
| Padding | 影响输出尺寸 | 认为改变卷积核权重数量 |
| GAN 样本单一 | Mode Collapse | 误选过拟合 |
| 椒盐噪声 | 中值滤波 | 误选高斯滤波 |
| 高斯噪声 | 高斯滤波 | 和椒盐噪声混淆 |
| 拉普拉斯 | 边缘/锐化 | 当作常规去噪 |
| MindSpore Dense | mindspore.nn.Dense | 写成 FC / layer.Dense |
| 静态图 | GRAPH_MODE | 把 GPU / Ascend 当模式 |
| 动态图 | PYNATIVE_MODE | 和 GRAPH_MODE 混淆 |
| GPU / Ascend | 设备目标 | 当作动态图/静态图模式 |
| 图像增强 | mindspore.dataset.vision | 与 nn / ops 混淆 |
| 网络深度 | 不是越深越好 | 层数越多精度必然越高 |
| 隐藏单元 | 容量与成本需权衡 | 越多一定越好 |
| 分类输出层 | 常见多分类通常对应类别数 | 不区分二分类/多标签/回归 |
| LSTM 输入 | 常见 3 维序列张量 | 忽略 batch/time/feature |
| 共现窗口 | 同一窗口中出现即共现 | 不区分窗口长度与半径定义 |
本次错题重点强化
- 原始 GloVe 不擅长原生处理 OOV;FastText 的典型优势是字符 n-gram / Subword。
- 能处理 OOV 不等于动态词向量,FastText 仍属于典型静态表示。
- BERT/ELMo 的核心是上下文化表示,同一个词可以因上下文不同得到不同表示。
- CBOW 是周围猜中间;Skip-gram 是中间猜周围。
- 卷积参数量不要把输入图像长宽乘进去。
- 卷积核必须覆盖全部输入通道。
- Stride、Padding 主要影响输出尺寸,不直接改变卷积核权重数量。
- GAN 输出单一不是普通过拟合,而是 Mode Collapse。
- 黑白椒盐噪声优先中值滤波,不是高斯滤波。
- 拉普拉斯主要对应边缘检测和锐化。
- MindSpore 的 Dense 在
mindspore.nn下。 - 静态图是
GRAPH_MODE,动态图是PYNATIVE_MODE。 - GPU / Ascend 是设备概念,不是执行模式。
- 图像增强模块是
mindspore.dataset.vision。 - 神经网络层数、单元数都不是越多越好。
- LSTM 常见输入包含 batch、sequence/time、feature 三个维度。
- 共现窗口题先编号、再滑窗,是最稳的做法。
速记口诀
词向量
One-hot:高维稀疏
Embedding:低维稠密
Word2Vec:上下文做预测
CBOW:周围猜中间
Skip-gram:中间猜周围
GloVe:全局共现统计
FastText:字符 n-gram 抗 OOV
ELMo:BiLSTM + 动态上下文
BERT:Transformer + Self-Attention + 动态上下文
2
3
4
5
6
7
8
9
CNN
卷积参数只看:
核高 × 核宽 × 输入通道 × 输出通道
算 bias:
再 + 输出通道数
Stride / Padding:
主要影响输出尺寸
2
3
4
5
6
7
8
GAN
GAN 生成样本都差不多
= Mode Collapse
2
图像处理
椒盐噪声 -> 中值滤波
高斯噪声 -> 高斯滤波
均值滤波 -> 基础平滑
拉普拉斯 -> 边缘 / 锐化
2
3
4
MindSpore
全连接层 -> mindspore.nn.Dense
静态图 -> GRAPH_MODE
动态图 -> PYNATIVE_MODE
图像增强 -> mindspore.dataset.vision
2
3
4
神经网络结构
网络不是越深越好
单元不是越多越好
模型容量、过拟合、计算量要平衡
2
3
NLP 共现
先分词
-> 编号
-> 明确窗口定义
-> 滑动窗口
-> 看两个词是否进入过同一个窗口
2
3
4
5
一页式考前复习版
【词表示】
One-hot:高维、稀疏、语义关系弱
Embedding:低维、稠密、可表达语义关系
余弦相似度:衡量向量方向相似程度
【Word2Vec】
CBOW:Context -> Center
Skip-gram:Center -> Context
Negative Sampling:降低大词表训练计算量
【GloVe】
Global Co-occurrence
原始 word-level GloVe 不擅长 OOV
【FastText】
Subword
Character n-gram
OOV 更友好
但仍是典型静态词表示
【ELMo】
BiLSTM
Contextualized Representation
【BERT】
Transformer Encoder
Self-Attention
Contextualized Representation
常使用 WordPiece 等 Subword Tokenization
【重要区分】
Rare Word ≠ OOV
Subword ≠ Context
Token ≠ 必然等于 Word
能处理 OOV ≠ 动态词向量
【CNN】
参数量 = Kh × Kw × Cin × Cout
算 bias:+ Cout
输入 H/W、Stride、Padding 主要影响输出尺寸
【GAN】
生成结果单一、多样性丢失 -> Mode Collapse
【图像处理】
椒盐噪声 -> Median Filter
高斯噪声 -> Gaussian Filter
均值滤波 -> 平滑
Laplacian -> Edge / Sharpen
【MindSpore】
Dense -> mindspore.nn.Dense
静态图 -> context.GRAPH_MODE
动态图 -> context.PYNATIVE_MODE
图像增强 -> mindspore.dataset.vision
GPU / Ascend -> 设备,不是执行模式
【神经网络设计】
层越多 ≠ 一定越好
单元越多 ≠ 一定越好
常见多分类输出单元数 ≈ 类别数
LSTM 常见输入:batch × sequence × feature
【共现窗口】
窗口长度 3 -> 本题每次看连续 3 个词
两个词从未同时落进一个窗口 -> 共现频率 0
不同教材对 window size 定义可能不同,按题目定义作答
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67