Skip to content
ccckmit edited this page May 24, 2023 · 1 revision

損失函數 Loss

對於 Regression 問題,常用最小平方法當損失函數。

對於分類問題,常用 CrossEntropy + Softmax 當損失函數

Softmax 的反傳遞數學公式

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$ 是學習率。

Clone this wiki locally