深度学习与神经网络基础

共 20 题
📑 题目列表 20 题
#
★★★

1. 感知机为什么不能解决异或问题,多层感知机加入非线性激活函数后能力如何提升?

感知机为什么不能解决异或(XOR)问题?多层感知机加入非线性激活函数后,其能力是如何提升的?

  • 感知机的线性可分局限
  • XOR 的线性不可分性
  • 非线性激活与多层网络的表现力

感知机是单层线性模型,输出为输入加权和经过阈值/阶跃函数,只能划分线性可分的数据(用一条直线把两类分开)。XOR 问题中,(0,0)、(1,1) 为一类,(0,1)、(1,0) 为一类,四点在平面上的分布无法用一条直线分开,因此感知机无法求解 XOR。多层感知机(MLP)通过引入隐藏层与非线性激活函数(如 Sigmoid、ReLU)解决这一问题:非线性激活使每层输出不是输入的线性组合,多层堆叠后网络可以逼近任意非线性决策边界(通用近似定理),从而能够表示 XOR 等非线性可分关系。ReLU 等非线性激活还避免了多层线性叠加退化为单层线性模型的问题。

XOR 是最经典的"非线性不可分"例子,它揭示了单层线性模型的根本局限。多层+非线性的价值在于:隐藏层将输入映射到非线性空间中,使得原本不可分的数据在高维特征空间中变得可分。这也是深度学习的基石——"非线性"是网络表达力的来源。

#
★★★

2. 反向传播算法如何用链式法则计算每层梯度,梯度消失与梯度爆炸的成因和常用缓解手段是什么?

反向传播算法如何用链式法则计算每层梯度?梯度消失与梯度爆炸的成因和常用缓解手段是什么?

  • 反向传播与链式法则
  • 梯度消失/爆炸的成因
  • 常用缓解手段

反向传播通过链式法则从损失函数开始,逐层向前计算每个参数对损失的梯度:先计算输出层损失对输出的导数,再沿网络逐层回传,用"上一层梯度 × 本层局部导数"得到各层参数梯度,最后用梯度下降更新。梯度消失指深层网络的梯度在反向传播中逐层相乘后趋近于 0,底层参数几乎不更新,常见成因是 Sigmoid/Tanh 的导数在两端饱和(最大不超过 0.25),多层相乘后指数衰减;梯度爆炸则指梯度逐层相乘后指数增长,导致参数更新过大、损失发散,常见于网络层数很深或权重初始化过大。缓解手段:使用 ReLU 等导数不为 0 的激活,合理的权重初始化(Xavier/He),批归一化,残差连接(ResNet),梯度裁剪(针对爆炸),以及 LSTM/GRU 的门控结构。

反向传播的本质是"嵌套函数的复合求导",链式法则保证梯度逐层回传。梯度消失/爆炸的根源是"多层梯度连乘"的指数效应,与激活函数导数、网络深度、初始化相关。缓解的核心是"让梯度在传播过程中保持合理尺度"。

#
★★★

3. ReLU、Sigmoid、Tanh、LeakyReLU 等激活函数的特性与选择依据,为什么 ReLU 成为默认选择?

ReLU、Sigmoid、Tanh、LeakyReLU 等激活函数各自有什么特性与选择依据?为什么 ReLU 成为默认选择?

  • 各激活函数的公式与导数
  • 饱和、非零中心、死亡神经元问题
  • ReLU 的优势与局限

Sigmoid 输出映射到 (0,1),导数在两端饱和(梯度消失),且非零中心(输出恒正);Tanh 输出到 (-1,1),是零中心,但同样存在饱和问题,收敛通常比 Sigmoid 好。ReLU = max(0,x),计算简单、导数在正区间恒为 1、无饱和,能显著缓解梯度消失并加速收敛,但会产生"死亡神经元"(负输入时梯度为 0,参数不再更新)。LeakyReLU 在负区间给一个小的非零斜率(如 0.01),缓解死亡神经元问题。ReLU 成为默认选择的原因:计算与梯度极简单、稀疏激活性、无饱和梯度消失、收敛快,且实践中效果稳定;其死亡神经元问题可通过 LeakyReLU、合理初始化与小学习率缓解。Sigmoid 在输出层做二分类、Tanh 有时用于中间层,但隐藏层默认 ReLU。

