设想你是一位餐厅老板,准备面试一位主厨。你不会只问“你会做鱼香肉丝吗”,而会问:“从菜市场进菜到客人吃完结账,你怎样保证每道菜稳定好吃?”AI 面试中的“工程实战”考的就是这件事——从原始数据到模型上线的整条流水线,你能不能胸有成竹地讲清楚。 在 AI 面试中,面试官大多不要求你默写公式,而是想确认三件事:给你一堆脏数据,你敢不敢接?给你一个“线上点击率下降”的问题,你会不会排查?给你 30 分钟手写题,你能不能写出可运行、有边界处理的代码?这些能力的总和,就是工程实战。 本文用一家“智能小灶”餐厅的创业故事,把数据预处理、特征工程、模型训练、模型评估、过拟合治理、超参调优、模型部署和面试应答串成一条线。你会发现,AI 项目的每一步都像餐厅里的一道工序——有标准、有坑、有先后。面试官真正想招的,不是会背菜谱的人,而是能把后厨管明白的人。

岗位关联

这篇文章的价值:让你从“会调包”走向“能扛项目”,面试被追问到工程细节时,不再只答概念,而是给出有数据、有取舍、有复盘的真实答案。

目录
  1. 可视化演示
  2. 数据预处理
  3. 特征工程
  4. 模型训练
  5. 模型评估
  6. 过拟合与正则化
  7. 超参数调优
  8. 模型部署
  9. 面试实战
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

展示系统处理流水线、实时性能指标曲线及多方案对比分析,包含数据流转、吞吐延迟监控与方案评估。

本节配有交互动效(进入视口后自动加载,约 3KB)。

系统可视化 处理流程:输入→处理→模型→输出 性能监控:实时指标 P=L×T

数据预处理

菜市场的菜送到后厨,泥裹着叶、叶带着虫、大小不一。你不可能让主厨直接下锅——必须先过备菜间:摘掉烂叶、洗去泥沙、切成统一形状。这个工序,就是机器学习里的数据预处理。

真实项目里,原始数据同样“脏”:有的列空了一半,有的数值突然变成 9999,有的特征单位是“元”,另一个特征单位是“克”。不处理就让模型去学,就像把带泥的葱直接扔进油锅,翻车只是时间问题。

数据清洗是第一步:去重、删异常、统一格式。缺失值要决策:删除整行会丢信息,用均值或中位数填充简单稳妥,复杂场景也会用模型预测填充。连续特征通常做标准化或归一化,类别特征则要做编码——LabelEncoder 把“青椒/土豆/牛肉”变成 0/1/2,OneHot 展开成多列 0/1,避免模型误以为“牛肉比青椒高级”。

标准化公式:

回到餐厅:备菜间把每根黄瓜切成统一尺寸,标准化就是给所有食材定下统一计量单位。面试官问你“为什么逻辑回归前要标准化”,你可以答:在量纲差异大的特征上,梯度下降会来回震荡、收敛很慢;标准化之后,每一步更新都走得更稳。

x′=x−μσx' = \frac{x - \mu}{\sigma}
这条公式把每个特征的分布搬到“均值为 0、方差为 1”的坐标系里,让不同量纲的特征能公平参与计算。
  1. $x$原始特征值。
    xx
  2. $\mu$该特征在训练集上的均值。
    μ\mu
  3. $\sigma$该特征的标准差。
    σ\sigma
  4. 整体变换$(x - \mu)$ 让均值归零,再除以 $\sigma$ 让方差归 1,得到新的 $x'$。
    x′=x−μσx' = \frac{x - \mu}{\sigma}

特征工程

同样一块豆腐,新手切成砖头,老师傅片成薄如蝉翼的蝴蝶片。食材一样,锅一样,味道却天差地别。特征工程就是刀工和调味:不改变数据来源,却决定模型能学到什么层次。

机器学习界有句名言:“特征决定上限,模型只是逼近上限。”如果特征都是噪声,再强的模型也白搭。特征工程要做三件事:选得准、提得纯、组得巧。

