iPAS 備考專區 登入

iPAS AI 應用規劃師 中級 科目三 機器學習技術與應用・114 年第二次・L23・第 43 題

VGG16 哪一層的運算量(FLOPs)最多?

原題

VGG16 連題組第二題:在神經網路中,了解各層的運算量分佈,有助於模型壓縮與硬體加速的策略設計。請問在 VGG16 中,下列何者運算量(FLOPs)最多?

白話

同一個動物園影像辨識專案,工程師這次不只看「有多少個參數」,而是想知道「每次做一次前向傳播時,哪種層的計算量(浮點運算次數,FLOPs)最多」。上一題(q42)我們知道全連接層的參數量最多,這題問的是不同的問題:計算量。

問你:在 VGG16 的所有層類型中,哪一種層每次推論時的運算量最多?

一句話總結

VGG16 裡運算量最多的是卷積層(Conv2d):卷積核在大型特徵圖的每個空間位置重複做乘加運算,VGG16 整體約 15.5 GFLOP 中,卷積層佔了超過 95%。

情境

先感受問題:參數少不代表算得快

動物園工程師收到了一張 224×224 的長頸鹿照片,要用 VGG16 分類。上一題他發現全連接層參數最多,這次他想知道:「推論一張圖要計算多少次浮點運算?哪層最耗時?」

這就是 FLOPs(浮點運算次數)的重要性:參數量決定模型檔案有多大,FLOPs 決定每次推論要算多少次,這是硬體加速、邊緣部署時最關鍵的指標。

關鍵差異:卷積層雖然每個核心的參數量不多,但它要在整張特徵圖的每個空間位置重複執行所有乘加運算。一張 224×224 的影像,光第一層 Conv2d 就有 224×224 = 50,176 個空間位置,每個位置都要跑一遍 3×3×3 的乘加,計算量巨大。

相比之下,全連接層雖然參數最多,但每個參數只用一次,不像卷積層要在空間上重複使用。

舊方法

「參數多就算得多」為什麼是錯誤直覺?

  1. 參數量和 FLOPs 是不同指標:參數量衡量模型大小(儲存),FLOPs 衡量推論速度(計算)。一個層可以參數少但計算量大,也可以參數多但計算量相對少。
  2. 卷積的空間重複性:一個 3×3×512×512 的卷積核有約 236 萬個參數,但它要在 14×14 = 196 個空間位置各執行一次,總計算量是 236萬 × 196 ≈ 4.6 億次乘加。
  3. 全連接層的單次執行:Linear-33 有約 1.03 億個參數,但推論時只執行一次矩陣向量乘法,FLOPs ≈ 2 × 25,088 × 4,096 ≈ 2.06 億次乘加。
  4. 早期卷積層特徵圖很大:第一層 Conv2d 處理 224×224 的影像,後面的層特徵圖逐漸縮小(112→56→28→14→7),但仍有大量空間位置要計算。
  5. ReLU 和池化層 FLOPs 極少:ReLU 只做 max(0, x),池化只做比較或加法,計算量遠小於卷積和全連接。

新方法

卷積層:在大特徵圖上滑動帶來巨量計算

動物園工程師用 fvcore 計算 VGG16 的 FLOPs 分析:

  • 13 層 Conv2d 加總:約 15.4 GFLOP(佔總運算量 99% 以上)
  • 3 層 Linear 加總:約 0.124 GFLOP(不到 1%)
  • ReLU、MaxPool2d:微量比較操作,幾乎可忽略

最大的卷積層是第三組(224×224 → 112×112,64 通道 → 128 通道),每層就有約 1.85 GFLOP。即使最後一組(14×14,512 通道)特徵圖很小,因為通道數多(512×512),計算量仍然可觀。

這個發現解釋了為什麼 GPU 對 CNN 的加速效果最明顯:GPU 擅長的正是「大量平行的小矩陣乘法」,而卷積運算正是這樣的結構。

這就是選項 A 講的:卷積層(Conv2d)的運算量最多。

錯選項

為什麼其他選項是錯的

B全連接層(Linear)

字面在說什麼

全連接層參數最多,所以 FLOPs 也最多。

為什麼不對

全連接層雖然參數量佔 VGG16 的 89.4%,但每個參數只用一次(矩陣向量乘法),FLOPs 約為 0.124 GFLOP。卷積層的參數雖然少,但每個位置都要重複計算,FLOPs 達 15.5 GFLOP,是全連接層的 125 倍。參數量多不代表 FLOPs 多。

誰會選錯

把上一題(參數最多)的答案直接套用到這題,以為「最胖的層就算得最多」,沒注意到 FLOPs 和參數量是兩個完全不同的指標。

CReLU 激活函數

字面在說什麼

ReLU 激活函數的運算量最多。

為什麼不對

ReLU 只做 max(0, x),每個元素一次比較運算,FLOPs 極低,通常在 FLOPs 統計中直接忽略或歸入「其他」。它不做乘法,只做比較,是所有層中運算最簡單的。

誰會選錯

以為激活函數到處都有(每個卷積後都跟著 ReLU)、所以累積起來最多。數量多並不代表每次計算量大。

D池化層(MaxPool2d, AdaptiveAvgPool2d)

字面在說什麼

池化層的運算量最多。

為什麼不對

MaxPool2d 在 2×2 窗口取最大值,每個輸出元素只做 4 次比較,沒有乘法運算,FLOPs 極低。AdaptiveAvgPool2d 類似,做簡單的平均計算。兩者的計算量都比卷積層少幾個數量級。

誰會選錯

覺得池化層「負責縮小特徵圖、很重要」,誤以為重要的工作就要做很多計算。功能重要性和計算量是不同維度。

變形題

同個考點下次怎麼變形

延伸

想再往下看,這 5 個

答案、題目或解析有問題?回報這題

出處:iPAS 經濟部產業人才能力鑑定 ・ 114 年第二梯次 iPAS AI 應用規劃師 中級 科目三 機器學習技術與應用 第 43 題

看官方原文 PDF

原題 © 經濟部產業發展署,AITerms.tw 僅作教學解析使用,本站解析以 CC BY-NC-SA 4.0 授權。