激活函数选择的核心是"梯度流"与"计算效率"。Sigmoid/Tanh 饱和导致梯度消失,ReLU 用分片线性规避饱和,是深度网络可行性的关键。ReLU 的死亡神经元是主要代价,但通过变体与工程手段可缓解,故成为默认。

#
★★★

4. SGD、Momentum、Adam 的更新规则与优缺点,Adam 为什么通常收敛更快、但有时泛化略差?

SGD、Momentum、Adam 的更新规则与优缺点是什么?为什么 Adam 通常收敛更快,但有时泛化略差?

  • 三种优化器的更新规则
  • 各自优缺点
  • Adam 收敛快与泛化差异的原因

SGD 直接用当前梯度更新参数,简单但收敛慢、易震荡、对学习率敏感。Momentum 在 SGD 基础上累积历史梯度方向(动量),加速收敛、抑制震荡、帮助越过局部极小。Adam 结合动量(一阶矩)与 RMSProp 的自适应学习率(二阶矩),为每个参数自适应调整学习率,还包含偏差校正,通常收敛快、对学习率不敏感、适合稀疏与大规模参数。Adam 收敛快的原因是其自适应学习率按参数梯度量级缩放,同时有动量加速;但有时泛化略差,可能原因是自适应学习率使模型在训练后期接近最优时仍保持较大步长,难以进入平坦的极小值区(泛化更好的区域),且过度依赖自适应导致对某些问题的解不够正则。因此实践中常在后期切换到 SGD 或减小学习率。

优化器本质是"如何用梯度与历史信息更新参数"。Adam 的自适应学习率与动量是它收敛快的来源;泛化差异的讨论属于"优化的收敛性与泛化性"的权衡,Adam 偏向快速收敛到尖锐极小,SGD 更易收敛到平坦极小泛化更好。

#
★★★

5. CNN 的卷积、池化与全连接层各起什么作用,感受野与参数量如何随层数变化?

CNN 的卷积、池化与全连接层各起什么作用?感受野与参数量如何随层数变化?

  • 卷积、池化、全连接层的作用
  • 感受野的定义与增长
  • 参数量与权值共享

卷积层通过卷积核在输入上滑动,提取局部特征(边缘、纹理等),并通过权值共享大幅减少参数量;不同卷积核提取不同特征,深层卷积组合出高层语义特征。池化层(最大/平均池化)对局部区域下采样,降低空间分辨率与计算量,增大感受野,并带来一定的平移不变性。全连接层在最后将特征图展平后映射到输出类别,负责最终的全局分类/回归。感受野指某个输出神经元能"看到"的输入区域大小,随层数增加而增大(每层卷积/池化都会扩大感受野)。参数量方面,卷积层由于权值共享(一个核在所有位置复用),参数量 = 核大小×输入通道×输出通道,与输入尺寸无关,远小于全连接层;而全连接层参数量是输入像素数×输出数,往往最大,这也是 CNN 比全连接网络参数量少的原因。

CNN 的三大层分别承担"特征提取、降采样、全局分类"。权值共享让卷积层参数量可控,是 CNN 擅长图像的关键。感受野随层数扩大,使深层能捕捉全局信息;池化进一步压缩空间并扩大感受野。

#
★★★

6. RNN 为什么难以建模长序列,LSTM/GRU 的门控机制如何缓解长期依赖问题?

RNN 为什么难以建模长序列?LSTM/GRU 的门控机制如何缓解长期依赖问题?

  • RNN 的梯度消失与长依赖
  • LSTM 的遗忘门/输入门/输出门
  • GRU 的简化门控

标准 RNN 通过隐藏状态沿时间步传递信息,但反向传播随时间展开后,梯度会因连乘(Sigmoid/Tanh 导数小于 1)而指数衰减,导致早期时刻的信息无法影响后期预测,即难以建模长序列的长期依赖(梯度消失)。LSTM 引入三个门控:遗忘门控制保留多少旧细胞状态、输入门控制写入多少新信息、输出门控制输出比例,并通过"细胞状态"沿时间轴传递,细胞状态上的加性更新(而非乘法)使梯度可以比较顺畅地回传,缓解长期依赖。GRU 是 LSTM 的简化,将遗忘门与输入门合并为更新门,并引入重置门,参数量更少、训练更快,效果通常与 LSTM 相当。门控机制的核心是让网络"自主决定"哪些信息该保留、哪些该遗忘,从而在长序列中保持有效信息。

