Skip to content

2 机器学习 / 深度学习基础

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 的对比:

维度LSTMTransformer
序列处理串行并行
长程依赖比 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 结果决定保留与否

PCA 是主成分分析,本质上是找一组彼此正交的新坐标轴,使数据在前几个方向上的方差最大。

核心特点:

  • 线性降维方法
  • 无监督
  • 主成分两两正交
  • 尽量保留最大方差信息

常见用途:

  • 降维压缩
  • 去噪
  • 可视化
  • 缓解部分特征相关性

实现上通常基于协方差矩阵特征分解,或对数据矩阵做 SVD。

局限性:

  • 只能处理线性结构
  • 对特征尺度敏感,常需要先标准化
  • 主成分可解释性通常一般

常见写法如下:

Loss公式常见场景
BCEL = -[y log p + (1-y) log(1-p)]二分类、多标签
CEL = -Σ y_i log p_i多分类、语言模型 next-token
MSEL = (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 就是在做最大似然估计

若 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_aux
loss.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 组合。

像素级重建:

  • L1L2、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
形状右偏更常见对称钟形

λ 足够大时,泊松分布可以近似看成高斯分布。

1. 为什么要激活函数,什么时候会使用?常见激活函数有?种类分别是?

Section titled “1. 为什么要激活函数,什么时候会使用?常见激活函数有?种类分别是?”

如果网络里只有线性层,不管堆多少层,整体仍然等价于一层线性变换,表达能力很弱。所以要引入激活函数提供非线性。

什么时候用:

  • 几乎所有隐藏层都会用
  • 输出层是否用,要看任务类型
  • 比如分类输出常接 softmax / sigmoid,回归输出层常不加或只做范围约束

常见激活函数:

类别代表函数特点
饱和型sigmoid、tanh输出有界,但深层容易梯度消失
分段线性ReLU、ReLU6、Leaky ReLU计算快,训练稳定,最常用
平滑非线性GELU、SiLU/Swish更平滑,Transformer/LLM 里常见
概率输出型sigmoid、softmax常用于输出层

这里通常指 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)

区别:

维度sigmoidReLU
输出范围(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

梯度爆炸:

  • 梯度裁剪
  • 降低学习率
  • 合理初始化
  • 使用残差结构和归一化

按字面说,NLP 指自然语言处理(Natural Language Processing),它不是单个“机制”,而是一类处理文本和语言的任务。

如果面试官这么问,通常想听的是 NLP 模型的基本工作流程:

  • 先把文本切成 token
  • 把 token 映射成向量 embedding
  • 用序列建模模块提取上下文关系,比如 RNN、CNN、Transformer
  • 最后接任务头做分类、生成、匹配或检索

现代 NLP 的核心机制更偏向:

  • 分布式表示:用向量表示词和句子
  • 上下文建模:同一个词在不同上下文有不同表示
  • 注意力机制:动态关注和当前任务最相关的 token

如果面试官实际想问的是别的缩写,最好现场反问澄清。


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,长序列容易天然占优。