Regularization

Photo by Ashley Knedler on Unsplash
Photo by Ashley Knedler on Unsplash
當模型的效能低下時,它無法準確地預測資料。它的主因可能是 overfitting 或 underfitting。如果是 overfitting 的情況,我們可以使用 regularization 來解決模型 overfitting 的問題。

當模型的效能低下時,它無法準確地預測資料。它的主因可能是 overfitting 或 underfitting。如果是 overfitting 的情況,我們可以使用 regularization 來解決模型 overfitting 的問題。

Regularization

Regularization 是一個用來防止 overfitting 的方法。假設有一個 overfitted 模型如左下,我們可以讓 w3w4 很小或趨於 0 來減少 x3x4 對模型的影響,以使得模型變得較平緩,如右下。這就是 regularization 的基本想法。

Use regularization to reduce the size of parameters.
Use regularization to reduce the size of parameters.

Gradient descent 會在 cost function 中尋找最小的值。在 cost function 中,如果我們加上 1000w_3^21000w_4^2,這會使得 gradient descent 找到的最小值中,w_3^2w_4^2 會很小或趨於 0。所以,藉由修改 cost function,我們可以在訓練時,減少 w_3^2w_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 演算法如下。

\text{repeat \{} \\\\ \phantom{xxxx} w_j=w_j-\alpha \frac{\partial}{\partial w_j}J(\vec{w},b) \\\\ \phantom{xxxx} b=b-\alpha \frac{\partial}{\partial b}J(\vec{w},b) \\\\ \text{\}}

我們將導數的部分展開後,會變成以下的式子。

\text{repeat \{} \\\\ \phantom{xxxx} 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] \\\\ \phantom{xxxx} b=b-\alpha \frac{1}{m} \sum_{i=1}^m (f_{\vec{w},b}(\vec{x}^{(i)})-y^{(i)}) \\\\ \text{\}}

簡化後的 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 會變成以下的式子。

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] \\\\ \phantom{xxxxxxxx} + \frac{\lambda}{2m} \sum_{i=1}^n w_j^2

Gradient descent 演算法如下。

\text{repeat \{} \\\\ \phantom{xxxx} w_j=w_j-\alpha \frac{\partial}{\partial w_j}J(\vec{w},b) \\\\ \phantom{xxxx} b=b-\alpha \frac{\partial}{\partial b}J(\vec{w},b) \\\\ \text{\}}

將導數的部分展開後,會變成以下的式子。看起來和 regularized linear regression 的一模一樣,但是,要注意的是,式子中的 fw,b 是 logistic regression。

\text{repeat \{} \\\\ \phantom{xxxx} 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] \\\\ \phantom{xxxx} b=b-\alpha \frac{1}{m} \sum_{i=1}^m (f_{\vec{w},b}(\vec{x}^{(i)})-y^{(i)}) \\\\ \text{\}}

結語

Regularization 可以降低 parameters 的小大來解決 overfitting。當 parameters 越大時,受到的處罰會越大,也就是一次會縮小很多。

參考

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

You May Also Like