跳到主要内容

现代分类架构

本节定位

做图像分类时,模型结构不是“越新越好”,
而是在不断围绕几个核心问题演化:

  • 怎么让网络更深
  • 怎么让训练更稳
  • 怎么让算力利用更高

这一节不是给你背模型名字,而是帮你抓住它们演化背后的动机。

学习目标

  • 理解几代主流图像分类架构在解决什么问题
  • 理解残差连接为什么改变了深层网络训练
  • 理解效率型架构为什么重要
  • 建立架构选择时的基本判断

一、为什么图像分类架构会不断演进?

1.1 因为“更深”不自动等于“更好”

早期网络一变深,常常会遇到:

  • 梯度难传
  • 优化困难
  • 训练不稳定

1.2 所以后续演化本质上是在回答两个问题

  1. 如何更好训练深网络
  2. 如何在性能和效率之间平衡

1.3 一个类比

架构演进像不断改造流水线:

  • 不是为了让机器变花哨
  • 而是为了在更复杂生产规模下还能稳定工作

二、几代架构在关注什么?

2.1 VGG:先把“堆更深”做出来

特点:

  • 结构规则
  • 全是小卷积
  • 网络更深

它的意义在于:

  • 证明更深网络可以明显提升能力

2.2 ResNet:让更深网络真正能训

残差连接的核心直觉是:

  • 不要求每层都学一个全新变换
  • 而是学“在原基础上的增量”

这让深层网络训练稳定性大幅提升。

2.3 EfficientNet:开始认真看算力效率

它不只问“能不能更强”,
还问:

  • 同样预算下怎样更划算

2.4 ConvNeXt:重新审视卷积体系

在 Transformer 强势之后,
卷积路线也开始重新整理和现代化。

这说明:

  • 架构演进并不是单线淘汰

三、先用一个最小残差示例建立直觉

def block_without_residual(x):
transformed = x * 0.6 + 0.2
return transformed


def block_with_residual(x):
transformed = x * 0.6 + 0.2
return x + transformed


x = 1.0
print("without residual:", block_without_residual(x))
print("with residual :", block_with_residual(x))

3.1 这个例子想表达什么?

残差连接的感觉可以先理解成:

  • 不是把旧信息完全替换
  • 而是在旧信息上叠加一个新修正

这对深层网络训练非常重要。

3.2 为什么这和“更深但更稳”有关?

因为当层数很深时,
完全重写表示比“逐层微调表示”更难学。


四、现代分类架构到底怎么选?

4.1 如果你是入门做 baseline

优先考虑:

  • ResNet 一类经典强基线

4.2 如果你资源特别敏感

更应该关注:

  • EfficientNet
  • 更轻量卷积架构

4.3 如果你要做研究或强性能对比

那才更值得系统比较不同家族。


五、最常见误区

5.1 误区一:只记名字不记问题

更重要的是知道:

  • 它到底在解决什么瓶颈

5.2 误区二:最新架构一定更适合当前项目

现实里经常还是成熟强基线更稳。

5.3 误区三:网络越深越一定更强

没有好的优化结构,深度很容易变成负担。


小结

这节最重要的是建立一个架构演进视角:

图像分类架构的发展,本质上是在不断解决“更深怎么训、更强怎么省、更现代怎么稳”这几个问题。

只要这个视角在,后面你看到新模型时就不会只剩名字。


练习

  1. 用自己的话解释:为什么残差连接会让深层网络更容易训练?
  2. 为什么说 EfficientNet 更像“预算优化”思路?
  3. 如果你要做一个资源有限的移动端分类器,你会优先考虑哪类架构?
  4. 想一想:为什么架构选择不该只看排行榜?