### [AI / ML領域相關學習筆記入口頁面](https://hackmd.io/@YungHuiHsu/BySsb5dfp)
---
# [ML] 機器學習基礎指標:Maximum Likelihood Estimation、Softmax、Entropy、KL Divergence
### **對數似然(Log Likelihood)與最大似然估計(Maximum Likelihood Estimation, MLE)**:
在給定一組獨立同分佈的樣本 $X = {x_1, x_2, \ldots, x_n}$ 和模型參數 $\theta$ 的情況下,似然函數 $L(\theta)$ 是樣本在參數 $\theta$ 下的聯合機率密度函數(或聯合機率質量函數),而對數似然函數 $\ell(\theta)$ 是似然函數 $L(\theta)$ 取對數后的結果。
$$
L(\theta) = P(X|\theta) = \prod_{i=1}^{n} P(x_i|\theta)
$$
對數似然函數的作用是簡化最大似然估計(MLE)的計算,因為對數可以將乘法轉換為加法,從而在計算上更為方便。通過對似然函數取對數,我們可以將樣本的機率估計轉換為對各個樣本的對數機率的求和。
$$
\ell(\theta) = \log L(\theta) = \sum_{i=1}^{n} \log P(x_i|\theta)
$$
:writing_hand:將機率的乘法轉換為對數的加法,可以更方便地進行參數估計和優化
MLE的目標即是找到使得 $\ell(\theta)$ 達到最大值的參數 $\theta$。
### **Softmax**:
Softmax函數將一個實數向量轉換為一個機率分佈,用於多類別分類問題。對於向量 $z$,第 $i$ 個元素的Softmax為:
$$
\sigma(z)_i = \frac{e^{z_i}}{\sum_{j} e^{z_j}}
$$
- Sigmoid函數將一個實數映射到(0,1)區間,用於二元分類問題。Sigmoid可視為softmax的特例,並用公式推導簡化過程
$$
\sigma(x) = \frac{1}{1 + e^{-x}}
$$
### **Shannon熵(Shannon Entropy)與交叉熵(Cross-Entropy)**:
- **Shannon熵**是衡量單個機率分佈不確定性的量。對於機率分佈 $p$,熵 $H(p)$ 為:
$$
H(p) = -\sum_{i} p_i \log(p_i)
$$
- **交叉熵**為衡量兩個機率分佈 $p$ 和 $q$ 之間的差異,公式為:
$$
H(p, q) = -\sum_{i} p_i \log(q_i)
$$
- 表示使用模型預測分佈 $q(x)$ 來近似目標分佈 $p(x)$ 時的平均編碼長度(推薦閱讀[ [ML/DL]從計算機編碼的角度看Entropy, Cross Entropy和KL-Divergence](https://meetonfriday.com/posts/216f7e20/))
- 為機器學習常用的Loss Function之一
- $p(x)$ 是目標分佈(例如真實標籤的分佈),但因為p的真實分布往往不可得,因此,學習領域會用q的分布去似,而 $q(x)$ 即是模型學習到的的預測分佈
:::info
當模型學習(編碼表示/壓縮)能力越強、學習到的機率分布$q(x)$越接近真實的目標分布$p(x)$,則得到的Cross-Entropy越小,表示模型的預測結果與真實標籤之間的差異越小,模型的性能越好
:::
- Softmax與Cross-Entropyas Loss Function之間的關係

source: [2018。Raúl Gómez blog。Understanding Categorical Cross-Entropy Loss, Binary Cross-Entropy Loss, Softmax Loss, Logistic Loss, Focal Loss and all those confusing names](https://gombru.github.io/2018/05/23/cross_entropy_loss/)
### **Kullback-Leibler Divergence (KL Divergence)**:

source: [2022.02。J. Rafid Siddiqui。Why Is Cross Entropy Equal to KL-Divergence?](https://towardsdatascience.com/why-is-cross-entropy-equal-to-kl-divergence-d4d2ec413864)
KL Divergence是衡量兩個分佈之間差異的另一種方法,定義為目標分佈和模型預測分佈的交叉熵(Cross-Entropy,$H(p, q)$ )與目標分佈熵(Shannon Entropy,$H(p)$)之間的差異程度:
$$
D_{KL}(p \parallel q) = H(p, q) - H(p)
$$
:::info
在ML/DL領域中,KL Divergence 也可以理解為模型學習到的編碼方式/機率分布和真實的編碼方式/機率分布有落差時,偏誤的程度(編碼誤差)
:::
將上述的交叉熵和Shannon熵公式代入 KL 散度的定義中,我們得到:
$$
D_{KL}(p \parallel q) = -\sum_x p(x) \log q(x) + \sum_x p(x) \log p(x)
$$
這裡,第一項是交叉熵 $H(p, q)$,第二項是目標分佈 $p(x)$ 的熵 $H(p)$。
簡化後,我們得到:
$$
D_{KL}(p \parallel q) = -\sum_x p(x) \log q(x) + \sum_x p(x) \log p(x) = -\sum_x p(x) [\log q(x) - \log p(x)] = \sum_x p(x) \log \left( \frac{p(x)}{q(x)} \right)
$$
KL 散度即表示這種近似(預測分布)相比於最優(即使用真實分佈 $p(x)$)所多出來的信息量(即loss)或 誤差程度。
換句話說,KL 散度是衡量使用一個非最佳分佈 $q(x)$ 來表示數據時相對於使用最佳分佈 $p(x)$ 所產生的信息損失。這個信息損失就是交叉熵和真實分佈的熵之間的差異。
- 以圖片壓縮的觀點來比喻
- 假設我們想要壓縮一張圖片的檔案大小,同時盡量保留圖像的細節和品質。我們可以將這個過程比喻為使用一個壓縮後的圖片機率分佈 $q(x)$ 來近似原始圖片機率分佈 $p(x)$。
- 我們希望找到一種壓縮演算法(編碼器),用較短而有效的編碼來表示這些像素點,即用更簡潔的方式來儲存圖像。减小文件大小同时盡量保留圖片重要细節。
- 當編碼器效率越好時,這時原始圖片$p(x)$與壓縮圖片$q(x)$的分布(資訊)就會近似、交叉熵與KL就會盡可能小、平均編碼長度會小
# Reference
#### [2017.05。Andrew M. Webb。Cross Entropy and Log Likelihood](https://www.awebb.info/probability/2017/05/18/cross-entropy-and-log-likelihood.html)
#### [2019.12。glassboxmedicine.com。MACHINE LEARNING Connections: Log Likelihood, Cross Entropy, KL Divergence, Logistic Regression, and Neural Networks](https://glassboxmedicine.com/2019/12/07/connections-log-likelihood-cross-entropy-kl-divergence-logistic-regression-and-neural-networks/)
#### [202.02。Samuel Cheng。Understanding softmax, cross-entropy, and KL-divergence](https://medium.com/@phsamuel.work/understanding-softmax-cross-entropy-and-kl-divergence-31801a4ac099)
#### [2020.02。YC Note。剖析深度學習 (2):你知道Cross Entropy和KL Divergence代表什麼意義嗎?談機器學習裡的資訊理論](https://ycc.idv.tw/deep-dl_2.html)
#### [2019.09。meetonfriday.com。[ML/DL]從計算機編碼的角度看Entropy, Cross Entropy和KL-Divergence](https://meetonfriday.com/posts/216f7e20/)