從Softmax了解機率與分布及自然對數 Understanding Softmax: A Journey into Probability and

Author
· 3 min read

image

Overview

Softmax可以接受多個輸入,而輸出總和為1並分佈各個的機率。But why?那麼機率到底是什麼,怎麼被視為一種存在在這世界上?

這是今天我想寫這篇文章的出發點,我以為我懂,實際上我連機率跟分布可能都不是很了解。從中也自我提出對自然對數的疑問,從中有了深刻的體悟跟認識。就從Softmax出發來去學習這些核心基礎。

Softmax 函數是深度學習中的核心運算之一,主要應用於分類問題的輸出層。它的目標是將模型的輸出轉換為機率分佈,使得輸出值可解釋為各類別的機率

我想這是一種綜效跟知識點的學習,實際上沒甚麼幫助,但研究過程中有助於將一些點產生線的串聯。“喔!原來內在需求是如此,難怪要這樣使用”。

聲明在先:我不是數學專家,但有了語言模型後,我發現我很常探究數學背後的意義,打通了學習數學的新思維。寫出來僅是我對於數學的理解,正確與否,或許在沒經由形式化驗證的情況下,起碼我自己疏通了我的思緒,是否對讀者有幫助,就看讀者們目前階段的疑惑是否剛好有被我點開囉。

Softmax can take multiple inputs and output probabilities that sum to one. But why? What exactly is probability, and how is it perceived as something that exists in this world?

This question is what led me to write this article today. I thought I understood probability, but in reality, I might not even fully grasp the fundamental concepts of probability and distribution. Through this exploration, I also began questioning the nature of the natural logarithm, which led to deeper insights and a clearer understanding. So, let’s start with Softmax as a gateway to learning these core fundamentals.

The Softmax function is one of the fundamental operations in deep learning, primarily used in the output layer of classification models. Its role is to convert model outputs into a probability distribution, allowing the values to be interpreted as class probabilities.

I see this as a process of synthesizing knowledge rather than directly solving a problem. While it may not have immediate practical benefits, the research process itself helps connect individual concepts into a cohesive understanding. That moment of realization—“Oh! So that’s why it works this way!”—is what makes it worthwhile.

A Disclaimer: I’m not a mathematics expert, but thanks to language models, I find myself frequently diving into the deeper meanings behind mathematical concepts, discovering a new way of thinking about math. This article reflects my own understanding—whether it is entirely accurate or not remains to be formally verified. At the very least, it helps me clarify my own thoughts. As for whether it is useful to you as a reader, that depends on whether my exploration happens to shed light on questions you’ve been pondering.

在這篇文章中,我們將從基礎開始,循序漸進地剖析機率與分布到Softmax及自然對數,內容不在深,保持我慣用的脈絡串接:

  1. 機率是什麼?為什麼要用機率?
  2. 機率分佈與數學背景
  3. Softmax 如何產生機率分佈
  4. Softmax 的數學推導與機率解釋
  5. Softmax 的應用場景與變體
  6. 透過Softmax學習自然對數

1. 機率是什麼?為什麼要用機率?

(1) 機率的基本概念

機率(Probability)衡量一個事件發生的可能性,記作:

$0 \leq P(A) \leq 1$

其中:

  • P(A) = 0表示事件不可能發生。
  • P(A) = 1表示事件一定發生。
  • 0 < P(A) < 1 表示事件可能發生但不確定。

因為世界充滿了不確定性

例如:

  • 擲一枚硬幣,我們無法精確掌控所有條件(如風速、硬幣重量分布、施力角度)。
  • 預測明天天氣,我們無法精確知道空氣每個分子的運動細節。

由於現實世界太複雜,必須有一套方法來量化並管理這種不確定性,這就是機率存在的本質原因。

機率本質上並非物理存在,而是一種人類用來描述『知識不足』或『不確定性』的抽象工具。

這邊我想要讚嘆這位:Andrey Nikolaevich Kolmogorov。這邊留個彩蛋,主要因為最近在研究Kolmogorov complexity,接著到了機率又看到他,有沒有這麼剛好?!真的是極為震撼,那種感覺無法形容,有一種前人就立足在那,抽著菸笑看後人的傻。我學習近十幾年,卻不知道源頭為何。更令我至今還久久無法自己的是,影響AI或解釋AI的這些方法,並不是什麼新的觀點,而這些先進所提出的無論是機率公理還是複雜度,不斷地影響未來的每一天。這世界實在是太好玩,真的學無止盡。

(2) 為什麼機器學習要用機率?

在許多應用場景中,模型的預測並非「絕對確定」,例如:

  • 圖像分類:給定一張圖片,模型可能認為它有 70% 機率是「貓」,20% 機率是「狗」,10% 機率是「老虎」。
  • 語音識別:在「Hello」和「Halo」之間,語音系統可能計算出「Hello」的機率為 85%,「Halo」的機率為 15%。
  • 決策系統:自駕車識別交通標誌時,可能產生多個候選結果,應該依據機率來決策。

📌 機率允許模型表達「不確定性」,而不只是輸出單一的決策結果。


2. 機率分佈與數學背景

當我們討論機率時,通常關心一個隨機變數 X 在不同狀況下的取值與對應機率,這被稱為機率分佈(Probability Distribution)

📌 機率分佈定義了隨機變數的可能性模式

📌 隨機變數是一個函數,而分佈則決定這個函數的數值如何分佈在不同範圍

