面灵AI→

匿名 AI 医学公司一面:从 SVM 到 Transformer、ViT 的基础拷打

轮次
一面
时间
2026-09
来源
牛客网

《面试题目》

  1. 你看过我的论文吗?
  2. 请做一下自我介绍。
  3. 本科是人工智能专业,学过什么样的专业课?
  4. 模式识别学了什么?学过哪些人工智能算法?
  5. 介绍一下 SVM。
  6. SVM 这么好的分类模型,为什么后面多模态/多分类不用它了,而是研究出了新的算法?
  7. 了解计算机视觉吗?什么是计算机视觉?
  8. 除了分类(classification),计算机视觉还有一个任务是什么?
  9. 随着 kernel 减少 channel 会增大,channel 最开始是几?
  10. Transformer 是什么?为什么要有 Transformer,相比于 CNN 解决了什么问题?
  11. CNN 有梯度爆炸,但是 ResNet 解决了这个问题,那为什么还要有 Transformer?
  12. 什么是 Vision Transformer?
  13. 说下 RNN 是什么?
  14. Vision Transformer 处理了什么问题?输入是什么,输出是什么?处理图像要分块,为什么要分块?
  15. 怎么理解 Transformer?自注意力机制是什么?
  16. 说下你是怎么用 Transformer 的,人们是怎么用 Transformer 的?
  17. GPT 用的是编码还是解码?
  18. 那谁用的是编码?BERT 是干嘛的,用的是什么,输入是什么,输出是什么?
  19. 本科发过论文吗?
  20. 如果我给你一篇文献,做 paper review,你会怎么做?
  21. 怎么用 AI,网页端还是其他方式?
  22. 能访问你们学校的图书馆资源吗?

《参考解析》

SVM 的核心与它为什么不再是主流选择

SVM 的思路是找一个能把两类样本分开、并且间隔最大的超平面;真正支撑它的是核技巧——通过核函数把样本隐式映射到高维空间,在这个空间里线性可分,从而用线性分类器解决非线性问题,同时不需要显式算出高维坐标。理论上它由支持向量决定决策边界,对少量高维样本(比如文本的 TF-IDF 特征、小样本医学数据)表现稳、有较好的泛化保证,这也是它在深度学习之前长期占主流的原因。

但它在新任务上被取代有几个现实原因。① 线性假设的局限:面试官给出的解释是对的——原始空间的线性边界表达力有限,SVM 靠核函数弥补,但核的选择和参数(C、gamma)高度依赖经验,特征不好时效果上限明显;而深度网络能自己从数据里学出多层非线性特征,不需要人去设计核。② 规模问题:标准 SVM 的训练复杂度随样本数大致是二次到三次增长,核矩阵的存储也是 O(n²),几十万条以上就难以承受;深度模型靠 mini-batch 和小样本梯度下降能扩展到海量数据。③ 多分类与多任务:SVM 本质是二分类器,多分类要靠 one-vs-rest / one-vs-one 拼装,类别一多代价高且各类别不共享信息;神经网络天然输出多类分布,还能多任务联合训练。④ 端到端与预训练:现代多模态任务需要统一的表示空间(图像、文本、音频对齐),SVM 只是最后一层分类器,无法参与表示学习。补一句会显得更完整:SVM 并没有「错」,在小样本、强特征工程、需要可解释边界的场景仍然好用,只是不再是通用首选。

Transformer 相比 CNN/ResNet 解决了什么

CNN 的两个关键归纳偏置是局部性和平移等变性:卷积核只看邻域、参数在空间上共享。这让它在图像上非常高效,但也带来两个限制——感受野要靠堆层数慢慢扩大,远距离的两个像素要经过很多层才能互相影响;同时卷积核权重是固定的,无法根据输入内容动态决定「该关注谁」。

Transformer 用自注意力替换了这种固定的局部连接:序列里每个位置都能直接和任意其他位置交互(路径长度是 O(1)),注意力权重由当前输入算出来,是内容相关的动态权重。这带来三点实际收益:长距离依赖建模更好;训练时可以并行处理整个序列(不像 RNN 必须逐步递推,这一点常被追问「为什么不是 LSTM」);以及可扩展性——结构规整、易于加深加宽,喂更多数据和算力收益持续,这是它成为主流架构的根本原因。