长序列问题根源是"梯度随时间的连乘衰减"。LSTM 用加性细胞状态让梯度走"高速公路",避免连乘消失;门控让网络学习长期记忆的取舍。GRU 在降低参数的同时保留核心门控能力,是更轻量的选择。

#
★★★

7. 注意力机制的核心思想是什么,Query/Key/Value 如何通过相似度加权得到上下文表示?

注意力机制的核心思想是什么?Query/Key/Value 如何通过相似度加权得到上下文表示?

  • 注意力机制的核心思想
  • Q/K/V 的角色
  • 相似度加权与上下文表示

注意力机制的核心思想是"按相关程度自动聚焦",即不再把所有输入平等对待,而是根据查询与各个输入的相关性分配权重,让模型关注与当前任务最相关的部分。具体地,每个输入被映射为 Query、Key、Value 三个向量:Query 表示当前关注点,Key 表示各输入的可比对标签,Value 承载实际内容。计算过程:对给定的 Query,与每个 Key 做相似度计算(如点积 Q·K,再除以 √d_k 缩放),经 Softmax 归一化为权重,再对对应 Value 加权求和,得到上下文表示。相关度高的输入获得更大权重,它们在输出表示中占比更高。缩放点积可防止点积过大导致 Softmax 梯度过小。

注意力把"信息检索"思想引入模型:Query 检索 Key,按相似度加权取 Value。相比固定权重,注意力是动态的、随输入变化的,能灵活关注不同位置,是 Transformer 等模型的核心,也是其能建模长范围依赖的关键。

#
★★

8. 权重初始化(Xavier/He)与批归一化(BatchNorm)为什么能提升训练稳定性,原理分别是什么?

权重初始化(Xavier/He)与批归一化(BatchNorm)为什么能提升训练稳定性?它们各自的原理是什么?

  • Xavier/He 初始化的原理
  • BatchNorm 的原理
  • 两者对梯度流的作用

Xavier 初始化根据网络层输入/输出维度设置权重方差(如 Uniform(-√(6/(fan_in+fan_out)), √(6/(fan_in+fan_out)))),使信号在前向与反向传播中保持方差稳定,避免逐层放大或缩小,从而缓解梯度消失/爆炸,适合 Sigmoid/Tanh 等激活。He 初始化针对 ReLU 做了调整(方差更大,如 2/fan_in),因为 ReLU 会在负区间置零、损失一半方差,需补偿。批归一化在训练时对每个 batch 的每一层激活做标准化(减均值除标准差,再乘以可学习参数 γ、β 重构),使各层输入分布稳定,缓解内部协变量偏移;它允许更大学习率、减少对初始化与 Dropout 的依赖,并带来一定的正则化效果。原理上,两者都保证了"各层激活与梯度的尺度合理",从而让训练更稳定快速。

初始化与归一化都是"让信号尺度可控"的手段。Xavier/He 从源头控制权重方差,BatchNorm 在训练过程中动态规范化激活分布,二者互补,共同提升深层网络训练的稳定性与收敛速度。

#
★★

9. 卷积的 stride、padding 与通道数如何决定输出尺寸与计算量,1×1 卷积的作用是什么?

卷积的 stride、padding 与通道数如何决定输出尺寸与计算量?1×1 卷积的作用是什么?

  • 输出尺寸公式
  • stride、padding、通道数对计算量的影响
  • 1×1 卷积的作用

卷积输出尺寸为 out = ⌊(in + 2·padding - kernel)/stride⌋ + 1。stride 越大输出尺寸越小、计算量越小;padding(通常为 0/1)在输入边缘补零,可保持或调控输出尺寸;输出通道数由卷积核数量决定,每个核输出一个通道,输出通道数越大,参数量与计算量越大。计算量(FLOPs)正比于 输出尺寸×输出通道×核大小×输入通道。1×1 卷积(核大小为 1)不改变空间尺寸,作用在于:其一,在通道维度上做"线性组合/特征融合",用于改变通道数(升维或降维);其二,作为瓶颈层(bottleneck)先降维再升维,大幅减少计算量;其三,引入非线性(配合激活函数)增强表示。它常用于 ResNet 的瓶颈、MobileNet 的通道调整等。