特征选择负责把冗余和无关的特征筛掉,常用方法有过滤式(看方差、看相关系数)、包裹式(逐个加或减特征看效果)、嵌入式(用 L1 正则或树模型的重要性)。PCA 降维则是“提纯”:把高维相关特征投影到少数几个方向上,每个方向都尽量保留最大的方差。特征组合做“新搭配”:比如“年龄 × 收入”比单独两个特征更能刻画消费力。Embedding 则把类别、文本甚至用户行为映射成稠密向量,让模型在连续空间里理解相似性。

PCA 要找的方向 $v$,本质是让投影后的方差最大:

回到餐厅:刀工好的师傅能把食材切得又快又均匀,让火候和调味都能精准渗透。特征工程师也是这么工作的——面试官想听你说:我在项目里构造了哪些特征、为什么它们有效、怎么证明它们比原特征更有效。

vTΣvv^T \Sigma v
其中 $\Sigma$ 是特征的协方差矩阵,$v$ 是我们选的一组正交投影方向。
  1. $\Sigma$协方差矩阵,记录每两个特征之间的相关程度。
    Σ\Sigma
  2. $v$一个单位方向向量,代表 PCA 选出的新坐标轴方向。
    vv
  3. $v^T \Sigma v$数据投影到 $v$ 方向后的方差。PCA 会找让这个值最大的前 $k$ 个方向,完成降维。
    vTΣvv^T \Sigma v

模型训练

食材备好了,刀工到位了,真正决定味道的,是灶台上那把火。火小了,肉不入味;火大了,外表焦糊内里夹生。模型训练里的“火候”,就是损失函数、梯度下降和学习率三个旋钮。

损失函数是一把尺子,衡量“这盘菜离理想味道还差多远”。回归任务常用均方误差 MSE,分类任务常用交叉熵。模型训练的过程,就是一遍遍地试菜、纠错、再试——把参数往损失下降的方向挪一步。

怎么知道往哪个方向挪?梯度下降。梯度是损失函数对每个参数的变化率,像一个下坡时的坡度指示。沿反方向更新参数,损失就会变小。每次更新走多大一步,由学习率决定:太大飞过山谷,太小迟迟走不到谷底。而 Batch Size 决定“一次尝几桌客人的反馈再改配方”:一桌一反馈(SGD)噪声大,几十桌一起反馈(Mini-batch)更稳,全部桌反馈(Batch GD)太慢。

梯度下降的更新规则:

主厨永远在试菜:咸了就少盐,淡了就补盐,火候不均就调锅。面试官问“学习率设多少合适”,真正想听的,是你知不知道怎么观察损失曲线来判断学习率高了还是低了。

θt+1=θt−η∇θL(θt)\theta_{t+1} = \theta_t - \eta \nabla_\theta L(\theta_t)
每一步都朝着损失下降最快的方向挪动参数,挪动距离由学习率控制。
  1. $\theta_t$第 $t$ 步的模型参数。
    θt\theta_t
  2. $\nabla_\theta L(\theta_t)$损失函数在当前参数处的梯度。
    ∇θL(θt)\nabla_\theta L(\theta_t)
  3. $\eta$学习率,控制调整幅度。
    η\eta
  4. $\theta_{t+1}$更新后的参数。整体是沿负梯度方向迈出一步。
    θt+1=θt−η∇θL(θt)\theta_{t+1} = \theta_t - \eta \nabla_\theta L(\theta_t)

模型评估

菜炒好了,自己说好吃不算数。你得请一桌品鉴团,给每道菜打分。模型评估就是这个环节:用一套客观、可复现的指标,检验模型是不是真的能打。

最基础的评分表是混淆矩阵——一个四宫格,记录模型预测和真实情况的所有组合:真正例 TP、假正例 FP、真负例 TN、假负例 FN。医疗场景里,漏诊一个癌症(FN)和误诊一个健康人(FP),代价完全不同,所以不能只看一个“总正确率”。

从混淆矩阵能算出两个关键指标:精确率(Precision)是“预测为正的里面,有多少真的为正”,相当于“我说这道菜是招牌菜,它到底配不配”;召回率(Recall)是“真正的正例里,我找回了多少”,相当于“招牌菜该上的桌,我上齐了几桌”。两者常互相打架,于是用 F1 做调和平均;再往上,AUC-ROC 可以综合不同阈值下的表现。交叉验证则像多轮盲测:把数据切成 K 份,轮流拿一份当验证集,避免一次性分数据带来的运气成分。

