从NASNet到EfficientNet:神经结构搜索的实战进化论
当你在PyTorch中敲下torchvision.models.efficientnet_b0(pretrained=True)时,可能不会想到这个轻量高效的模型背后,是谷歌大脑团队用450块TPU训练上万次架构的成果。神经结构搜索(NAS)正在重塑我们获取模型的方式——从手工设计到算法生成,这场自动化革命催生的明星网络,已经成为工业界图像识别任务的标配武器库。
1. NAS技术演进简史:从实验室玩具到生产利器
2017年Zoph提出的NASNet首次证明了自动化架构搜索的潜力,但其代价是800块GPU持续训练28天。这个用强化学习生成的网络在ImageNet上达到82.7%的top-5准确率,比人工设计的ResNet高出3.1个百分点。关键突破在于引入了基于单元(Cell)的搜索空间:
python复制# NASNet典型单元结构示意
def conv_cell(x, filters):
x1 = Conv2D(filters, (3,3), padding='same')(x)
x2 = SeparableConv2D(filters, (5,5), padding='same')(x)
return Add()([x1, x2])
这种设计带来三个革命性改变:
- 可扩展性:通过堆叠相同单元控制模型复杂度
- 迁移友好:在CIFAR-10上搜索的单元可直接用于ImageNet
- 结构复用:normal cell与reduction cell的分离设计
2018年出现的MnasNet标志着实用化转折,首次将实时延迟纳入优化目标。其采用的分层搜索空间和多目标强化学习,使得在Pixel手机上达到75ms延迟的同时保持75.2%的top-1准确率。下表对比了各代NAS模型的进化轨迹:
| 模型 | 搜索方法 | 计算成本(TPU-days) | ImageNet精度 | 参数量(M) |
|---|---|---|---|---|
| NASNet-A |
