可重現的 Apple Silicon 實驗

CIFAR-10 教我們如何選擇小型視覺模型。

我們在 CIFAR-10 上訓練傳統 CNN、循環 CNN、MobileNet、Vision Transformer、DynamicCNN、DenseCNN 與 ResNet-50。目標不只是找出冠軍,而是理解模型容量、正規化、特徵重用、訓練長度與參數效率的影響。

最佳模型
92.94%
ResNet-50 測試準確率;最佳 epoch 為 185/200,參數量 23,520,842。
CNN Best
88.48%
CNN-C + BatchNorm,相同 200 epochs 目標下的最佳原始 CNN。
最小模型
4,930
參數量;MobileNet-A 是本研究最精簡的模型。
「ResNet-50 在最佳 epoch 185/200 達到 92.94% 測試準確率;DenseCNN 以僅 300,634 個參數達到 92.53%,CNN-C + BatchNorm 則是最佳標準 CNN(88.48%)。」

Leaderboard

完整實驗結果

每一列都是已完成的實驗。點擊欄位標題可排序;只訓練 30 epochs 的模型會標示 30 epochs,避免與完整訓練混淆。

排名 模型 Family Size Norm 參數量 最佳/目標 epoch * 最佳驗證 % 測試準確率 % 狀態

* 最佳/目標 epoch:192/200 表示在 200 epochs 訓練中,第 192 epoch 的 validation accuracy 最高;測試準確率由該 checkpoint 評估,不一定是最後一個 epoch。

未排名實驗——不列入 leaderboard

DynamicCNN 需要調查

Dynamic CNN · dynamic size · BatchNorm

參數量
unknown
最佳/目標 epoch
15/30
最佳驗證
70.46%
測試準確率
10.00%

Validation 與 test 結果矛盾:70.46% validation 對上 10.00% test。在調查完成前,不納入科學結論。

Visual evidence

從三個角度看同一個故事

測試準確率、整體參數效率,以及直接由同步結果產生的完整 training-loss 軌跡。

測試準確率——所有完成模型

每個模型都由最佳 validation checkpoint 評估 test accuracy。

比較所有完成 CIFAR-10 模型測試準確率的長條圖

ResNet-50 的最佳/目標 epoch 是 185/200;DenseCNN 是 192/200。R-CNN-B + BN 與 MobileNet-B 仍是 30 epochs。

參數量 vs. 測試準確率

x 軸使用 log-scale 參數量,顏色代表架構 family、形狀代表 normalization,直接標籤與 leader lines 避免相近模型重疊。

比較 CIFAR-10 各架構可訓練參數量與測試準確率的散佈圖

跨 epoch 的 training loss

淡線保留 raw loss;粗線是 time-weighted EMA trend(decay = 0.99)。不同線長清楚呈現 30 與 200 epochs 的訓練預算。

所有 CIFAR-10 模型 raw 與 time-weighted EMA training-loss 曲線

獨立重現

CUDA 矩陣 · NVIDIA A40

第二組實驗使用 CUDA 最佳化 pipeline(GPU 常駐 tensor shards、GPU-side augmentation、batch size 1024)。因為 accelerator 與 input pipeline 不同,這裡與 MPS leaderboard 分開呈現。

模型最佳/目標最佳 validation測試準確率參數量
ResNet-50191/20092.60%91.80%23,520,842
DenseCNN191/20092.10%91.50%300,634
CNN-C + BN200/20089.00%88.35%2,360,906
ViT174/20081.24%80.15%546,186

在 W&B 開啟全部 CUDA runs ↗ · 下載 CUDA checkpoints 與 JSON metadata ↗。完整矩陣:reports/cuda_summary.json

Model zoo

七種架構,七個觀察

每個 family 都在回答不同設計問題:容量、正規化、遞迴、效率、attention、特徵重用與 residual depth。

可控制的 baseline

CNN A/B/C

兩個卷積階段加上精簡分類器,channel 從 16/32、32/64 增加到 64/128,讓容量容易比較。

重點增加容量提升準確率,但參數量成長遠快於準確率。
最佳化變體

BatchNorm / LN / def

BatchNorm 正規化 batch statistics;LN 選項使用單一 group 的 GroupNorm;def 不使用 normalization。

重點BatchNorm 在 B、C 尺寸最強;LN 仍具競爭力。
共享權重的遞迴精煉

R-CNN

這是 recurrent convolutional classifier,不是 region detector;它反覆使用共享卷積並加入 residual update。

