影片分類模型的輸出要是「各類別的機率」,用哪個函數?
某影音串流平台建立神經網路模型,用於預測使用者最可能感興趣的影片類型。模型輸出層需將結果轉換為各類別的機率分佈,以便系統依機率高低推薦內容。下列哪一種函數最適合用於模型輸出層?
影音串流平台要建一個神經網路,預測用戶最可能感興趣的影片類型。模型的輸出層必須把結果轉換成「各類別的機率分佈」——每個類別要有一個機率值,而且所有類別的機率加起來要等於 1,這樣系統才能依照機率高低來推薦內容。
問你:要讓輸出層產生「各類別的機率分佈」,應該用哪一種函數?
一句話總結
多類別分類的輸出層需要「各類別機率加總為 1」的分佈,這正是 Softmax 函數的設計目的:把任意實數向量轉成加總為 1 的機率分佈。
先感受問題:五個影片類型,機率要加起來等於 100%
假設你是「光影串流」平台的 AI 工程師,正在建立影片類型分類模型。平台的影片分成 5 個類型:動作片、愛情片、紀錄片、動畫、恐怖片。
模型分析了用戶的觀看歷史後,要回答:「這個用戶接下來最可能點哪種類型?」
你需要的輸出格式是:
- 動作片:45%
- 愛情片:20%
- 紀錄片:15%
- 動畫:15%
- 恐怖片:5%
這 5 個數字加起來剛好是 100%(1.0),這樣系統才能依機率高低推薦內容。
問題:神經網路的最後一層(輸出層)輸出的是任意實數(可能是 -3、0.5、7 之類的數字),不是機率。你需要一個函數,把這些任意實數轉成「加總為 1 的機率分佈」,這個函數就是 Softmax。
沒有正確輸出函數,推薦系統會怎樣
「光影串流」在確定使用 Softmax 之前,工程師嘗試過幾種錯誤方式:
- 直接用線性輸出:輸出可能是「動作片 3.2、愛情片 -0.5、紀錄片 7.1」,這些數字沒有機率的意義,系統不知道怎麼用「依機率高低排序」
- 用 ReLU:ReLU 把負數變 0,輸出「動作片 3.2、愛情片 0、紀錄片 7.1」,但這些數字加起來不等於 1,還是不是機率分佈
- 用 5 個 Sigmoid:每個類別分別輸出一個 0-1 的值,但 5 個 Sigmoid 輸出各自獨立,加起來可能是 2.3 或 0.8,不符合「機率加總為 1」的要求
- 手動歸一化:把輸出除以總和,但這跟 Softmax 比有數值穩定性問題,極端值容易造成計算不穩定
- 取最大值直接輸出 1/0:只告訴系統「最可能是哪一類」,但喪失了機率信息,系統無法按照信心程度做排序推薦
Softmax 怎麼把任意數字變成機率分佈
Softmax 函數做的事可以用三個步驟理解:
第一步:讓所有值變成正數。對每個輸出值取 e 的指數(e^x),確保所有值都大於 0。原本是負數的輸出,經過這個操作也變成小的正數,不會再有負值。
第二步:算出總和。把所有類別的 e^x 加起來,得到一個總量。
第三步:各類別除以總和。每個類別的 e^x 除以總和,就得到該類別的機率。這樣做確保了:每個類別的值介於 0 到 1 之間,且所有類別的機率加起來剛好等於 1。
「光影串流」的模型輸出層使用 Softmax 後,每次給用戶推薦時都能輸出清晰的機率分佈,推薦系統按照機率高低排序,大幅提升推薦點擊率。
這就是選項 A 為什麼正確:Softmax 函數把輸出層的任意數值轉換為各類別的機率分佈,且所有類別機率加總為 1。
技術版:四種激活函數的適用位置與特性
神經網路的激活函數在不同位置有不同的選擇邏輯:
隱藏層(Hidden Layer)常用:
- ReLU:f(x) = max(0, x)。把負數變 0,正數不變。計算快、訓練時梯度消失問題少,是目前隱藏層的首選
- 其他變體:Leaky ReLU、ELU、GELU,解決 ReLU 的「死亡神經元」問題
輸出層(Output Layer)的選擇取決於任務類型:
- 多類別分類(互斥,只屬於一類)→ Softmax。輸出各類別機率,加總為 1
- 二元分類(是或否)→ Sigmoid。輸出單一機率值,範圍 0-1
- 多標籤分類(可同時屬於多類)→ 多個 Sigmoid。每個標籤獨立判斷,不要求加總為 1
- 迴歸預測(預測連續數值)→ 線性(無激活函數)。輸出可以是任意實數
Softmax vs. Sigmoid 的關鍵區別:Softmax 輸出 K 個類別的聯合機率(加總=1),各類別有競爭關係,適合互斥類別。多個 Sigmoid 輸出各自獨立的機率(不加總=1),各類別互不影響,適合多標籤問題。
為什麼出題者要考這題:輸出層激活函數的選擇直接影響模型能解決什麼問題,錯選函數導致輸出無意義。AI 規劃師要能依任務類型選擇正確的輸出函數。
為什麼其他選項是錯的
BSigmoid 函數(Sigmoid Function)
把任意實數壓縮到 0 到 1 之間的 S 型曲線函數,輸出可以解釋為「某件事的機率」。
Sigmoid 用在二元分類(是/否,0/1)的輸出層,或多標籤分類(每個標籤獨立判斷)。問題是:5 個 Sigmoid 輸出的機率各自獨立,加總不等於 1(可能是 0.7+0.6+0.8+0.4+0.5=3.0),無法形成「各類別的機率分佈」,不符合本題需求。
看到「機率」就聯想到 Sigmoid 的人。Sigmoid 確實輸出 0-1 的值,但它無法保證多個輸出加總為 1,這正是 Softmax 的差異所在。
C線性函數(Linear Function)
輸出等於輸入,不做任何非線性變換,輸出範圍是負無窮到正無窮的實數。
線性函數輸出的是任意實數,不是機率。「動作片 3.2、愛情片 -0.5」這樣的輸出沒有機率意義,系統無法依機率高低推薦。線性輸出適合迴歸任務(預測連續數值),不適合分類任務的機率輸出。
不熟悉輸出層函數選擇邏輯的人。記住:需要機率輸出就不能用線性函數,線性的輸出沒有機率的意義。
DReLU 函數(Rectified Linear Unit Function)
把負數輸出截斷為 0,正數保持不變(max(0, x)),是隱藏層最常用的激活函數。
ReLU 的輸出是 0 到正無窮大的數字,不在 0-1 之間,也不保證加總為 1,無法輸出機率分佈。ReLU 是隱藏層的主角,不是輸出層的選擇(除非是迴歸且值必須為非負的特殊情況)。
記得「ReLU 是最常用的激活函數」就選它的人。ReLU 常用是在隱藏層,輸出層的函數選擇完全取決於任務類型,不是最常用的就最好。
同個考點下次怎麼變形
預測一篇文章「可能屬於多個主題標籤」,輸出層應用什麼函數?
多個標籤可以同時成立,還是用 Softmax 嗎?
這是多標籤分類(Multi-label Classification),一篇文章可以同時是「科技」和「商業」,兩個標籤不互斥。應用多個 Sigmoid(每個標籤一個),每個標籤獨立輸出 0-1 的機率,不要求加總為 1。Softmax 只用於「互斥類別」,即每筆資料只能屬於一個類別的情況。
Softmax 輸出的「機率」和 Sigmoid 輸出的「機率」有什麼根本差別?
兩個都輸出 0-1 的值,但性質不同?
Softmax 輸出的是「聯合機率分佈」:各類別互相競爭,一個類別機率高,其他類別機率就低,加總必須等於 1。Sigmoid 輸出的是每個輸出節點「各自獨立的機率」,節點之間沒有競爭關係,加總可以大於 1 或小於 1。
隱藏層為什麼通常用 ReLU 而不是 Sigmoid?
隱藏層用什麼函數都行嗎?為什麼大家偏好 ReLU?
Sigmoid 在輸入很大或很小時,梯度接近 0(梯度消失),深層網路的訓練會變得非常慢。ReLU 對正數輸入的梯度恆為 1,不會消失,讓深層網路訓練更快更穩定。計算上也更簡單,只是 max(0, x),不需要複雜的指數運算。
模型輸出的 Softmax 機率很高(如 99%),代表模型一定是對的嗎?
Softmax 輸出 99% 的信心,模型一定是對的嗎?
不代表。Softmax 只保證輸出是機率分佈,但不保證校準(Calibration)良好。訓練不良的模型可能對錯誤答案也輸出 99% 的信心。高信心輸出只說明模型「在這筆輸入上傾向這個類別」,不代表它真的正確。評估模型需要看實際的準確率,不是看輸出機率高低。
迴歸任務的輸出層應該用什麼激活函數?
預測房價、氣溫這類連續數值,輸出層也要用特定函數嗎?
通常不用激活函數(等同於線性激活),輸出直接是任意實數,因為預測目標可以是任何數值(例如房價可能是 100 萬到 1000 萬)。如果預測目標有限制(如只能是正數),可以用 ReLU 或 Softplus;如果目標在 0-1 範圍,可以用 Sigmoid。選擇由目標變數的值域決定。
想再往下看,這 5 個
- Softmax 函數(Softmax Function)多類別分類輸出層的標準函數,把實數向量轉成加總為 1 的機率分佈,本題正解
- S 型函數(Sigmoid Function)把實數壓縮到 0-1,適用於二元分類輸出,各輸出互相獨立不加總為 1,常與 Softmax 混淆
- 修正線性單元(Rectified Linear Unit)深度學習隱藏層最常用的激活函數,用於中間層而非輸出層,容易與輸出激活函數混淆
- 神經網路(Neural Network)影片分類模型的底層架構,輸出層搭配哪種激活函數取決於任務類型(多類別 vs 二元 vs 迴歸)
- 交叉熵損失(Cross-entropy)搭配 Softmax 輸出層的標準損失函數,衡量預測機率分佈與真實標籤之間的差距