F1 的公式:

品鉴团不可能只听你报菜名就打分,他们要一道道去看、去尝、去核对。模型评估的本质,就是让“我觉得不错”变成“数据证明它真的不错”。面试中最常见的追问就是:为什么不看准确率,要看精确率召回率?答案永远要结合业务代价去答。

F1=2×P×RP+RF1 = \frac{2 \times P \times R}{P + R}
精确率与召回率的调和平均,对两边的短板都敏感;两项都 80 分,比一项 99 分、一项 20 分更值得信赖。
  1. $P$精确率。
    P=TPTP+FPP = \frac{TP}{TP + FP}
  2. $R$召回率。
    R=TPTP+FNR = \frac{TP}{TP + FN}
  3. $\frac{2PR}{P+R}$调和平均。只有当 P 和 R 都高时,F1 才高;差距越大,F1 越拉胯。
    2×P×RP+R\frac{2 \times P \times R}{P + R}

过拟合与正则化

后厨里有一种师傅最让人头疼:他背菜谱一字不差,可换个客人点“少辣多醋”,他就不会做了。他只记住了菜谱上的字,没学会做菜的规律。这就是过拟合。

过拟合是模型把训练集里的噪声和巧合当成了规律,训练分数好看,一上真实数据就露馅。与之相反,欠拟合是火候太浅,规律根本没学到,训练和验证都差。面试官最爱的开场白就是:你的模型过拟合了,怎么排查,怎么解决?

经典的应对有四板斧。L1 正则化在损失里加上权重绝对值之和,会把不重要的权重压成 0,相当于“砍掉多余的配菜”,同时完成特征选择。L2 正则化加的是权重平方和,让权重整体变小而非归零,相当于“每道配料只用一点点,别让任何一种味道盖住主菜”。Dropout 在训练时随机丢弃一部分神经元,逼着网络不依赖某个特定“食材”,增强鲁棒性。早停法盯住验证集:损失开始回升就立刻收手,见好就收。

L2 正则化的目标函数:

懂过拟合的厨师,会训练“适应不同口味的泛化能力”,而不是“复刻菜谱的抄写能力”。面试时如果你的项目故事里有“过拟合 → 定位 → 加正则化 → 验证改善”的完整回合,比单纯说“我用了 Dropout”有说服力得多。

J=L+λ∑iwi2J = L + \lambda \sum_i w_i^2
在原始损失上增加一个“权重平方和”的惩罚,$\lambda$ 控制惩罚力度。
  1. $L$原始损失,比如交叉熵。
    LL
  2. $\sum_i w_i^2$所有参数权重的平方和。
    ∑iwi2\sum_i w_i^2
  3. $\lambda$正则化强度,越大越强调“简单模型”,过大则可能欠拟合。
    λ\lambda
  4. $J$最终要最小化的目标。
    J=L+λ∑iwi2J = L + \lambda \sum_i w_i^2

超参数调优

中餐做菜讲究“小火慢炖,大火收汁”,火候不是定死一个值就再也不变的。超参数调优,就是系统性地摸索那套最佳火候组合。

先分清两类参数:模型参数是训练中学出来的(比如线性回归的权重),超参数是训练前你定的(学习率、层数、Batch Size)。面试里常被问“你怎么确定超参”,如果只答“我一个个试的”,会显得没有方法论。

网格搜索是穷举法:把每个超参枚举几个候选值,笛卡尔积全部试一遍,简单粗暴但组合爆炸。随机搜索不枚举,每次从分布里随机采样几组,往往能用更少的尝试找到接近最优的组合。贝叶斯优化更聪明:它把前几次实验的结果当成先验,估计“哪个区域最有希望”,再集中火力去试,像老厨师凭手感不断收敛到准确火候。学习率调度则是动态火候:训练初期学习率大,快速下山;后期减小,精细收敛。

常见的调度公式:

调参的本质不是体力活,而是“用尽量少的实验,找到稳健的组合”。面试官更想听到你用验证集评估、不碰测试集的规范流程,而不是炫耀试了多少组参数。