输出尺寸是"stride、padding、核大小、输入尺寸"的显式函数,掌握公式即可推导。1×1 卷积的价值在于"通道维度的线性变换",是高效降维与特征融合的关键工具,对减少计算量至关重要。

#
★★

10. 数据增强、权重衰减与 Dropout 对深度网络过拟合的缓解机制有何不同?

数据增强、权重衰减与 Dropout 对深度网络过拟合的缓解机制有何不同?

  • 三种正则化手段的机制
  • 数据层面 vs 参数层面 vs 结构层面
  • 各自适用场景

数据增强从数据层面出发,通过对训练样本施加随机变换(图像旋转、翻转、裁剪、颜色扰动;文本加噪声、同义替换等)生成更多样化的样本,增加有效数据量、扩大数据分布覆盖,从而降低模型对特定样本的过度依赖。权重衰减(L2 正则化)从参数层面出发,在损失中加 Σθ² 惩罚,抑制权重过大,使模型更平滑、降低对个别特征的敏感度。Dropout 从结构层面出发,训练时随机丢弃部分神经元,迫使网络学习冗余且鲁棒的特征,相当于隐式集成多个子网络,降低过拟合。三者作用层面不同:数据增强本质是"增加数据",权重衰减是"约束参数",Dropout 是"破坏结构依赖"。实践中常组合使用,且数据增强在数据量小时尤其有效。

过拟合的根源是"模型记住了训练集噪声",三种手段分别从"数据多样、参数幅值、结构冗余"三个角度对抗。掌握作用层面有助于判断何时用哪种:数据稀缺用增强,模型过大用权重衰减,网络过深过拟合用 Dropout。

#
★★

11. 交叉熵损失与对比损失分别适合什么任务,损失函数的选择如何影响优化与表示学习?

交叉熵损失与对比损失分别适合什么任务?损失函数的选择如何影响优化与表示学习?

  • 交叉熵与对比损失的适用任务
  • 两种损失的作用机制
  • 损失函数对表示学习的影响

交叉熵损失适用于分类任务(单分类、多分类),通过度量预测分布与真实分布的距离来监督模型输出类别概率,是分类网络的标准损失。对比损失(Contrastive Loss)适用于度量学习/表示学习任务,如人脸识别、相似度检索、图像-文本匹配,其思想是让同类样本(正对)在特征空间中距离更近、异类样本(负对)距离更远,通过构造正负样本对来学习有判别力的嵌入表示。对比损失(如 InfoNCE、Triplet Loss)适合用嵌入向量做相似度比较的任务,而交叉熵直接监督类别。损失函数的选择直接影响优化:交叉熵与 Softmax 配合梯度良好、优化稳定;对比损失需要精心采样负样本(难负样本挖掘),否则正负样本不平衡会影响表示质量。损失函数决定了"网络学什么"——交叉熵学分类边界,对比损失学嵌入相似性。

两类损失归属于不同的学习范式:交叉熵是"判别式分类",对比损失是"度量/表示学习"。选择取决于下游是否需要相似度表示。对比学习的效果高度依赖负样本策略,这是其工程难点。

#
★★

12. 词嵌入(Embedding)相比 one-hot 编码的优势是什么,稠密低维向量如何表达语义相似性?

词嵌入(Embedding)相比 one-hot 编码的优势是什么?稠密低维向量如何表达语义相似性?

  • one-hot 的缺陷
  • 词嵌入的稠密低维特性
  • 语义相似性的向量表达