至于「ResNet 不是已经解决了梯度爆炸/退化吗,为什么还要 Transformer」,要点是把两个问题分开:ResNet 的残差连接解决的是深层网络的优化与梯度传播问题,Transformer 同样靠残差 + LayerNorm 才训得动深;而 Transformer 带来的是建模能力的范式变化(全局动态交互 + 可并行 + 可扩展),ResNet 再深也仍然是局部卷积的堆叠。二者是正交的,现代视觉模型里两者经常一起出现。

ViT:把图像当序列,patch 就是 tokenizer

Vision Transformer 的做法很直接:把一张 H×W 的图像切成固定大小的 patch(如 16×16),每个 patch 拉平后经过一个线性投影得到一个向量,这个向量就相当于 NLP 里的一个 token 的 embedding;再给每个位置加上位置编码(因为自注意力本身对顺序不敏感,丢了位置信息图就散了),在最前面拼一个可学习的 class token,整串送进标准 Transformer Encoder,最后用 class token 的输出接一个分类头。输入是一张图,输出是类别(或检测/分割头的预测)。

为什么要分块?本质是复杂度与信息粒度的权衡。自注意力的计算量随序列长度是平方增长,如果按像素做 token,一张 224×224 的图就是 5 万多个 token,注意力矩阵根本算不动;切成 16×16 的 patch 之后序列长度降到 196,才落到可训练的范围。同时每个 patch 内部本身有较强的空间局部相关性,先用线性投影把它压成一个语义向量,等于让模型在「块」这个粒度上做全局交互,兼顾了效率与表达。这也解释了它的已知短板和后续演进:patch 内部细节被抹平,所以在小数据集上不如 CNN、对细粒度任务需要更高分辨率或层次化设计(Swin 这类多尺度窗口注意力就是在这个方向上补的),而 patch 大小、分辨率变化时位置编码的插值也是常被追问的工程细节。

GPT 用解码、BERT 用编码:结构差异来自训练目标

GPT 是 decoder-only:每个 token 只能看到它左边(因果掩码),训练目标是「预测下一个 token」。因为不能看未来,它天然适合生成,也适合把任意任务改写成「续写」的形式,且推理时可以用 KV Cache 逐 token 高效解码。

BERT 是 encoder-only:双向注意力,训练目标是掩码语言模型(随机盖住 15% 的 token 去还原)加上下一句预测。双向上下文让它在理解类任务(分类、抽取、句对匹配)上很强,但它不是为生成设计的(训练时看到的是被 mask 的句子,且没有因果结构),要生成得额外改造。

Transformer 原始论文的结构是 encoder-decoder:encoder 用自注意力编码输入,decoder 用带因果掩码的自注意力 + 交叉注意力去attend encoder 的输出,这是机器翻译这类序列到序列任务的标准形态(T5、BART 也是这一路)。所以「谁用编码、谁用解码」的答案要带上任务视角:需要生成长文本、且希望结构简单可扩展 → decoder-only(GPT 系、多数现代 LLM);只需要理解/编码 → encoder-only(BERT 系,常用来做 embedding 与 rerank);输入输出都是序列且需要显式对齐 → encoder-decoder。面试官如果追问「为什么现在大家都用 decoder-only」,可以从训练目标统一(任何任务都能表述成续写)、推理时的 KV Cache 工程成熟、以及 scaling 行为可预测这三点来答。

paper review 怎么做:从「读懂」到「能判断」

拿到一篇文献,可复用的流程是:① 先定位——读标题、摘要、图表和结论,判断它属于哪个子领域、解决什么问题、声称的贡献是什么(新问题、新方法、新数据、新结论);② 弄清方法与假设——核心创新点在哪一步,依赖哪些前提(数据分布、标注质量、算力规模),公式与实现细节是否自洽;③ 看实验是否支撑结论——baseline 是否公平且够强、数据集与指标是否合适、有没有消融验证每个模块的贡献、有没有报告失败案例与显著性;④ 找边界——结论在什么条件下不成立、能不能迁移到自己的场景、作者自己承认的局限是什么;⑤ 形成判断——这篇工作相比已有方案真正的增量、可复现性、以及对自己课题的可用之处,最后写出一页以内的结构化笔记(问题—方法—证据—局限—可借鉴点)。

面试场合答这题,最好再补两点工程习惯:读之前先判断期刊/会议与引用情况做质量预筛;读完把关键公式和实验设置复现一遍(哪怕只是跑通作者的代码或在小数据上验证一个结论),比只写读后感更能说明你真的读懂了。