loss - cccbook/py2gpt GitHub Wiki
損失函數 Loss
神經網路的反傳遞算法,通常用在有標準答案的問題上面,這種問題有兩類:
- Regression (回歸問題)
- Classification (分類問題)
第一種 Regression 回歸問題,輸出是一個實數 (浮點數),像是:
- 明天台積電的收盤股價會是多少錢?
- 明天的平均氣溫會是攝氏幾度?
第二種的 Classification 分類問題,輸出通常是個整數,是從 n 類中選 1 類的問題,像是:
- GPT 預測下一個詞,是從所有可能的詞當中選一個 (一萬個詞就是一萬類,選其中一類)
- MNIST 手寫數字辨識,是從十種數字當中選一個 (十類選一類)
對於分類問題,我們通常會用 Softmax + CrossEntropy 兩個函數串接,作為最後的損失函數,您可以參考下列文章
而對於 Regression (回歸問題),我們將在本文中說明,如何使用最小平方法當損失函數 ...
Regression 與最小平方差
最小平方法(Least Squares Method)是迴歸分析中常見的一種方法,用來求解回歸模型的參數。在求解參數時,通常使用的是最小平方法(Ordinary Least Squares, OLS)。

最小平方法的基本思想是:將所有觀測點到回歸直線的距離平方和最小化,即:
$$\min_{\theta} \sum_{i=1}^n (y_i - f(x_i;\theta))^2$$
其中 $y_i$ 是因變量的觀測值 (輸出), $x_i$ 是自變量的觀測值 (輸入)。
對於單變數的線性回歸,最小平方法中的模型參數可以通過求解以下方程組得到:

其中 $n$ 是樣本數。
對於線性回歸問題,我們可以將最小平方法的求解過程看作是一種反傳遞算法,其中回歸係數就是神經網絡中的權重參數。
最小平方法的參數更新規則可以表示為:
$$\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$ 是學習率。