2 机器学习 / 深度学习基础
2 机器学习 / 深度学习基础
Section titled “2 机器学习 / 深度学习基础”经典机器学习算法
Section titled “经典机器学习算法”1. 半监督,监督,无监督学习,强化学习的区别+对应的代表算法
Section titled “1. 半监督,监督,无监督学习,强化学习的区别+对应的代表算法”区别主要看训练信号来自哪里。
| 学习范式 | 数据形式 | 目标 | 代表算法 |
|---|---|---|---|
| 监督学习 | 有标注 (x, y) | 学输入到标签的映射 | LR、SVM、RF、XGBoost、CNN |
| 无监督学习 | 只有 x | 挖掘结构或表示 | KMeans、PCA、自编码器 |
| 半监督学习 | 少量标注 + 大量无标注 | 借无标注提升泛化 | 伪标签、一致性正则、Mean Teacher |
| 强化学习 | 状态、动作、奖励 | 最大化长期累积回报 | Q-learning、DQN、PPO |
一句话记忆:
- 监督看“标准答案”
- 无监督看“数据结构”
- 半监督两者结合
- 强化学习看“环境反馈”
2. 介绍常见机器学习算法,Clustering、KNN 和 KMeans 有什么区别?KNN 的 n_neighbors 作用是什么?决策树、随机森林、GBDT 分别属于什么范式?
Section titled “2. 介绍常见机器学习算法,Clustering、KNN 和 KMeans 有什么区别?KNN 的 n_neighbors 作用是什么?决策树、随机森林、GBDT 分别属于什么范式?”常见机器学习算法可以分为:
- 线性模型:线性回归、逻辑回归
- 邻域方法:KNN
- 树模型:决策树、随机森林、GBDT、XGBoost
- 聚类降维:KMeans、DBSCAN、PCA
- 核方法:SVM
Clustering、KNN、KMeans 的区别:
- Clustering 是一大类无监督任务,不是单个算法
- KMeans 是 clustering 里的一个具体算法,目标是把样本分成
K个簇 - KNN 是监督学习里的邻域方法,按最近的
K个样本投票或平均来预测
n_neighbors 的作用:
- 决定看多少个近邻
- 太小,容易受噪声影响,方差大
- 太大,边界会被过度平滑,偏差大
树模型范式:
- 决策树:单棵树,贪心划分
- 随机森林:Bagging 并行集成,多棵树投票/平均
- GBDT:Boosting 串行集成,逐步拟合前一轮残差
3. RNN 和 LSTM 是什么区别?LSTM 相较 RNN 有什么优势?什么时候 LSTM 可能比 Transformer 更合适,分别有什么特性?
Section titled “3. RNN 和 LSTM 是什么区别?LSTM 相较 RNN 有什么优势?什么时候 LSTM 可能比 Transformer 更合适,分别有什么特性?”RNN 用隐藏状态递归处理序列,但长期依赖难学,容易梯度消失。LSTM 在 RNN 基础上加入了细胞状态和门控机制。
LSTM 里的核心门:
- 遗忘门:保留多少旧信息
- 输入门:写入多少新信息
- 输出门:暴露多少状态
LSTM 相比普通 RNN 的优势:
- 更能保留长期依赖
- 梯度传播更稳定
- 对中等长度序列建模能力更强
和 Transformer 的对比:
| 维度 | LSTM | Transformer |
|---|---|---|
| 序列处理 | 串行 | 并行 |
| 长程依赖 | 比 RNN 强,但仍有限 | 更强 |
| 数据需求 | 相对更少 | 通常更吃数据和算力 |
| 延迟 | 流式场景友好 | 全局注意力开销大 |
LSTM 可能更合适的场景:
- 数据量不大
- 序列不长
- 需要边到边处理的流式任务
- 算力和显存受限
4. 逻辑回归是什么?它和一般分类任务是什么关系,有什么假设、优缺点和适用场景?
Section titled “4. 逻辑回归是什么?它和一般分类任务是什么关系,有什么假设、优缺点和适用场景?”逻辑回归本质上是在线性打分后接一个 sigmoid 或 softmax,把结果解释成类别概率。
二分类常写成:
P(y=1|x) = sigmoid(w^T x + b)它和一般分类任务的关系:
- 逻辑回归是最基础的分类模型之一
- 可以看成“线性分类器 + 概率输出”
- 深度学习最后一层线性层加 softmax,本质上也和它一脉相承
常见假设和特点:
- 默认类别边界近似线性可分
- 特征和 log-odds 近似线性关系
优点:
- 简单、可解释
- 训练快
- 输出概率,易做阈值调整
缺点:
- 表达能力有限
- 需要人工特征工程时更明显
- 对复杂非线性边界不够强
适用场景:
- 基线模型
- 中小规模结构化数据
- 风控、广告、CTR 预估等可解释性要求较高的任务
5. 什么是端到端系统?和 pipeline 式方案相比有什么优缺点,通常怎么实现?
Section titled “5. 什么是端到端系统?和 pipeline 式方案相比有什么优缺点,通常怎么实现?”端到端系统指从输入到最终输出由一个统一目标联合优化,中间模块不需要大量人工规则拆解。
和 pipeline 对比:
| 维度 | 端到端 | Pipeline |
|---|---|---|
| 优点 | 联合优化、误差可整体反传、人工规则少 | 可解释、模块独立、便于局部替换 |
| 缺点 | 调试难、数据要求高、问题定位难 | 误差逐级传递、整体最优难保证 |
通常实现方式:
- 定义统一输入输出
- 设计可微模型结构
- 用单一或多任务 loss 联合训练
- 通过大规模标注数据或弱监督数据驱动
工程里很多系统会折中:主链路端到端,外围再配规则或召回重排模块。
6. 特征通常如何选择?需要考虑哪些统计特性、业务约束和模型适配性?
Section titled “6. 特征通常如何选择?需要考虑哪些统计特性、业务约束和模型适配性?”选特征时不要只看“能不能拿到”,还要看“有没有信息量、会不会泄漏、能不能稳定上线”。
统计特性:
- 与目标是否相关
- 冗余是否太高,是否强共线
- 分布是否稳定,是否存在大量缺失和异常值
- 类别特征是否高基数,连续特征是否需要分桶或归一化
业务约束:
- 是否存在标签泄漏
- 线上是否实时可得
- 采集成本和时延是否可接受
- 是否满足隐私和合规要求
模型适配性:
- 线性模型通常更依赖特征缩放和人工交叉
- 树模型对单调变换、缺失值更稳健
- 深度模型更擅长自动学习高阶特征,但也更吃数据
常见方法:
- 先做业务筛选和泄漏排查
- 再做统计分析和重要性评估
- 最后用验证集和线上 A/B 结果决定保留与否
7. PCA 算法特性?
Section titled “7. PCA 算法特性?”PCA 是主成分分析,本质上是找一组彼此正交的新坐标轴,使数据在前几个方向上的方差最大。
核心特点:
- 线性降维方法
- 无监督
- 主成分两两正交
- 尽量保留最大方差信息
常见用途:
- 降维压缩
- 去噪
- 可视化
- 缓解部分特征相关性
实现上通常基于协方差矩阵特征分解,或对数据矩阵做 SVD。
局限性:
- 只能处理线性结构
- 对特征尺度敏感,常需要先标准化
- 主成分可解释性通常一般
损失函数与优化
Section titled “损失函数与优化”1. BCE / CE / MSE 公式
Section titled “1. BCE / CE / MSE 公式”常见写法如下:
| Loss | 公式 | 常见场景 |
|---|---|---|
| BCE | L = -[y log p + (1-y) log(1-p)] | 二分类、多标签 |
| CE | L = -Σ y_i log p_i | 多分类、语言模型 next-token |
| MSE | L = (1/n) Σ (y_i - ŷ_i)^2 | 回归、重建 |
补充一点:
- BCE 可以看成二分类版本的交叉熵
- 若标签是 one-hot,多分类 CE 只会保留目标类那一项
- MSE 对大误差惩罚更重,因为有平方项
2. 什么时候用 MSE,什么时候用 CE / Cross Entropy,它们的区别是什么,为什么大模型训练通常用交叉熵?
Section titled “2. 什么时候用 MSE,什么时候用 CE / Cross Entropy,它们的区别是什么,为什么大模型训练通常用交叉熵?”判断核心是目标变量是什么。
- 连续值预测,用 MSE 更自然,比如房价、深度、坐标回归
- 离散类别预测,用 CE 更自然,比如图像分类、token 预测
两者区别:
- MSE 衡量数值误差,默认你在拟合“真实值和预测值的欧式距离”
- CE 衡量真实分布和预测分布的不一致,更适合概率建模
- 对分类问题,CE 的梯度通常更直接,训练更稳定
大模型训练通常用交叉熵,因为:
- 语言模型本质是在预测下一个 token 的概率分布
- 输出经过 softmax 后就是一个词表分布
- CE 正好对应“让目标 token 概率尽量大”
- 从极大似然角度看,最小化 CE 就是在做最大似然估计
3. Softmax + Cross Entropy 梯度
Section titled “3. Softmax + Cross Entropy 梯度”若 logits 为 z,softmax 输出为 p_i = exp(z_i) / Σ_j exp(z_j),标签 y 是 one-hot,则:
∂L / ∂z_i = p_i - y_i这是面试里最常考的结论。
- 预测概率比真实标签大,梯度为正,会把该 logit 往下拉
- 预测概率偏小,梯度为负,会把目标类 logit 往上推
- 这个结果很简洁,所以 softmax + CE 在分类里非常常用
4. 怎么理解 Cross Entropy,所谓的熵又是什么
Section titled “4. 怎么理解 Cross Entropy,所谓的熵又是什么”熵可以理解成“一个分布自身的不确定性”。
H(p) = -Σ p(x) log p(x)- 分布越均匀,熵越大,不确定性越高
- 分布越尖锐,熵越小,不确定性越低
交叉熵衡量“用预测分布 q 去编码真实分布 p 的代价”:
H(p, q) = -Σ p(x) log q(x)直觉上就是:
- 真实答案经常出现的位置,如果你给的概率很低,损失就会很大
- 所以交叉熵会逼着模型把概率质量放到真实标签上
5. 常见 loss function,你项目里用过哪些损失函数,为什么这么选?
Section titled “5. 常见 loss function,你项目里用过哪些损失函数,为什么这么选?”常见 loss 可以按任务分:
- 分类:BCE、CE、Focal Loss、Label Smoothing CE
- 回归:L1、MSE、Smooth L1、Huber
- 检索/表征:Triplet Loss、Contrastive Loss、InfoNCE
- 生成:重建损失、对抗损失、KL Loss、感知损失
项目里通常这么选:
- 类别标准清晰、单标签分类,用 CE
- 类别极不均衡时,用 Focal Loss 或 class weight
- 回归里怕异常值影响太大,用 Smooth L1/Huber
- 多模态对齐、向量检索常用对比学习损失
- 生成任务往往是多种 loss 组合,而不是单一 loss
面试里最好补一句:loss 不是越复杂越好,关键是和任务目标、数据分布、评测指标对齐。
6. 什么是 KL 散度,交叉熵和 KL 散度什么关系,为什么需要 KL 散度而不是 MSE?
Section titled “6. 什么是 KL 散度,交叉熵和 KL 散度什么关系,为什么需要 KL 散度而不是 MSE?”KL 散度衡量两个分布的差异:
KL(p || q) = Σ p(x) log(p(x) / q(x))它不是严格对称的,所以不是距离,但能表达“用 q 近似 p 时损失了多少信息”。
它和交叉熵的关系:
H(p, q) = H(p) + KL(p || q)对固定真实分布 p 来说,最小化交叉熵就等价于最小化 KL(p || q)。
为什么很多分布拟合问题更偏向 KL 而不是 MSE:
- KL 是分布视角,关注概率质量怎么分配
- MSE 只看逐点数值差,不关心概率归一化和相对比例
- 当目标是概率分布、teacher-student 蒸馏、策略约束时,KL 更贴切
但如果输出本身是连续实数,不是概率分布,MSE 反而更自然。
7. 如果样本标签分布极不均衡,通常有哪些数据、loss 和采样层面的处理方法?
Section titled “7. 如果样本标签分布极不均衡,通常有哪些数据、loss 和采样层面的处理方法?”可以从三层处理。
数据层:
- 补少数类数据
- 做针对少数类的数据增强
- 清洗脏标签,避免少数类进一步被污染
loss 层:
- 给少数类加权,使用 class weight
- 用 Focal Loss,降低易分类样本权重
- 用 label smoothing 时要注意别过度削弱少数类信号
采样层:
- 过采样少数类
- 欠采样多数类
- 用分层采样、balanced batch
还要配合评测指标调整:
- 不只看 Accuracy
- 更关注 Recall、F1、PR-AUC
8. 有哪些优化算法,分别优势是什么?你项目里用过哪些优化器,训练轮次通常怎么设?
Section titled “8. 有哪些优化算法,分别优势是什么?你项目里用过哪些优化器,训练轮次通常怎么设?”常见优化器:
| 优化器 | 特点 |
|---|---|
| SGD | 简单、泛化往往好,但收敛慢 |
| Momentum SGD | 在 SGD 上加动量,减小震荡 |
| RMSProp | 对不同参数自适应学习率,适合非平稳目标 |
| Adam | 同时结合一阶和二阶动量,收敛快,最常用 |
| AdamW | 把权重衰减和梯度更新解耦,Transformer 里很常见 |
| Adafactor | 更省显存,常用于超大模型 |
项目里常见配置:
- CV / NLP 微调常用
AdamW - 小模型或追求泛化时也会尝试
SGD + Momentum - 大模型训练会结合 warmup、cosine decay、梯度裁剪
训练轮次通常不是拍脑袋定:
- 先看数据规模和每轮耗时
- 观察 train / val loss、核心指标是否收敛
- 配 early stopping 或保存 best checkpoint
- 大模型更常按
steps、token 数和学习率计划来管控,而不是只看 epoch
9. Softmax 公式,作用是什么,为什么能有这个作用
Section titled “9. Softmax 公式,作用是什么,为什么能有这个作用”公式:
softmax(z_i) = exp(z_i) / Σ_j exp(z_j)作用是把任意一组实数 logits 映射成一个概率分布:
- 每一项都大于 0
- 所有项加起来等于 1
- logit 越大,对应概率越大
它能起作用的原因:
- 指数函数会放大较大的 logit,压缩较小的 logit
- 再做归一化后,就能得到可比较的类别概率
- 常和 CE 配套使用,直接优化目标类概率
工程上常写成减去 max(z) 的稳定版本,避免数值溢出。
10. 项目里的 loss 一般怎么写伪代码?设计一个 loss 时应该如何分析它可能带来的优化问题,并给出改进思路?
Section titled “10. 项目里的 loss 一般怎么写伪代码?设计一个 loss 时应该如何分析它可能带来的优化问题,并给出改进思路?”一个常见伪代码:
pred = model(x)loss_main = ce_loss(pred_cls, y_cls)loss_reg = l1_loss(pred_box, y_box)loss_aux = kl_loss(student_logit, teacher_logit)loss = loss_main + 2.0 * loss_reg + 0.5 * loss_auxloss.backward()optimizer.step()设计 loss 时通常看这些问题:
- 目标是否和业务指标一致
- 各项量纲是否差太大,某一项会不会主导梯度
- 是否可导、是否存在梯度饱和或不稳定
- 是否会受类别不均衡、异常值、噪声标签影响
- 多任务 loss 会不会互相冲突
常见改进思路:
- 调整权重,做 loss balancing
- 用更稳的替代项,比如 MSE 改 Smooth L1
- 加梯度裁剪、warmup、归一化
- 对极端样本做重加权、重采样或 curriculum learning
- 拆分训练阶段,先学主目标再加辅助目标
11. 回归预测问题什么时候不能直接用 Cross Entropy?什么时候可以把回归问题转成分类问题来做?
Section titled “11. 回归预测问题什么时候不能直接用 Cross Entropy?什么时候可以把回归问题转成分类问题来做?”不能直接用 CE 的情况:
- 目标是连续值,没有自然离散类别
- 预测误差有大小和方向含义,比如温度、坐标、深度
- 类之间不存在离散词表式的互斥标签
这时更常用 MSE、MAE、Smooth L1、Huber 等回归损失。
可以转成分类的情况:
- 连续值可以合理分桶,比如年龄段、风险等级、价格区间
- 业务上更关心区间而不是精确数值
- 输出做离散化后更稳定,也更容易和分类头结合
但代价是:
- 分桶会损失精度
- 桶边界设计不合理会引入额外误差
- 如果目标有明显顺序关系,更适合序数分类而不是普通分类
12. 视频预测任务常见的 loss 有哪些?像素级重建、感知、对抗、时序一致性等 loss 分别适用于什么场景?
Section titled “12. 视频预测任务常见的 loss 有哪些?像素级重建、感知、对抗、时序一致性等 loss 分别适用于什么场景?”视频预测常见是多种 loss 组合。
像素级重建:
L1、L2、Charbonnier、SSIM- 适合低层重建目标,训练稳定
- 缺点是容易得到“平均化、发糊”的结果
感知损失:
- 用预训练网络特征做距离
- 更关注语义结构和纹理感知
- 适合视觉质量比逐像素误差更重要的场景
对抗损失:
- 通过判别器逼真度约束,让结果更锐利
- 适合追求真实感的生成任务
- 但训练更不稳定,也更容易引入伪影
时序一致性损失:
- 约束相邻帧特征、光流或预测残差的一致性
- 适合减少闪烁、抖动和时序不连续
实际项目里常见配方是:
- 重建 loss 保底
- 感知 loss 提升观感
- 对抗 loss 提升细节
- 时序一致性 loss 保证连续性
13. 分类任务常用的评测指标有哪些?Accuracy、Precision、Recall、F1、ROC-AUC / PR-AUC 分别适用于什么场景,P / R / F 的计算公式是什么?
Section titled “13. 分类任务常用的评测指标有哪些?Accuracy、Precision、Recall、F1、ROC-AUC / PR-AUC 分别适用于什么场景,P / R / F 的计算公式是什么?”常见公式:
Precision = TP / (TP + FP)Recall = TP / (TP + FN)F1 = 2PR / (P + R)Accuracy = (TP + TN) / (TP + TN + FP + FN)适用场景:
| 指标 | 适用场景 |
|---|---|
| Accuracy | 类别均衡、误判代价接近时 |
| Precision | 误报代价高,比如风控误杀、医学误检 |
| Recall | 漏报代价高,比如欺诈检测、疾病筛查 |
| F1 | 想同时兼顾 Precision 和 Recall |
| ROC-AUC | 类别不太极端不均衡时,衡量排序能力 |
| PR-AUC | 正样本稀少时更有参考价值 |
补充理解:
- ROC-AUC 看 TPR 和 FPR 的整体权衡
- PR-AUC 更关注正类检出质量
- 类别极不均衡时,Accuracy 往往会误导,PR-AUC、Recall、F1 更重要
1. 矩阵的秩怎么算,特征值怎么算
Section titled “1. 矩阵的秩怎么算,特征值怎么算”矩阵的秩本质上是“线性无关行/列的最大个数”,最常见的求法是做初等行变换,把矩阵化成行阶梯形,非零行的数量就是秩。
- 若
rank(A)=n,说明列满秩,线性方程组约束更强 - 若秩小于维度,说明存在冗余或线性相关
- 在机器学习里,秩低常对应特征冗余、矩阵可压缩
特征值的求法是解特征方程:
det(A - λI) = 0解出所有 λ 后,再代回 (A - λI)v = 0 求对应特征向量。
- 对称矩阵的特征值都是真实数
- 不同特征值对应的特征向量线性无关
- PCA、协方差分析、本征分解都依赖这套概念
2. 泊松分布和高斯分布的公式?特点是什么?
Section titled “2. 泊松分布和高斯分布的公式?特点是什么?”泊松分布描述单位时间/单位区域内“事件发生次数”,适合计数型随机变量:
P(X=k) = e^(-λ) λ^k / k!, k = 0,1,2,...- 参数只有一个
λ,同时也是均值和方差 - 常用于点击次数、到达数、故障数这类计数问题
- 适用于“独立、稀疏、单位区间平均发生率稳定”的场景
高斯分布描述连续变量围绕均值波动的情况:
f(x) = 1 / (sqrt(2π)σ) * exp(-(x-μ)^2 / (2σ^2))μ控制中心位置,σ^2控制离散程度- 呈钟形、左右对称
- 很多噪声模型、误差项、初始化假设都近似高斯
两者区别:
| 维度 | 泊松分布 | 高斯分布 |
|---|---|---|
| 变量类型 | 离散 | 连续 |
| 典型任务 | 次数统计 | 测量误差、连续特征 |
| 参数 | λ | μ, σ^2 |
| 形状 | 右偏更常见 | 对称钟形 |
当 λ 足够大时,泊松分布可以近似看成高斯分布。
网络基础模块
Section titled “网络基础模块”1. 为什么要激活函数,什么时候会使用?常见激活函数有?种类分别是?
Section titled “1. 为什么要激活函数,什么时候会使用?常见激活函数有?种类分别是?”如果网络里只有线性层,不管堆多少层,整体仍然等价于一层线性变换,表达能力很弱。所以要引入激活函数提供非线性。
什么时候用:
- 几乎所有隐藏层都会用
- 输出层是否用,要看任务类型
- 比如分类输出常接 softmax / sigmoid,回归输出层常不加或只做范围约束
常见激活函数:
| 类别 | 代表函数 | 特点 |
|---|---|---|
| 饱和型 | sigmoid、tanh | 输出有界,但深层容易梯度消失 |
| 分段线性 | ReLU、ReLU6、Leaky ReLU | 计算快,训练稳定,最常用 |
| 平滑非线性 | GELU、SiLU/Swish | 更平滑,Transformer/LLM 里常见 |
| 概率输出型 | sigmoid、softmax | 常用于输出层 |
2. SIGMOD 的缺点是什么
Section titled “2. SIGMOD 的缺点是什么”这里通常指 sigmoid。它的缺点主要有四个:
- 大正值或大负值区间会饱和,梯度接近 0,容易梯度消失
- 输出不以 0 为中心,后续层优化时容易产生偏移
- 指数运算比 ReLU 更慢
- 深层网络里训练效率通常不如 ReLU 系列
所以 sigmoid 现在更多用于:
- 二分类输出层
- 门控结构,比如 LSTM 的门
不太常作为深层隐藏层的默认激活。
3. ReLU 和 sigmoid 有什么区别?梯度分别是什么?
Section titled “3. ReLU 和 sigmoid 有什么区别?梯度分别是什么?”定义和梯度:
sigmoid(x) = 1 / (1 + e^(-x))sigmoid'(x) = sigmoid(x) * (1 - sigmoid(x))
ReLU(x) = max(0, x)ReLU'(x) = 1(x > 0)区别:
| 维度 | sigmoid | ReLU |
|---|---|---|
| 输出范围 | (0, 1) | [0, +∞) |
| 是否饱和 | 容易饱和 | 正区间不饱和 |
| 梯度消失 | 更明显 | 较轻 |
| 计算开销 | 较大 | 很小 |
| 常见位置 | 输出层、门控 | 隐藏层 |
ReLU 的问题是可能出现“死亡 ReLU”,即参数更新后长期落在负半轴,梯度一直为 0,所以有时会用 Leaky ReLU、GELU 做改进。
4. Batch Norm 是什么,为了做什么,推理和训练的时候是什么区别?
Section titled “4. Batch Norm 是什么,为了做什么,推理和训练的时候是什么区别?”Batch Norm 是对一层激活在 mini-batch 维度上做标准化,再做可学习缩放和平移:
x_hat = (x - μ_batch) / sqrt(σ_batch^2 + ε)y = γ x_hat + β作用:
- 稳定不同层输入分布
- 允许更大学习率
- 加快收敛
- 有一定正则化效果
训练和推理的区别:
- 训练时,用当前 batch 的均值和方差,并更新 running mean / var
- 推理时,不再看当前样本 batch,而是使用训练阶段累计的 running statistics
所以小 batch 训练时,BN 效果往往不稳定,这也是 Transformer 更偏向 LayerNorm 的原因之一。
5. 欠拟合和过拟合分别是什么?通常如何判断与解决?有哪些数据、训练和模型层面的常见方法?
Section titled “5. 欠拟合和过拟合分别是什么?通常如何判断与解决?有哪些数据、训练和模型层面的常见方法?”欠拟合是模型太弱,训练集都学不好;过拟合是训练集学得太死,泛化到验证集变差。
常见判断:
- 欠拟合:train loss 高,val loss 也高
- 过拟合:train loss 持续下降,但 val loss 上升或指标变差
常见处理方法:
数据层:
- 增加数据量
- 做数据增强
- 提升标注质量
训练层:
- 调学习率、训练更久或更短
- 加 weight decay、dropout、early stopping
- 使用 label smoothing、mixup 等正则化
模型层:
- 欠拟合时增大模型容量、增加特征表达
- 过拟合时减小模型容量、减少冗余参数
6. 梯度消失 / 梯度爆炸为什么会出现?分别有什么办法?
Section titled “6. 梯度消失 / 梯度爆炸为什么会出现?分别有什么办法?”本质上是链式求导时,多层梯度连乘造成数值过小或过大。
- 激活函数饱和、网络太深、初始化不当,容易梯度消失
- 权重过大、递归结构过长、学习率过高,容易梯度爆炸
常见解决方法:
梯度消失:
- 用 ReLU / GELU 代替 sigmoid
- 残差连接
- 合理初始化,如 Xavier、Kaiming
- 归一化层,如 BN、LN
梯度爆炸:
- 梯度裁剪
- 降低学习率
- 合理初始化
- 使用残差结构和归一化
7. NLP 是什么机制
Section titled “7. NLP 是什么机制”按字面说,NLP 指自然语言处理(Natural Language Processing),它不是单个“机制”,而是一类处理文本和语言的任务。
如果面试官这么问,通常想听的是 NLP 模型的基本工作流程:
- 先把文本切成 token
- 把 token 映射成向量 embedding
- 用序列建模模块提取上下文关系,比如 RNN、CNN、Transformer
- 最后接任务头做分类、生成、匹配或检索
现代 NLP 的核心机制更偏向:
- 分布式表示:用向量表示词和句子
- 上下文建模:同一个词在不同上下文有不同表示
- 注意力机制:动态关注和当前任务最相关的 token
如果面试官实际想问的是别的缩写,最好现场反问澄清。
8. Dropout 算法
Section titled “8. Dropout 算法”Dropout 是一种正则化方法。训练时,以概率 p 随机把一部分神经元输出置 0,减少特征共适应;推理时不再随机丢弃,而是使用完整网络。
直觉上它像在训练阶段对很多个“子网络”做集成。
特点:
- 能缓解过拟合
- 对全连接层常更有效
- 在现代大模型里,若数据大、归一化和残差设计成熟,dropout 可能设得很小甚至不用
常见实现是 inverted dropout:
- 训练时保留激活后再除以保留概率
- 推理时就不用额外缩放
9. sum pooling 和 mean pooling 分别适用于什么情况?
Section titled “9. sum pooling 和 mean pooling 分别适用于什么情况?”两者都是把一组向量聚合成一个向量。
- sum pooling:把所有位置直接求和
- mean pooling:先求和再除以元素个数
适用区别:
| pooling | 更适合的场景 |
|---|---|
| sum pooling | 长度本身有意义,希望保留“总量”信息 |
| mean pooling | 序列长度不一致,希望得到长度无关的平均表示 |
例如:
- 词袋模型里,sum pooling 会更强调词频
- 句向量、节点表示里,mean pooling 更常见,因为不同样本长度可能差很多
如果长度差异大但又直接用 sum pooling,长序列容易天然占优。