one-hot 编码的词表有 V 个词,每个词用 V 维向量表示,其中仅一位为 1。其缺陷是:维度随词表线性增长、极为稀疏、计算与存储开销大,且任意两个词向量正交(内积为 0),无法表达词与词之间的语义关联。词嵌入(Embedding)把每个词映射为固定维数(如 128/512)的稠密低维向量,通过训练(如 Word2Vec、GloVe 或神经网络嵌入层)让语义相近的词在向量空间中距离更近。稠密向量的每个维度都承载部分语义信息,词与词的语义相似性可通过余弦相似度或点积计算:语义相近的词(如"猫"与"狗"、"国王"与"王后")向量更接近,且向量之间还保持语义关系(如 v(国王)-v(男人)+v(女人)≈v(王后))。相比 one-hot,嵌入维度小、可训练、能表达语义,是神经网络的输入表示标准。

one-hot 是"无语义的稀疏编码",嵌入是"有语义的稠密表示"。嵌入从数据中学习语义相似性,这与"分布式表示"思想一致——语义由整个向量共同承载,而非单一位置。这是 NLP 与很多序列模型的基础。

#
★★

13. 模型容量与数据量的匹配原则,小数据场景为什么应选简单模型或预训练模型?

模型容量与数据量应如何匹配?小数据场景为什么应选择简单模型或预训练模型?

  • 模型容量与数据量的匹配
  • 小数据的过拟合风险
  • 预训练与迁移的作用

模型容量应与数据量匹配:数据量越大,可容纳的模型容量越高;数据量小,应选择容量较小的模型,否则易过拟合。小数据场景下,容量大的模型(如深层网络)会记住训练集噪声,泛化差;而简单模型(线性模型、浅层树、正则化强的模型)参数量少、假设更强,在有限数据下更不易过拟合。选择预训练模型(如预训练 BERT、ResNet)则利用在大型通用数据集上学习到的通用特征,再在小数据上微调,通过迁移学习把"大数据的知识"注入小任务,既获得强表示能力又避免在小数据上从零训练导致的过拟合。因此小数据时的原则是"降低模型容量或借用预训练知识",以偏差-方差权衡中最优复杂度的视角,容量过大会导致方差过大。

核心是"容量-数据匹配"与偏差-方差权衡。小数据下过拟合(高方差)是主要矛盾,简单模型或预训练模型(降低有效容量、引入先验)都能缓解。这也是为什么小样本场景首选迁移学习或传统方法。

#
★★

14. 学习率调度与训练稳定,warmup、余弦退火与阶梯衰减各自的适用场景,学习率与批量大小如何联动调整?

学习率调度中 warmup、余弦退火与阶梯衰减各自适用什么场景?学习率与批量大小如何联动调整?

  • 三种学习率调度的原理
  • 适用场景
  • 学习率与批量大小的联动

warmup 在训练初期让学习率从很小逐步增大到目标值,避免初始阶段梯度过大导致训练不稳定,尤其适合预训练大批量、深层网络(如 Transformer 训练)。阶梯衰减(Step Decay)在固定训练轮次后按系数降低学习率,实现简单、可控,适合训练阶段明确、需要精细控制的场景。余弦退火(Cosine Annealing)依据余弦函数平滑地把学习率从高降到低,曲线平滑、无骤降,适合长时间训练,且周期式余弦退火(warm restarts)可反复跳出局部最优。学习率与批量大小联动:线性缩放规则(Linear Scaling)指出,增大批量 N 倍时,学习率可相应增大 √N 或 N 倍以保持梯度更新等价;大批量通常配合更大学习率与更长的 warmup,因为在总梯度估计更准时加大步长可加速收敛,但过大批量需小心优化与泛化的权衡。

学习率调度是"训练过程中动态调整步长"的策略,针对不同训练阶段(起步、中期、收尾)选择对应策略。warmup 解决初始不稳定,余弦/阶梯解决后期收敛。理解"批量与学习率的平方根/线性缩放"是规模化训练的关键。

#
★★

15. 梯度裁剪与梯度累积,梯度爆炸时梯度裁剪的作用,小显存下梯度累积与真正增大批量在统计上是否等价?

梯度裁剪与梯度累积分别解决什么问题?小显存下梯度累积与真正增大批量在统计上是否等价?

  • 梯度裁剪的作用
  • 梯度累积的原理
  • 梯度累积与大批量的统计等价性