ηt=η0⋅γ⌊t/s⌋\eta_t = \eta_0 \cdot \gamma^{\lfloor t / s \rfloor}
每经过 $s$ 步,学习率乘以 $\gamma$ 打个折,让训练从“大步探索”过渡到“小步微调”。
  1. $\eta_0$初始学习率。
    η0\eta_0
  2. $\gamma$衰减因子,0 到 1 之间,控制每次打折力度。
    γ\gamma
  3. $\lfloor t / s \rfloor$取整后的衰减轮数。
    ⌊t/s⌋\lfloor t / s \rfloor
  4. $\eta_t$第 $t$ 步实际使用的学习率。
    ηt=η0⋅γ⌊t/s⌋\eta_t = \eta_0 \cdot \gamma^{\lfloor t / s \rfloor}

模型部署

后厨的一切准备就绪,餐厅正式开业。这个阶段,重点不再是“菜好不好吃”,而是“出餐快不快、稳不稳、故障了怎么办”。这就是模型部署。

离线训练得好,只是“实验室里炒的一道好菜”;真正上线,要面对真实流量、延迟、内存和并发。模型压缩负责“瘦身”:剪枝去掉不重要的连接,蒸馏用大模型教小模型,保证效果不掉太多但体积小一大圈。量化则是把 FP32 的浮点数近似成 INT8 的整数,计算变快、内存减半,像把大份套餐改成小份但味道不减。

服务化部署把模型封装成 API,接收请求、返回预测,还要做并发控制与容灾。上线之后不能撒手不管:A/B 测试把线上用户随机分桶,新旧模型各服务一部分,用真实指标对比;监控则盯着推理延迟、预测分布漂移,一旦发现异常立即回滚。

推理加速比的简单度量:

餐厅在后厨和前台之间有一条出餐动线,部署就是确保这条动线全天候不堵。面试时聊到部署,最加分的是你能说出“上线前对比了什么指标,上线后监控什么,异常如何回滚”——这比背出部署工具名更显工程素质。

S=TfloatTint8S = \frac{T_{\text{float}}}{T_{\text{int8}}}
同一个模型在同样批次下,量化前与量化后的推理耗时之比;$S > 1$ 说明量化带来了加速。
  1. $T_{\text{float}}$FP32 浮点模型对一批请求的推理耗时。
    TfloatT_{\text{float}}
  2. $T_{\text{int8}}$INT8 量化模型对同一批请求的推理耗时。
    Tint8T_{\text{int8}}
  3. $S$加速比;S 越大收益越明显,但还需结合精度损失一起评估。
    S=TfloatTint8S = \frac{T_{\text{float}}}{T_{\text{int8}}}

面试实战

终于到了米其林评审探店的日子。评审不会只尝一道菜,他们会看采购单、看后厨动线、看你处理投诉的样子。AI 面试的最后一关,就是把自己当成一道菜,把“被追问”变成一场工程答辩。

项目讲述推荐用 STAR 框架:Situation(项目背景)、Task(你的任务)、Action(你做了什么)、Result(结果数据)。别把简历写成流水账,要突出“难点 → 假设 → 实验 → 结论”的完整链路,每一步都经得起追问。

手撕代码环节,先别急着写。面试官想看的是思路:先澄清问题规模和边界条件,再给出暴力解或基线,最后逐步优化,说出时间与空间复杂度。写完后主动补测试用例和边界检查,这一套动作本身就值不少分。常见避坑包括:不要在面试中贬低某个算法;不要只报喜不报忧;不要在被问到模型不工作时支支吾吾。偏差-方差分解是回答“模型为什么表现差”的万能钥匙:

评审想知道的不只是你会做菜,更是你能不能独立撑起一家店。面试同样如此:把你踩过的坑、调过的参、上线后的数据变化讲成连贯故事,你就不再是“会背概念的候选人”,而是“能打赢工程仗的工程师”。

