CNN/RNN/Transformer 怎么选?
常见深度学习网络结构及适用任务类型速览
原题:请列举并简要说明几种常见的深度学习神经网络结构(如CNN、RNN、Transformer等),并指出它们各自适用的任务类型。
模型架构 · OPPO真题
回答与解析
核心结构与适用边界
CNN
卷积通过局部连接和权值共享引入空间局部性的归纳偏置。卷积层对平移具有等变性,经过池化或聚合后可获得一定平移不变性。它常用于图像、视频帧、语音频谱和传感器局部模式;是否更快应以目标硬件实测为准。
RNN、LSTM 与 GRU
循环网络用隐状态按时间步处理序列,适合流式输入、时序预测和状态持续更新。普通 RNN 容易受到梯度消失或爆炸影响;LSTM、GRU 通过门控缓解而非消除长程依赖问题。训练时跨时间步的依赖限制并行度,但模型尺寸、序列长度和推理方式都会影响实际性能。
Transformer
Transformer 用自注意力在 token 间建模依赖,并通过位置编码保留顺序信息。它便于训练阶段并行处理序列位置,已广泛用于语言、视觉和多模态任务。标准全注意力的时间与注意力矩阵空间开销随序列长度近似二次增长;稀疏、滑窗或线性注意力等变体用于改变这一权衡。
选型原则
不存在只看任务名称就能决定的架构。应比较数据规模与归纳偏置、上下文长度、流式需求、训练和在线预算、目标硬件及质量指标。实际系统也常组合 CNN 的局部建模、循环状态或注意力的全局交互。
口语版讲法(约2分钟)
- CNN用局部归纳偏置提取空间模式
- RNN用状态递推处理序列与流式输入
- Transformer用注意力建模全局交互
- 按数据、上下文、硬件与延迟实测选型
这三类网络的差别,核心在于它们给数据加入了什么结构假设。CNN 用局部连接和权值共享处理空间邻域,因此常用于图像、频谱和局部波形。卷积本身更准确地说是平移等变,经过池化或聚合后才可能获得一定不变性。它在很多硬件上算子成熟,但不能只凭“CNN”三个字断言一定更快。
RNN、LSTM 和 GRU 用隐状态沿时间递推,适合流式输入、时序预测和需要持续状态的任务。普通 RNN 容易出现梯度消失或爆炸,门控结构能缓解这个问题。由于时间步之间有依赖,训练并行度通常不如 Transformer;但小模型、短序列或在线状态更新场景中仍可能合适。
Transformer 用自注意力让 token 之间直接交互,并借助位置编码表达顺序。它便于训练阶段按序列位置并行,已经广泛用于语言、视觉和多模态。标准全注意力随序列变长开销近似二次增长,所以长上下文还要考虑滑窗、稀疏注意力、缓存或其他变体。
工程选型不能写成 CNN、RNN、Transformer 的固定排行榜。我会在同一数据和硬件上比较质量、吞吐、尾延迟、显存和开发复杂度;需要时也会组合局部卷积、递归状态与注意力。例如做端侧声学识别时,我会把流式首包延迟、峰值内存和弱网功耗加入基准,而不只看离线准确率;若换成注意力模型,还要验证上下文长度变化是否触发显存峰值和尾延迟回退。上线前再用真实设备分层压测,并对最差场景保留降级方案。
关键一句:架构选择取决于归纳偏置、序列形态、部署硬件和可验证的质量成本指标。
核验来源
面试官还可能这样问
- 问法 1 · 场景切入
假设你做一个电商客服机器人,用户发来一张模糊的鞋子图片想找同款,另一用户问“昨天下的单什么时候发货”。你分别会用什么神经网络来处理这两个请求?
- 问法 2 · 层层追问
处理文本和图像一般用什么网络结构?……那如果输入是视频流或语音呢?……这些结构各自解决什么问题,现在大模型时代是不是只用Transformer就够了?
- 问法 3 · 直球架构
请比较CNN、RNN和Transformer三种神经网络,说清它们各自的核心机制、适用任务类型以及在大模型背景下的地位变化。