Softmax 和 Max-Pooling 差在哪?
關於 Softmax 與 Max-Pooling,下列敘述何者正確?
問你:關於 Softmax 與 Max-Pooling,下列哪一個描述正確?
一句話總結
Softmax 把所有輸入值轉換成「加起來等於 1 的比例」,保留所有資訊;Max-Pooling 則只取一個區域裡最大的那個值,其他值直接丟掉。兩者目的和位置完全不同。
先感受問題:投票和找冠軍是兩回事
「識影 AI」是一家做影像辨識服務的公司,他們的模型要辨識照片裡是貓、狗、還是鳥。
模型最後一層輸出三個分數:貓 = 3.2,狗 = 1.5,鳥 = 0.8。
問題來了:這三個數字要怎麼變成「機率」?這就是 Softmax 的任務。
結果可能是:貓 72%、狗 23%、鳥 5%。
注意:三個類別都還在,只是換成比例而已。
那 Max-Pooling 呢?它出現在模型更前面的地方,任務是「壓縮特徵圖(Feature Map)」。
想像特徵圖是一張 4x4 的格子,Max-Pooling 把它切成四個 2x2 的小區塊,每個區塊只留下最大的值,其他三個值直接丟棄,結果變成一張 2x2 的小格子。
所以,Softmax 保留了所有類別的資訊(只是換成比例),Max-Pooling 直接丟棄了大量資訊(只留最大值)。
如果把 Softmax 和 Max-Pooling 的位置搞混,會發生什麼事?
- 模型輸出沒有機率意義:如果最後一層用 Max-Pooling,只會輸出「最大值是誰」,但不知道其他類別的相對可能性,無法做「我有 60% 把握是貓」這種軟性判斷。
- 梯度無法回傳到所有神經元:Max-Pooling 對非最大值的梯度為 0,如果用在分類輸出層,大量神經元的梯度永遠是 0,訓練很容易死掉。
- Softmax 用在特徵層會讓特徵失去尺度:Softmax 輸出加總 = 1,如果用在中間特徵層,所有特徵的「強度資訊」會消失,只剩相對比例,後面的層就沒辦法判斷特徵有多強。
- 分類輸出無法接損失函數:神經網路訓練需要 Softmax 輸出接 Cross-Entropy Loss,如果輸出不是機率分佈,Loss 計算就沒有意義。
- 語意上的混淆讓工程師寫錯架構:兩個都有「壓縮」的感覺,很容易搞混,但一個在 CNN 中間層壓空間維度,一個在最後一層壓輸出成機率,根本不同位置、不同目的。
記住:Softmax 是「比例轉換」,Max-Pooling 是「丟棄保留最大」
識影 AI 的 CNN 模型架構是這樣的:
輸入影像 → 卷積層 → Max-Pooling 層(每個 2x2 區域留最大值,壓縮空間大小)→ 更多卷積層 → ... → 全連接層 → Softmax 層(把分數轉成機率)→ 輸出「貓 72%、狗 23%、鳥 5%」
Max-Pooling 的行為:把特徵圖某個 2x2 區域的四個值 [3, 1, 2, 4] → 只留下 4,其他丟掉。資訊有損失,但保留了「這個區域最顯著的特徵」。
Softmax 的行為:把最後三個分數 [3.2, 1.5, 0.8] → 全部保留,轉成 [0.72, 0.23, 0.05]。資訊沒有丟失(三個類別都還在),只是換成機率比例。
這就是選項 C 講的:Softmax 會保留所有輸入資訊,但以比例表示;Max-Pooling 只保留區域最大值。
技術版:Softmax 和 Max-Pooling 的數學
中級考試大概率會考程式碼跟公式,所以這部分你還是要學。但如果現在學起來很痛苦,可以先跳過,等讀完其他題目回頭再來。
Softmax 像「選舉計票」:三個候選人(類別)各自得到一些票(分數),Softmax 把票數換成得票率,還是三個人,只是換成百分比,總和 100%。
Max-Pooling 像「選區代表制」:每個選區(2x2 區塊)只選出一個代表(最大值),其他候選人直接消失,最後只剩代表們組成的小議會(壓縮後的特徵圖)。
| 白話說法 | 公式 |
|---|---|
| Softmax:把第 i 個輸入轉成機率 | σ(z)_i = e^{z_i} / Σ_j e^{z_j} |
| 所有類別機率加起來 | Σ_i σ(z)_i = 1 |
| Max-Pooling:取區塊內最大值 | y = max(x_1, x_2, x_3, x_4) |
| 輸出尺寸(步幅=2) | H_out = (H_in - k) / stride + 1 |
- z_i
- 第 i 個類別的原始分數(logit),可以是任何實數
- e^{z_i}
- 指數函數,確保輸出為正數
- σ(z)_i
- Softmax 輸出的第 i 個機率,值域 (0, 1)
- max()
- Max-Pooling 的核心操作,取最大值
- k
- Max-Pooling 的核大小(kernel size),常用 2×2
- stride
- 步幅,Max-Pooling 每次移動多少格,常用 2
Softmax 公式:
輸入 z = [3.2, 1.5, 0.8]
e^3.2 = 24.53,e^1.5 = 4.48,e^0.8 = 2.23
總和 = 24.53 + 4.48 + 2.23 = 31.24
輸出 = [24.53/31.24, 4.48/31.24, 2.23/31.24]
= [0.785, 0.143, 0.071](加總 ≈ 1)
Max-Pooling(2×2,stride=2):
輸入 4×4 特徵圖,切成四個 2×2 區塊
左上區塊 [3, 1, 2, 4] → 輸出 4
右上區塊 [5, 2, 1, 3] → 輸出 5
左下區塊 [1, 6, 2, 1] → 輸出 6
右下區塊 [3, 2, 4, 1] → 輸出 4
輸出 2×2 特徵圖:[[4, 5], [6, 4]]
- Softmax 的輸出為什麼一定是正數?(提示:e^x 恆正)
- Softmax 輸出的所有值加起來等於多少?為什麼?
- Max-Pooling 丟掉了哪些資訊?保留了什麼資訊?
- Max-Pooling 對輸入是「有損」還是「無損」壓縮?
- Softmax 通常在網路的哪個位置?Max-Pooling 呢?
為什麼其他選項是錯的
字面在說什麼:Softmax 和 Max-Pooling 都把特徵壓縮成一個最大值。
為什麼不對:Softmax 的輸出數量和輸入一樣多(有幾個類別就輸出幾個機率),完全沒有壓縮成「單一值」。Max-Pooling 是每個區塊留一個最大值,但整體輸出仍是一個特徵圖(只是尺寸縮小),不是「單一最大值」。兩者都不符合這個描述。
誰會選錯:對兩個操作都沒有深入了解,看到 Softmax 有「max」字就以為它只取最大值的人。Softmax 裡的 max 其實指的是「讓最大的那個更突出」,而不是「只保留最大值」。
字面在說什麼:Max-Pooling 會把輸入轉換成機率分佈。
為什麼不對:Max-Pooling 只是取最大值,沒有任何機率的概念,輸出不會加總為 1,也不是機率。把「輸入轉成機率分佈」是 Softmax 的工作,選項 B 把兩個功能完全搞反了。
誰會選錯:把 Max-Pooling 和 Softmax 的功能對調的人。這種混淆很常見,因為兩個詞都在深度學習裡很常出現,容易在記憶時互換。
字面在說什麼:Softmax 的主要目的是降低特徵維度,Max-Pooling 用於產生分類輸出。
為什麼不對:完全顛倒。Max-Pooling 才是做空間降維(減少特徵圖的高度和寬度),Softmax 是在最後一層做分類輸出(把 logit 轉成機率)。Softmax 不降維,Max-Pooling 不做分類。
誰會選錯:只記得「Softmax 輸出比例、Max-Pooling 取最大」但沒有把它們放在網路架構位置上思考的人。關鍵是記住:Max-Pooling 在 CNN 中間壓縮特徵圖,Softmax 在最後一層輸出機率。
同個考點下次怎麼變形
直覺:如果模型有兩個類別(貓 vs 非貓),最後一層用 Softmax 還是 Sigmoid?
答案:兩個都可以,但習慣用法不同。二分類時常用 Sigmoid(輸出一個值代表「是貓的機率」),多類別才用 Softmax(輸出每個類別的機率)。用 Softmax 也沒錯,因為兩個類別的 Softmax 輸出等價於 Sigmoid。
直覺:Average-Pooling 和 Max-Pooling 有什麼差?
答案:Max-Pooling 取區塊最大值(保留最顯著特徵),Average-Pooling 取平均值(保留整體資訊)。Max-Pooling 更適合偵測「有沒有某個特徵存在」,Average-Pooling 更適合需要全局資訊的任務,如圖片分類後期的 Global Average Pooling。
直覺:Softmax 輸出的機率可以直接當「模型有多確定」的指標嗎?
答案:不完全可以。Softmax 會讓輸出看起來很確定(例如 99% 的機率),即使模型實際上遇到了完全陌生的輸入(Out-of-Distribution)。這叫做「過度自信(Overconfidence)問題」,是模型校準(Calibration)研究的核心問題之一。
直覺:Transformer 的 Attention 裡用 Softmax 做什麼?
答案:Attention 計算 Query 和 Key 的相似度分數後,用 Softmax 把所有分數轉成「注意力權重」(加總 = 1)。這樣就能表示「對每個位置的 Value 分配多少注意力」,Softmax 在這裡依然是「把分數轉成比例」的角色。
直覺:要怎麼知道 Max-Pooling 層是否「壓縮過頭」,丟失了太多重要特徵?
答案:通常透過「消融實驗(Ablation Study)」:把 Max-Pooling 的 stride 改小(從 2 改 1),看模型準確率有沒有顯著提升。如果提升明顯,代表原來的壓縮太激進,丟失了重要空間資訊。也可以觀察特徵圖的激活模式(Activation Map)確認。
想再往下看,這 5 個
- Softmax 函數(Softmax Function)核心考點:把輸入向量轉成加總為 1 的機率分佈,保留所有輸入資訊,常用於分類輸出層。
- 卷積神經網路(Convolutional Neural Network)Max-Pooling 所屬的模型架構,圖像任務的主流框架,兩者都是 CNN 的標準組成元件。
- 交叉熵損失(Cross-entropy)Softmax 搭配使用的標準損失函數,衡量模型機率輸出與真實標籤之間的差距。
- 修正線性單元(Rectified Linear Unit)神經網路中間層常用的激活函數,與 Softmax(輸出層)的位置和功能不同,是易混淆的近似概念。
- 圖像分類(Image Classification)Softmax 和 Max-Pooling 最常見的協作場景,了解分類任務全流程有助於釐清兩者各自的職責。