Regression === ###### tags: `李宏毅` ## 課程資訊 * [影片](https://www.youtube.com/watch?v=fegAeph9UaA&ab_channel=Hung-yiLee) * [講義](https://drive.google.com/file/d/1iXWaDCofiGRjbC9s6b7YzMmIzaGjDO1h/view?usp=sharing) ## 實作步驟 ### 1. 定義 Model Model 就是一群 Function,只要能寫成 $y=b+\sum_{}^{}w_ix_i$ 形式的就是 Linear Model。 ![](https://i.imgur.com/jFqF3FO.png) ### 2. 判斷 Function 的好壞 需要有足夠的訓練資料,再定義 Loss Function L 就可以判斷一個 Function 的好壞。 Loss Function 的 Input 是一個 Function,可以判斷 Input Function 有多不好,$L(f)=L(w,\ b)$。直接把訓練資料代入 Loss Function 就可以知道目前這個 Input Function 的表現。以下圖的 Loss Function 為例就是把實際的值減掉預測的值的平方和。 ![](https://i.imgur.com/jvF2cVx.png) ### 3. 找到最好的 Function 要做的事情就是把所有 w(weight)、b(bias) 都試一遍,L(Loss Function) 最小的就是最好的 Function。以下圖的 L 來看,其實有 Closed-Form Solution,只是也可以用 Gradient Descent。只要 Loss Function 可微分就可以用 Gradient Descent。 ![](https://i.imgur.com/wdYOrBb.png) 微分值和 η(learning rate) 會決定參數調整的幅度。 $w^1\ = w^0\ -\ η\dfrac{dL}{dw}$ 在有些時候參數調整會掉入 Local Minimum,但是我們希望的是 Global Minimum,不過在 Linear Regression 不影響。因為 L 是 Convex,就是說沒有 Local Optimal。 ![](https://i.imgur.com/TcUWO2T.png) 就算有多個參數也一樣,只要對 L 個別做偏微分然後調整值就好。而這個調整值就是 Gradient,下例假設有兩個參數 w、b。 $▽L\ =\left( \begin{array}{ccc} \dfrac{∂L}{∂w}\\ \dfrac{∂L}{∂b}\\ \end{array} \right)$ ![](https://i.imgur.com/4cj5xXS.png) ## Model Selection 在步驟 1 時,只有考慮一次項的 Function,但是其實可以選擇更複雜的 Model。 如下圖,如果使用更高次方的 Model,可以在 Training Data 表現得更好,但是不一定能在 Testing Data 也比較好,這就是 Overfitting。 ![](https://i.imgur.com/cpMiMCC.png) 所以有時候不一定是 Model 不夠好,而是考慮的條件不對。多考慮一些條件才能把 Error 降下去。 ## Regularization 在步驟 2 定義了 Loss Function 為實際值減掉預測值得平方和,而 Regularization 則是再加上 w 的平方乘以 λ。也就是說 w 越小越不容易受到 Regularization 的影響,當 w 小時 Function 會比較平滑。而我們喜歡平滑的 Function,因為它比較不受到輸入的影響,也因此給我們比較好的結果。 $L=\sum_{n}^{}(y^n(b+\sum_{}^{}w_ix_i))^2+λ\sum_{}^{}(w_i)^2$ ![](https://i.imgur.com/lg2Mtfi.png) 最後的結果除了會針對輸入的 Error 做修正,也會考慮到 w 的大小,所以在 Training Data 不一定表現得比較好,但是在 Testing Data 卻有可能更好。所以選擇 λ 的大小也是重要的因素。 ![](https://i.imgur.com/LFYS7Zd.png)