梯度裁剪(Gradient Clipping)在梯度范数超过阈值时把梯度缩放到阈值内,防止梯度爆炸导致参数更新过大、损失发散,常用于 RNN、Transformer 等深层/长序列网络与大批量训练。梯度累积(Gradient Accumulation)在小显存下,把大 batch 拆成多个小 batch 分别前向与反向求梯度,但暂不更新参数,将多次梯度累加后再做一次参数更新,从而在显存不足时模拟大 batch 训练。统计上,梯度累积得到的梯度是大 batch 梯度的无偏估计(多个小 batch 梯度之和等于大 batch 梯度),因此与"真正增大 batch"在梯度方向上等价;差别在于 BN(批归一化)的统计量仍按小 batch 计算,且梯度噪声与数值顺序略有差异,所以不完全等价,但绝大多数情况下可以近似替代。梯度累积的代价是训练步数变多、速度变慢。

梯度裁剪解决"梯度量级"问题,梯度累积解决"显存容量"问题,二者常配合使用。梯度累积的等价性核心在于"梯度是线性的,和可分可积",但需注意 BN 与优化器动量等细节。

#
★★

16. 批归一化在训练与推理的差异,训练时按 batch 统计、推理时用滑动均值,BatchNorm 与 LayerNorm 的适用场景差异如何?

批归一化在训练与推理时有何差异?BatchNorm 与 LayerNorm 的适用场景有何差异?

  • BatchNorm 训练与推理的统计量差异
  • 归一化维度
  • BN 与 LN 的适用场景

BatchNorm 沿 batch 维度归一化:训练时用当前 batch 的均值与方差对每个样本进行标准化,并更新滑动均值/方差;推理时不再使用 batch 统计,而是用训练期间累积的滑动均值/方差(全局统计量)做归一化,因为推理时每次可能只有一个样本或 batch 很小,无法获得可靠的 batch 统计量。BatchNorm 依赖 batch 大小,batch 过小(如 batch=1)或分布随 batch 剧烈变化时不稳定,且对序列长度可变的任务(如 NLP)不友好。LayerNorm 沿特征(通道)维度归一化,对每个样本独立计算统计量,与 batch 大小无关,因此适合 batch 小、序列长度可变、样本间统计量独立的场景,如 RNN、Transformer。二者差异本质是"归一化维度":BN 跨样本归一化,LN 跨特征归一化。

BN 与 LN 的差异在归一化轴。BN 平滑了同 batch 内样本间的分布,利于 CNN 训练;LN 独立于 batch,适合 NLP/序列模型。推理时 BN 用全局滑动统计,这是工程上必须注意的细节。

#
★★

17. 损失函数的数值稳定性,Softmax 与交叉熵的数值实现(LogSumExp)、标签平滑的作用与对过拟合的抑制如何?

Softmax 与交叉熵的数值稳定性如何通过 LogSumExp 实现?标签平滑有什么作用,为什么能抑制过拟合?

  • Softmax/交叉熵的数值稳定性问题
  • LogSumExp 技巧
  • 标签平滑原理与作用

Softmax 的指数运算 exp(x) 在 x 很大时会产生溢出(上溢为 inf),导致数值不稳定。解决办法是 LogSumExp(LSE)技巧:先减去最大值 max(x) 再做指数,即 exp(x-max)/Σexp(x-max),结果不变但避免了溢出;交叉熵损失与 Softmax 也常合并实现(如 PyTorch 的 CrossEntropyLoss 直接接收 logits 并在内部做 LogSoftmax 稳定计算),避免先算 Softmax 概率再算 log 带来的下溢与精度损失。标签平滑(Label Smoothing)把 one-hot 标签改为 1-ε 给真实类、ε/(K-1) 分给其他类,使模型不再追求把真实类概率推到 1,从而抑制过拟合:它防止模型对训练标签过度自信、降低对噪声/极端样本的敏感度,并让模型输出更平滑、提升泛化能力,同时改善校准(概率更接近真实置信度)。

LogSumExp 的本质是"利用 log-sum-exp 的平移不变性做数值稳定"。标签平滑通过"软化目标"减少模型过度自信,是轻量而有效的正则化,广泛用于大规模分类任务。

#

18. 迁移学习与微调,预训练模型为什么能迁移到下游任务,冻结底层/微调全层的取舍依据是什么?