如果把 隨機變數 想像成「一個人」,那麼 機率分佈 就是這個人的「個性」:

  • 不同的機率分佈,隨機變數的行為也不同
  • 相同的機率分佈,不同的隨機變數可能有相似的行為

例子:

  1. 骰子是一個隨機變數,但它的機率分佈是均勻的(每個點數機率一樣)。
  2. 股價變化是一個隨機變數,但它的機率分佈可能是正態的(漲跌幅度通常集中在某個範圍)。

📌 隨機變數是數值,機率分佈決定了它如何分佈!

(1) 離散 vs. 連續機率分佈

  • 離散機率分佈(PMF, Probability Mass Function):適用於有限個可能值,例如:

    $P(X = k)$

    例如擲骰子的機率分佈:

    $P(X = k) = \frac{1}{6}, \quad k = 1,2,3,4,5,6$

  • 連續機率分佈(PDF, Probability Density Function):適用於無窮多可能值,例如:

    $P(a \leq X \leq b) = \int_{a}^{b} f_X(x) dx$

    例如人的身高服從正態分佈。

📌 Softmax 的核心思想是將數值轉換為「離散機率分佈」,以便進行分類決策。


3. Softmax 如何產生機率分佈

在機器學習的分類問題中,我們希望模型輸出能代表每個類別的機率,但模型的輸出通常是數值(logits),而非機率。例如,假設一個模型對於「貓、狗、兔子」三類的輸出為:

$z_{\text{cat}} = 2.5, \quad z_{\text{dog}} = 0.3, \quad z_{\text{rabbit}} = -1.2$

這些數值沒有明確的機率意義,因此我們需要一個函數將其轉換為機率。

Softmax 透過以下公式完成轉換:

$P(y_i) = \frac{e^{z_i}}{\sum_{j=1}^{n} e^{z_j}}$

其中:

  • 指數函數$ e^{z_i}$ 放大數值差異,強調較大的 logits
  • 歸一化操作確保所有輸出加總為 1,形成有效的機率分佈

這樣,我們得到:

$P(y_{\text{cat}}) = 0.84, \quad P(y_{\text{dog}}) = 0.12, \quad P(y_{\text{rabbit}}) = 0.04$

📌 這樣的輸出可以被解釋為機率,使得模型可以進行合理的決策。


4. Softmax 的數學推導與機率解釋

(1) 為什麼 Softmax 滿足機率分佈?

Softmax 具有以下數學性質:

  1. 非負性:指數函數 $e^{z_i}$ > 0 確保所有輸出為正數。
  2. 完備性:所有機率總和為 1: $\sum_{i=1}^{n} P(y_i) = \sum_{i=1}^{n} \frac{e^{z_i}}{\sum_{j=1}^{n} e^{z_j}} = 1$

這確保了 Softmax 的輸出符合機率分佈的定義。


5. Softmax 的應用場景與變體

(1) 溫度係數(Temperature Scaling)

Softmax 可以引入溫度參數 TT 來控制分佈的平滑程度:

$P(y_i) = \frac{e^{z_i/T}}{\sum_{j=1}^{n} e^{z_j/T}}$

  • 當 $T \to 0$,機率趨於 one-hot,類別變得確定。
  • 當$ T \to \infty$,機率趨於均勻,類別變得模糊。

📌 這被用於 NLP 模型(如 GPT)來控制生成文本的隨機性。

(2) Gumbel-Softmax

為了解決 Softmax 無法處理離散決策的問題,Gumbel-Softmax 引入隨機噪聲:

$P(y_i) = \frac{e^{(z_i + g_i)/T}}{\sum_{j=1}^{n} e^{(z_j + g_j)/T}}$

這允許 Softmax 進行可微分的離散取樣,在強化學習與 NLP 中被廣泛應用。


6. 透過Softmax學習自然對數

首先,我先提了一個問題:為什麼是$e^x$。上面解答了,因為確保機率輸出都為正。再來,為什麼是以自然常數(歐拉數)為底?這邊就非常好玩又美妙了!首先,以歐拉數為底的指數函數是唯一導數與函數是相同結果的組合。至於形式化證明大家可以輕易地透過網路或語言模型得到,這邊我就不多浪費token了。但導數的意義為何?一樣又如何?漸漸的會發現,數學家跟工程師一樣都是很懶得族群,所以會發明很多優化跟簡化的方式去高層次抽象過程。求函數的導數很直觀的答案都會與斜率或極限等相關,那麼我舉個例子應該很快可以理解:就是梯度下降。那麼假設函數與導數都是一樣e^x,基於這一點在神經網路的訓練中的梯度下降計算,就可以相較於其他底數的指數函數更簡化。

See!是不是美妙至極了?當然我自己研究Softmax提出與CNN並非一起提出,因此這美麗的該說巧合嗎?還是數學家或工程研究的先進們,有莫名的默契呢?


7. 總結

其實整篇的邏輯,滿個人化的,坦白說也沒什麼重點。但我想說幾個點:學習要有目標在往後傳播,就跟神經網路訓練一樣。如果不斷地從理論去學推論,我想這是過去教育必須檢討的地方。再來則是,當局時代,語言模型的助力,我不認同會讓人失去思考,就我來說,反而造成我的困擾,打通過去太多需要用時間或多種資源才能克服的難題,以我為例。我的思考與學習方式就是頃向認知與抽象學習,因此需要跨多種維度,並從問題中再提問題,過去沒有這樣的角色或工具來輔助,因此我必須被考試跟教科書給侷限,最後淪為機器,也就是:知其然卻不知所以然。

進步不能停。