重點與 CNN-B + BN 參數量相同,30 epochs 達到 81.22%。
極致參數效率

MobileNet

Depthwise spatial convolution 加上 1×1 pointwise projection,大幅降低參數量。

重點MobileNet-A + BN 只有 5,346 個參數,達到 68.78%。
影像變成 tokens

ViT

32×32 影像切成 4×4 patches,每個 patch 攤平後線性投影成 128 維 token,再交給四層 Transformer。

重點ViT 從 30 epochs 的 69.08% 提升到 200 epochs 的 79.31%。
特徵重用

DenseCNN

Dense layers 將新特徵附加到所有先前特徵;transition 壓縮 channels,global average pooling 取代大型 classifier。

重點只有 300,634 個參數卻取得最高準確率,但 optimizer 與 schedule 不同於 baseline。
深層 residual learning

ResNet-50

CIFAR 調整版 ResNet-50 使用 3×3 stride-1 stem,移除 ImageNet max pool。

重點以 92.94% 取得最高測試準確率,但使用 2,352 萬參數,遠多於 DenseCNN。

Interpretability

DenseCNN 和 CNN Best 看得有何不同?

我們將最強的緊湊特徵重用模型 DenseCNN(92.53%)與 CNN Best——最佳原始 baseline CNN-C + BatchNorm(88.48%)——放在完全相同的四張 CIFAR-10 測試圖片上比較,控制輸入後觀察空間證據差異。

四列原圖、DenseCNN 與 CNN-C 加 BatchNorm 的 Grad-CAM 比較
左:原圖;中:DenseCNN Grad-CAM;右:CNN Best(C + BN)Grad-CAM。預測使用各模型最佳 validation checkpoint。

貓 · 兩者皆正確

DenseCNN 將證據分布在貓的身體與頭部;CNN Best 則有數個較分散的熱點。兩者都答對,表示熱圖平滑不等於分類一定更準。

船 · 兩者皆正確

DenseCNN 強調較完整的船體;CNN Best 對分離的結構細節與右下船身有反應。不同空間策略仍得到相同答案。

卡車 · 兩者皆錯誤

兩者都以極高信心預測 airplane。DenseCNN 沿著細長物體與地平線,CNN Best 聚焦較小邊緣;共同錯誤顯示低解析度形狀歧義。

狗 · 只有 CNN Best 正確

DenseCNN 集中在明亮軀幹與頭部,以 98.4% 誤判 cat;CNN Best 將證據分布到身體與四肢,以 59.2% 正確判為 dog。最佳 aggregate accuracy 不代表每張圖都贏。

Grad-CAM 顯示模型對指定類別的敏感度,不代表因果推理。兩個架構的 final feature-map geometry 不同,不能把熱圖銳利度當 accuracy 指標;應觀察熱區是否支持預測,以及錯誤是否跨模型重複。查看方法與 top-channel 分析。

綜合分析

主要發現

跨越整份研究仍成立的七個觀察。

  1. Dense feature reuse 帶來最強的 accuracy-to-parameter 結果。
  2. CNN 容量有幫助,但參數量成長快於準確率。
  3. BatchNorm 是大型 CNN 最穩妥的 normalization 選擇。
  4. ViT 從 30 延長到 200 epochs 增加 10.23 個百分點,但仍落後參數相近的 CNN-B。
  5. 當參數效率比最高準確率更重要時,MobileNet 很有價值。
  6. 定位正確不保證類別判斷正確。
  7. 永遠同時報告最佳 checkpoint epoch 與 run target epoch。

公平性注意事項

⚖️ 不同訓練預算

ResNet-50、DenseCNN、CNN A/B/C、ViT 與 MobileNet-A 有 200 epochs 結果;R-CNN-B 與 MobileNet-B 仍是 30 epochs。DenseCNN 也使用不同 optimization recipe,因此 epoch 相同不代表運算量相同。

🚫 DynamicCNN 排除

DynamicCNN 的 validation 70.46% 與 test 10.00% 矛盾,因此不納入科學結論。

可重現性

測試機器

所有實驗都在同一台機器上執行,軟體環境如下。

機器
Mac mini
晶片
Apple M4
CPU
10 cores(4P + 6E)
GPU
10-core Apple 整合式 GPU
記憶體
24 GB unified
架構
arm64 · 支援 Metal
作業系統
macOS 26.5.1(25F80)
Python
3.12.13
PyTorch
2.13.0
訓練裝置
mps