當模型的效能低下時,它無法準確地預測資料。它的主因可能是 overfitting 或 underfitting。如果是 overfitting 的情況,我們可以使用正則化(regularization)來解決模型 overfitting 的問題。
Table of Contents
正則化(Regularization)
正則化(Regularization)是一個用來防止 overfitting 的方法。假設有一個 overfitted 模型如左下,我們可以讓 w3 和 w4 很小或趨於 0 來減少 x3 和 x4 對模型的影響,以使得模型變得較平緩,如右下。這就是 regularization 的基本想法。

Gradient descent 會在 cost function 中尋找最小的值。在 cost function 中,如果我們加上 1000w_3^2 和 1000w_4^2,這會使得 gradient descent 找到的最小值中,w_3^2 和 w_4^2 會很小或趨於 0。所以,藉由修改 cost function,我們可以在訓練時,減少 w_3^2 和 w_4^2 對模型的影響。
min_{\vec{w},b} \left[ \frac{1}{2m} \sum_{i=1}^m (f_{\vec{w},b}(\vec{x}^{(i)})-y^{(i)})^2) + 1000 w_3^2 + 1000 w_4^2 \right]
以下的式子是加上 regularization 的 cost function。在後面加上去的式子叫做 regularization term,其中的 λ 叫 regularization parameter。如果將 λ 設為很大的值,如 1010,則所有的 W 都會趨於 0。因此,我們可以藉由調整 λ 來縮小 W。
J(\vec{w},b)=\frac{1}{2m} \sum_{i=1}^{m} (f_{\vec{w},b}(\vec{x}^{(i)})-y^{(i)})^2 + \frac{\lambda}{2m} \sum_{j=1}^n w_j^2
正則化線性回歸(Regularized Linear Regression)
正則化線性回歸(Regularized linear regression)是 linear regression 的 cost function 加上 regularization term,如下。
min_{\vec{w},b} J(\vec{w},b) = min_{\vec{w},b} \left[ \frac{1}{2m} \sum_{i-1}^m (f_{\vec{w},b}(\vec{x}^{(i)})-y^{(i)})^2 + \frac{\lambda}{2m} \sum_{j=1}^n w_j^2 \right]
Gradient descent 演算法如下。
\begin{aligned} & \text{repeat \{} \\\\ & \begin{aligned} \qquad & w_j = w_j-\alpha \frac{\partial}{\partial w_j}J(\vec{w},b) \\\\ & b = b-\alpha \frac{\partial}{\partial b}J(\vec{w},b) \end{aligned} \\\\ & \text{\}} \end{aligned}
我們將導數的部分展開後,會變成以下的式子。
\begin{aligned} & \text{repeat \{} \\\\ & \begin{aligned} \qquad & w_j = w_j-\alpha \left[ \frac{1}{m} \sum_{i=1}^m \left[ (f_{\vec{w},b}(\vec{x}^{(i)})-y^{(i)})x_j^{(i)} \right] + \frac{\lambda}{m} w_j \right] \\\\ & b = b-\alpha \frac{1}{m} \sum_{i=1}^m (f_{\vec{w},b}(\vec{x}^{(i)})-y^{(i)}) \end{aligned} \\\\ & \text{\}} \end{aligned}
簡化後的 wj 的式子會變得如下。可以清楚的看到,我們可以藉由調整 λ 來縮小 wj。
w_j=w_j(1-\alpha \frac{\lambda}{m})- \alpha \frac{1}{m} \sum_{i=1}^m (f_{\vec{w},b}(\vec{x}^{(i)})-y^{(i)}) x_j^{(i)}
正則化邏輯斯回歸(Regularized Logistic Regression)
Logistic regression 的 cost function 加上 regularization term 會變成以下的式子。
\begin{aligned} z &= w_1x_1+w_2x_2+w_3x_1^2x_2+w_4x_1^2x_2^2+w_5x_1^2x_2^3+ \cdots +b \\\\ f_{\vec{w},b}(\vec{x}) &= \frac{1}{1+e^{-z}} \\\\ J(\vec{w},b) &= -\frac{1}{m} \sum_{i=1}^m \left[ y^{(i)} log(f_{\vec{w},b}(\vec{x}^{(i)})) + (1-y^{(i)}) logt(1-f_{\vec{w},b}(\vec{x}^{(i)})) \right] \\\\ &+ \frac{\lambda}{2m} \sum_{i=1}^n w_j^2 \end{aligned}
Gradient descent 演算法如下。
\begin{aligned} & \text{repeat \{} \\\\ & \begin{aligned} \qquad & w_j = w_j-\alpha \frac{\partial}{\partial w_j}J(\vec{w},b) \\\\ & b = b-\alpha \frac{\partial}{\partial b}J(\vec{w},b) \end{aligned} \\\\ & \text{\}} \end{aligned}
將導數的部分展開後,會變成以下的式子。看起來和 regularized linear regression 的一模一樣,但是,要注意的是,式子中的 fw,b 是 logistic regression。
\begin{aligned} & \text{repeat \{} \\\\ & \begin{aligned} \qquad & w_j = w_j-\alpha \left[ \frac{1}{m} \sum_{i=1}^m \left[ (f_{\vec{w},b}(\vec{x}^{(i)})-y^{(i)})x_j^{(i)} \right] + \frac{\lambda}{m} w_j \right] \\\\ & b = b-\alpha \frac{1}{m} \sum_{i=1}^m (f_{\vec{w},b}(\vec{x}^{(i)})-y^{(i)}) \end{aligned} \\\\ & \text{\}} \end{aligned}
結語
Regularization 可以降低 parameters 的小大來解決 overfitting。當 parameters 越大時,受到的處罰會越大,也就是一次會縮小很多。
參考
- Andrew Ng, Machine Learning Specialization, Coursera.