Error=Bias2+Variance+Noise\text{Error} = \text{Bias}^2 + \text{Variance} + \text{Noise}
误差由三部分组成:欠拟合看偏差,过拟合看方差,数据本身噪声无法消除;面试时说清“我的问题主要出在哪部分”,立刻显出分析深度。
  1. $\text{Bias}^2$模型假设与真实规律的系统偏差,大说明欠拟合。
    Bias2\text{Bias}^2
  2. $\text{Variance}$模型对训练集波动过于敏感的程度,大说明过拟合。
    Variance\text{Variance}
  3. $\text{Noise}$数据本身的不可约噪声,再强模型也消不掉。
    Noise\text{Noise}
  4. $\text{Error}$泛化误差总和,三类来源互相制约,此消彼长。
    Error=Bias2+Variance+Noise\text{Error} = \text{Bias}^2 + \text{Variance} + \text{Noise}

AI 应用场景

短视频推荐:特征工程与 A/B 测试

阶段:特征工程 + 模型评估 + 模型部署

解决的问题:传统人工规则难以捕捉用户实时兴趣。AI 用特征工程构建用户 Embedding、物品 Embedding 与交叉特征,配合双塔召回与精排模型,再用小流量 A/B 测试验证新模型是否真的更优。

具体案例:某信息流 App 发现“点赞率连续一周下滑”。工程师先分桶做 A/B 对比新旧排序模型,再用混淆矩阵定位问题:新模型把低质视频推荐给了高活跃用户,导致负反馈上升。最终通过召回层特征归一化与阈值调整解决问题。

信贷风控:过拟合治理与交叉验证

阶段:过拟合与正则化 + 模型评估

解决的问题:风控样本少但特征维度高,模型离线分数很高、上线坏账率却飙升。AI 用交叉验证 + L1 稀疏正则 + 早停法,筛掉噪声特征,让模型在跨时间测试中保持稳定。

具体案例:某消费金融公司做申请评分卡,原始 200 维特征、60 万样本,逻辑回归加 L1 惩罚后只剩 30 个有效特征,跨时间验证的 AUC 保持稳定,坏账率下降约 18%。这道工序就像后厨把可有可无的配菜全部砍掉,只留最提味的几味料。

客服机器人:部署监控与上线回滚

阶段:模型部署 + 数据预处理

解决的问题:离线评估很好,上线后用户却不买账。AI 将意图识别模型量化成 INT8 部署到 GPU 服务,延迟从 80ms 降到 20ms,并通过每日推理日志监控置信度漂移与意图分布变化。

具体案例:某银行在线客服意图分类上线后,A/B 测试显示自助解决率提升 12%;但“退费”意图召回率过低,导致投诉上升。团队对少数类做重采样、调整分类阈值后解决。就像餐厅开业后根据差评分布,专门把“上菜慢”这道工序单独优化。

Python 演示

python36 行
# -*- coding: utf-8 -*-"""工程实战:从数据预处理到模型评估的完整流程。"""from sklearn.datasets import load_breast_cancerfrom sklearn.model_selection import train_test_split, GridSearchCVfrom sklearn.preprocessing import StandardScalerfrom sklearn.linear_model import LogisticRegressionfrom sklearn.metrics import (accuracy_score, precision_score,                             recall_score, f1_score, confusion_matrix) data = load_breast_cancer()X, y = data.data, data.target scaler = StandardScaler()X_scaled = scaler.fit_transform(X) X_train, X_test, y_train, y_test = train_test_split(    X_scaled, y, test_size=0.2, random_state=42)X_train, X_val, y_train, y_val = train_test_split(    X_train, y_train, test_size=0.25, random_state=42) param_grid = {'C': [0.01, 0.1, 1, 10]}grid = GridSearchCV(LogisticRegression(max_iter=1000),                    param_grid, cv=3, scoring='f1')grid.fit(X_train, y_train) best = grid.best_estimator_val_pred = best.predict(X_val)print('val f1:', f1_score(y_val, val_pred)) test_pred = best.predict(X_test)print('test accuracy:', accuracy_score(y_test, test_pred))print('precision:', precision_score(y_test, test_pred))print('recall:', recall_score(y_test, test_pred))print('f1:', f1_score(y_test, test_pred))print('confusion matrix:')print(confusion_matrix(y_test, test_pred))
目的:用乳腺癌数据走一遍“标准化 → 切分 → 网格调参 → 验证集确认 → 测试集终评”的完整流程。
  1. scaler = StandardScaler()初始化标准化器,相当于把备菜工具先摆好。
  2. X_scaled = scaler.fit_transform(X)在全量数据上估计均值与方差并完成变换,让特征量纲统一。
  3. X_train, X_test, y_train, y_test = train_test_split(...)先把测试集这段“盲测桌”留出来。
  4. X_train, X_val, y_train, y_val = train_test_split(...)再从训练集中切出验证集,用于调参确认。
  5. param_grid = {'C': [0.01, 0.1, 1, 10]}给逻辑回归的正则化强度 C 准备 4 个候选火候。
  6. GridSearchCV(..., cv=3, scoring='f1')网格搜索配合 3 折交叉验证,用 F1 作为选模型的打分标准。
  7. grid.fit(X_train, y_train)在训练集上完成所有候选组合的交叉验证。
  8. val_pred = best.predict(X_val)在验证集上做一次中间确认,防止调参过程过拟合验证集。
  9. test_pred = best.predict(X_test)只在最末尾用测试集预测这一次,保证测试集不泄漏。
  10. confusion_matrix(y_test, test_pred)输出四宫格,细看模型到底错在哪一类。

