神經網路

softmax(柔性最大值,softmax)

/ SOFT-maks /

softmax 是把一小撮原始分數變成一組加起來等於 1 的機率的函數。想像一場選舉,每位候選人都有一個得票數,你想把這些票數換算成得票百分比——只不過 softmax 是用一種特別的方式來做,它會誇大領先者。它把每個分數過一遍指數運算(指數會放大較大的數),再除以總和,於是一切都俐落地加到 100%。結果是一個橫跨所有選項的、乾淨的機率分布。

這是任何多於兩個類別的分類問題的標準收尾一步——「這張圖是貓、狗、馬還是鳥?」網路給每個類別產生一個原始分數,softmax 把它們換算成彼此競爭的機率,比如 0.7、0.2、0.08、0.02,你只需讀出最可能的答案即可。softmax 是 sigmoid 的多類表親:sigmoid 處理單個「是/否」,softmax 則處理「在多個裡挑一個」,而這些選項彼此此消彼長——一個升上去,其餘的就必須降下來。

兩句誠實的提醒。其一,softmax 的輸出總是看起來像自信的機率,哪怕模型其實錯了;一個 0.99 並不保證是真相,只是一張強烈的內部選票。其二,softmax 假定恰好只有一個答案正確——這些機率相互競爭、加和為 1——所以當多個標籤可能同時成立時(一張照片既是「海灘」又是「日落」),它就是用錯了工具;那種情形你該改用若干個各自獨立的 sigmoid。

一個數字識別器看著一個手寫的 7,給 0–9 這十個數字各產生一個原始分數。經過 softmax 後,機率可能讀作:「7」→ 0.88,「1」→ 0.07,「9」→ 0.03,其餘的都很小。它們加起來等於 1.00,模型自信地選了 7——同時仍承認它有一點點可能是個潦草的 1。

softmax 把每個類別的原始分數變成彼此競爭、加起來恰好等於 1 的機率。

softmax 強制這些機率相互競爭、加和為 1,所以它適合「恰好只有一個正確答案」的情形。當多個標籤可能同時為真時,應改用每個標籤各自獨立的 sigmoid。還有,softmax 分數高只代表置信度高,並不保證就正確。

又稱
softmax functionnormalized exponential归一化指数函数柔性最大值歸一化指數