loss2 - cccbook/py2gpt GitHub Wiki
損失函數 Loss
對於 Regression 問題,常用最小平方法當損失函數。
對於分類問題,常用 CrossEntropy + Softmax 當損失函數
Softmax 的反傳遞數學公式
- Softmax with cross-entropy (超讚)
- Backpropagation with softmax outputs and cross-entropy cost (讚)
- softmax 输出层数学原理推导
- Backpropagation with Softmax / Cross Entropy
ChatGPT:
Softmax 函數是一種常用於多分類任務的激活函數,在深度學習中被廣泛使用。它可以將一個長度為 $n$ 的向量 $\textbf{x}$ 轉換成一個長度仍然為 $n$ 的向量 $\textbf{y}$,其中每個元素 $y_i$ 表示 $\textbf{x}$ 屬於第 $i$ 類的概率。Softmax 函數的數學公式如下:
$$ y_i=\frac{\exp(x_i)}{\sum_{j=1}^n\exp(x_j)},\text{ for }i=1,2,\dots,n. $$
其中, $x_i$ 是向量 $\textbf{x}$ 的第 $i$ 個元素, $y_i$ 則是向量 $\textbf{y}$ 的第 $i$ 個元素。這個公式包含兩個步驟:首先,對向量 $\textbf{x}$ 中的每個元素 $x_i$ 做指數運算,得到一個新的向量 $\textbf{e}=\big(\exp(x_1),\exp(x_2),\dots,\exp(x_n)\big)$;其次,將向量 $\textbf{e}$ 中的每個元素除以向量 $\textbf{e}$ 的元素總和,得到一個長度為 $n$ 的概率分佈向量 $\textbf{y}$。
為了進行反向傳播計算,需要計算 Softmax 函數對每個輸入 $x_i$ 的梯度,即 $\frac{\partial y_i}{\partial x_j}$,其中 $i,j=1,2,\dots,n$。我們可以首先對 $y_i$ 做求導:
$$ \begin{aligned} \frac{\partial y_i}{\partial x_j}&=\frac{\partial}{\partial x_j}\frac{\exp(x_i)}{\sum_{k=1}^n\exp(x_k)} \ &=\frac{\exp(x_i)\frac{\partial}{\partial x_j}\sum_{k=1}^n\exp(x_k)-\frac{\partial}{\partial x_j}\exp(x_i)\sum_{k=1}^n\exp(x_k)}{\left(\sum_{k=1}^n\exp(x_k)\right)^2}. \end{aligned} $$
當 $i\neq j$ 時, $\frac{\partial}{\partial x_j}\exp(x_i)=0$;當 $i=j$ 時, $\frac{\partial}{\partial x_j}\exp(x_i)=\exp(x_i)$。因此,上式可以簡化為:
$$ \frac{\partial y_i}{\partial x_j}=\begin{cases}\displaystyle y_i(1-y_j),&\text{if }i=j,\ -y_i y_j,&\text{if }i\neq j. \end{cases} $$
這個結果可以表示成矩陣形式,即 $\frac{\partial \textbf{y}}{\partial \textbf{x}}=\text{diag}(\textbf{y})-\textbf{y}\textbf{y}^\top$ ,其中 $\text{diag}(\textbf{y})$ 表示將 $\textbf{y}$ 中的元素放在主對角線上,其他位置填充為零的對角矩陣。
總結一下,Softmax 函數的反向傳播計算可以分為兩個步驟:首先,計算 Softmax 函數的輸出向量 $\textbf{y}$;其次,根據上面的公式計算 Softmax 函數對輸入向量 $\textbf{x}$ 的梯度。這個過程可以用矩陣形式表示,並且可以通過求解矩陣乘法和向量加法得到。
CrossEntropy 的反傳遞數學公式
ChatGPT:
CrossEntropy 是用來評估機器學習模型機率預測的好壞程度,通常用於分類問題中。
給定 $n$ 個樣本數據,假設對於第 $i$ 個樣本,真實分類為 $y_i$,模型預測為 $p_i$,則 CrossEntropy 的公式如下:
$$ H(p, q) = -\frac{1}{n}\sum_{i=1}^n y_i \log{p_i} + (1-y_i)\log{(1-p_i)} $$
其中 $p_i$ 是指模型對於樣本 $i$ 屬於正類的機率, $y_i$ 則是指樣本 $i$ 的實際標籤,如果是正類則為 1,反之則為 0。
在反向傳播算法中,我們需要對 CrossEntropy 的損失函數求梯度,這樣才能進行參數的更新。假設 $L$ 為損失函數, $w$ 為參數向量,則 $L$ 對於 $w$ 的梯度可表示為:
$$ \nabla_w L = \frac{1}{n}\sum_{i=1}^n(p_i-y_i)x_i $$
其中 $x_i$ 是指樣本 $i$ 的特徵向量。根據此公式,可以使用梯度下降算法或其它優化方法,以最小化 CrossEntropy 損失。
Regression 問題最小平方法的反傳遞公式
最小平方法(Least Squares Method)是迴歸分析中常見的一種方法,用來求解線性回歸模型的參數。在求解參數時,通常使用的是最小二乘法(Ordinary Least Squares, OLS)。
最小二乘法的基本思想是:將所有觀測點到回歸直線的距離平方和最小化,即:
$$\min_{\beta_0, \beta_1} \sum_{i=1}^n (y_i - \beta_0 - \beta_1 x_i)^2$$
其中 $y_i$ 是因變量的觀測值, $x_i$ 是自變量的觀測值, $\beta_0$ 和 $\beta_1$ 是回歸係數(截距和斜率)。
最小二乘法中的模型參數可以通過求解以下方程組得到:
$$ \begin{bmatrix} n & \sum_{i=1}^n x_i \ \sum_{i=1}^n x_i & \sum_{i=1}^n x_i^2 \ \end{bmatrix} \begin{bmatrix} \beta_0 \ \beta_1 \ \end{bmatrix} = \begin{bmatrix} \sum_{i=1}^n y_i \ \sum_{i=1}^n x_i y_i \ \end{bmatrix} $$
其中 $n$ 是樣本數。
反傳遞(backpropagation)是一種用於多層神經網絡中的參數更新算法,通常用於解決回歸和分類問題。在反傳遞算法中,通過計算損失函數對欲求解參數的偏導數進行階段性反向傳播,以獲得損失函數對於每個欲求解參數的梯度信息,進而使用梯度下降等優化算法對參數進行更新。
對於線性回歸問題,我們可以將最小二乘法的求解過程看作是一種反傳遞算法,其中回歸係數就是神經網絡中的權重參數。
最小二乘法的參數更新規則可以表示為:
$$\begin{aligned} \beta_0 &= \beta_0 - \alpha \frac{\partial J}{\partial \beta_0} \ \beta_1 &= \beta_1 - \alpha \frac{\partial J}{\partial \beta_1} \end{aligned}$$
其中 $\alpha$ 是學習率, $J$ 是損失函數。
根據最小二乘法的定義,損失函數為:
$$J = \frac{1}{2} \sum_{i=1}^n (y_i - \beta_0 - \beta_1 x_i)^2$$
對 $\beta_0$ 和 $\beta_1$ 求偏導數得到:
$$\begin{aligned} \frac{\partial J}{\partial \beta_0} &= \sum_{i=1}^n (y_i - \beta_0 - \beta_1 x_i)(-1) \ &= -\sum_{i=1}^n (y_i - \hat{y_i}) \end{aligned}$$
$$\begin{aligned} \frac{\partial J}{\partial \beta_1} &= \sum_{i=1}^n (y_i - \beta_0 - \beta_1 x_i)(-x_i) \ &= -\sum_{i=1}^n (y_i - \hat{y_i}) x_i \end{aligned}$$
其中 $\hat{y_i}$ 是模型對於第 $i$ 條樣本的預測值。
因此,最小二乘法的反傳遞公式(參數更新規則)可以表示為:
$$\begin{aligned} \beta_0 &= \beta_0 + \alpha \sum_{i=1}^n (y_i - \hat{y_i}) \ \beta_1 &= \beta_1 + \alpha \sum_{i=1}^n (y_i - \hat{y_i}) x_i \end{aligned}$$
其中 $\alpha$ 是學習率。