常见误区

误区把测试集也拿来算均值、做标准化、反复试超参,觉得“数据越多,模型越准”。

正解测试集必须完全隔离。如果你用测试集的统计量做预处理,或者拿测试集反复调参,测试集的信息已经“浸入”训练流程,最终指标会虚高。就像你提前把考官出的题告诉考生,考出来的分数不能代表真实水平。正确做法是:预处理参数只在训练集上估计,测试集只用于最终一次评估。

为何常见:初学者常分不清“数据清洗”和“调参评估”的边界,总觉得多看一眼测试集不会怎样。

误区只要准确率超过 90%,模型就稳了,不用看别的指标。

正解在类别不平衡场景(罕见病、欺诈检测),准确率高可能是“永远预测多数类”造成的假象。必须用精确率(预测为正的里面有多少真)和召回率(真实正例里召回多少)一起看。比如一个“退费”意图只占 1% 的数据集,模型全预测“不退费”,准确率也有 99%,但这个模型没有任何用处。

为何常见:入门时习惯用准确率一个指标概括一切,忽略了不同错误的代价完全不同。

误区L1 和 L2 都是正则化,只是惩罚大小不同,效果差不多。

正解L1 是权重绝对值之和,能让部分权重精确变成 0,产生稀疏解,天然适合特征选择;L2 是权重平方和,能让权重整体变小但不会归零。差别就像“把多余的菜全部倒掉”和“每道菜只放一点点”,前者彻底移除,后者只是稀释。

为何常见:两者公式看起来都像“损失 + 惩罚项”,不画权重直方图很难直观感受差异。

误区Dropout 能防止过拟合,那预测时也开着,继续增强鲁棒性。

正解Dropout 只在训练时随机丢弃神经元,预测时必须关闭(等价于使用完整网络并做权重缩放),否则输出带有随机性,不稳定。PyTorch 里一个典型的坑就是忘记调用 model.eval(),导致预测结果每次都不一样。

为何常见:刚接触时以为“训练时的好技巧,预测时也该继续用”,没有理解 Dropout 本质是给模型做“盲猜训练”。

误区超参数调优就是网格搜索,把所有组合跑一遍,总能拿到最好成绩。

正解网格搜索在候选值少时好用,超参一多就会组合爆炸。随机搜索和贝叶斯优化往往能用更少实验找到更好的组合。而且调参必须基于验证集,绝不能拿测试集“选最好”。就像炒菜不能把每种盐量都做一桌菜给客人尝,而是靠经验快速逼近最佳火候。

为何常见:教程常拿小型网格搜索做演示,容易让人以为这是工业界的标准做法。

面试题

Q1. 逻辑回归前做标准化,最主要的收益是什么?

单选题 · easy

  • A.加快梯度下降收敛← 正确答案
  • B.增加数据样本规模
  • C.消除类别不平衡
  • D.自动生成新特征

答案:A。标准化让各特征量纲一致,损失函数的等高线从“狭长”变成“圆润”,梯度下降不再来回震荡,收敛明显加快。B、C、D 都不是标准化的作用:标准化不增加样本、不处理类别不平衡、也不生成新特征。

Q2. 混淆矩阵中,FN(假负例)的含义是?