迁移学习与微调中,预训练模型为什么能迁移到下游任务?冻结底层/微调全层的取舍依据是什么?

  • 迁移学习的原理
  • 底层学习通用特征、高层学习任务特征
  • 冻结/微调的取舍

预训练模型在大型通用数据(如 ImageNet、海量文本)上训练,底层学到的是通用、可迁移的低级特征(边缘、纹理、语法结构、词法),这些特征与具体任务无关,因此可以迁移到下游任务。微调时用下游数据在预训练权重基础上继续训练,把高层特征适配到目标任务。冻结底层/微调全层的取舍依据:底层特征通用性强、且微调底层参数多,若下游数据量小,冻结底层可减少过拟合、加速训练并降低显存开销;若下游数据充足且与预训练任务差异大,则应微调全层(或至少高层)以充分适配。实践中常用分层学习率(底层学习率小、高层大)或先冻结再渐进解冻。总原则是"上层更任务相关,越靠上越需要针对下游调整"。

迁移学习的核心是"特征可分通用与任务特定"。底层通用、高层特定,因此迁移时高层需重新适配。数据量小冻结底层、数据量大微调全层,是偏差-方差权衡在迁移学习中的体现。

#

19. 模型压缩的剪枝、量化与知识蒸馏各自思路与适用场景,部署时的精度-速度权衡如何评估?

模型压缩的剪枝、量化与知识蒸馏各自思路与适用场景是什么?部署时的精度-速度权衡如何评估?

  • 剪枝、量化、蒸馏的原理
  • 各自适用场景
  • 精度-速度权衡评估

剪枝(Pruning)删除不重要的权重或神经元(如把接近 0 的权重置零),减少参数与计算量,分结构化(整通道/整层)与非结构化(细粒度)剪枝,结构化剪枝更适合硬件加速。量化(Quantization)把权重从高精度浮点(FP32)压缩到低精度(INT8/INT4),显著减小模型体积并加速推理,主要靠硬件对低精度计算的支持。知识蒸馏(Distillation)用一个大的"教师模型"指导一个小的"学生模型"学习,用教师输出的软标签(概率分布)作为额外监督,让小模型逼近大模型性能,适合在无法压缩推理硬件时获得小模型。适用场景上,剪枝与量化适合已有大模型需要部署提速,蒸馏适合从零训练小模型。部署评估需综合权衡:用"精度损失 vs 延迟/吞吐/显存"度量,如比较压缩前后在测试集上的精度、推理延迟、吞吐量、模型大小,结合量化误差(分布保真度)决定方案,通常用 Pareto 前沿选择最优权衡点。

三种压缩方法分别从"结构稀疏、数值精度、知识迁移"三个角度压缩模型。选择取决于目标:减小体积用量化,提速用剪枝或量化,保精度得小模型用蒸馏。评估关键是"精度-速度-体积"的联合权衡。

#

20. 训练复现性工程,随机种子、确定性算法与版本固定如何保证实验结果可复现,与工程 CI 如何衔接?

训练复现性工程中,随机种子、确定性算法与版本固定如何保证实验结果可复现?与工程 CI 如何衔接?

  • 随机种子与确定性算法
  • 版本固定
  • 与 CI/CD 的衔接

训练复现性需要从多个层面控制随机性:固定随机种子(Python、NumPy、PyTorch 的 seed)使数据打乱、初始化、Dropout 等随机过程可复现;启用确定性算法(如 PyTorch 的 deterministic=True、cudnn.benchmark=False)使 GPU 上的并行归约、卷积等运算按确定性顺序执行,避免运行间差异;固定软件版本(PyTorch、CUDA、依赖库版本)与硬件配置,因为不同版本/硬件可能导致数值差异。此外还需记录超参数、数据版本、代码 commit 与训练日志,形成完整的实验记录。与 CI/CD 衔接:把训练流程脚本化、配置化,纳入版本管理,CI 中运行可复现的回归测试(在小数据上验证训练流程不报错、指标稳定)、校验 seed 与版本一致性、自动记录实验元数据,从而保证每次训练/部署可追溯、可复现。

复现性的根基是"消除随机源、固定版本、记录环境"。GPU 的不确定性是复现难点,需靠确定性算法与版本锁定。衔接 CI 意味着把训练当成可测试、可审计的工程环节,而非一次性脚本。