单选题 · mid

  • A.预测为负实际为正← 正确答案
  • B.预测为正实际为负
  • C.预测为负实际为负
  • D.预测为正实际为正

答案:A。FN 是模型给出“负”预测,但真实标签是“正”,即漏诊。A 正确。B 是 FP,C 是 TN,D 是 TP。在医疗场景中,FN 意味着把病人误判为健康,代价极高。

Q3. 关于 L1 与 L2 正则化,哪些说法正确?

多选题 · hard

  • A.L1 可将系数压缩到零← 正确答案
  • B.L2 将系数整体缩小← 正确答案
  • C.L1 适合做特征选择← 正确答案
  • D.L2 一定能提升模型精度

答案:ABC。L1 惩罚权重的绝对值之和,有稀疏解能力,会把无关特征系数压成 0,因此适合特征选择;L2 惩罚平方和,让权重整体变小但不归零。D 错误:L2 只是一种先验,惩罚过强反而导致欠拟合,并非“一定提升”。

Q4. 哪些手段可以有效缓解过拟合?

多选题 · hard

  • A.增加 L2 正则化← 正确答案
  • B.增大模型参数量
  • C.训练时使用 Dropout← 正确答案
  • D.降低训练集样本量

答案:AC。L2 正则化和 Dropout 都是经典防过拟合手段。B 增大参数量会让模型容量更大,更容易死记硬背;D 降低训练样本量会让模型更难学到泛化规律,两者都会加重过拟合。

Q5. 预留测试集的最佳使用时机是什么?

单选题 · easy

  • A.仅最终评估时使用一次← 正确答案
  • B.每次训练迭代都要用
  • C.调参时频繁使用测试集
  • D.只用测试集进行训练

答案:A。测试集模拟未来真实数据的分布,只能当作“终考卷”用一次。反复用测试集调参会造成数据泄露,让成绩虚高。正确流程是:训练集训练、验证集调参、测试集只做最终一次评估。

Q6. 什么是机器学习中的数据泄露?

单选题 · mid

  • A.测试集信息进入训练流程← 正确答案
  • B.训练集样本被意外删除
  • C.服务器磁盘空间不足
  • D.模型参数被外部窃取

答案:A。数据泄露指测试集或未来信息在训练阶段就被模型“看到”,比如用全量数据做标准化、用测试集调参。这会让离线指标虚高,上线后效果崩盘。B、C、D 是工程问题,不是统计意义上的数据泄露。

Q7. F1 Score 的主要作用是什么?

单选题 · easy

  • A.综合精确率与召回率← 正确答案
  • B.只关注模型精确率
  • C.只关注模型召回率
  • D.衡量模型推理速度

答案:A。F1 是精确率和召回率的调和平均,能在两者相互制约时给出一个综合分。B 和 C 都只看了单边指标,D 说的是延迟而不是准确率。

Q8. 处理类别不平衡的常用方法有哪些?

多选题 · mid

  • A.对多数类进行欠采样← 正确答案
  • B.对少数类进行过采样← 正确答案
  • C.使用加权损失函数← 正确答案
  • D.删除全部多数类样本

答案:ABC。欠采样减少多数类、过采样增加少数类、加权损失让模型更重视少数类,都是常用手段。D 删除全部多数类会毁掉数据分布,属于极端错误做法。

Q9. 相比网格搜索,贝叶斯优化最核心的优势是什么?

单选题 · hard

  • A.利用历史评估选下一组参数← 正确答案
  • B.一定能找到全局最优解
  • C.完全不需要任何计算资源
  • D.可任意增加超参数个数

答案:A。贝叶斯优化会建立“参数→效果”的概率代理模型,用历史评估结果指导下一组最值得尝试的参数,实验次数更少。B 错误:它不保证全局最优;C、D 也不符合事实。

Q10. 模型量化的核心思想是什么?

单选题 · mid

  • A.用低精度数值近似模型权重← 正确答案
  • B.增加网络层数以提升效果
  • C.用更多训练数据提升精度
  • D.直接提升学习率加速收敛

答案:A。量化把 FP32 浮点数近似成 INT8 等低精度表示,减少内存占用并加速推理,是部署阶段的常用优化。B、C、D 分别属于模型结构调整、数据增强和训练策略,不是量化。