본문 바로가기

AI

Regularization 1 - L1,L2 regularization

과적합을 막는 regularization 기법

 

train error와 test error의 차이, variance를 줄일 수 있다

 

Logistic Regression에서의 regularization

 

기존의 loss function인 $ J(w,b) = \frac{1}{m}\sum_{i=1}^{m}L(\hat y^{(i)},y^{(i)}) $를 아래와 같이 바꿀 수 있다

$$ J(w,b) = \frac{1}{m}\sum_{i=1}^{m}L(\hat y^{(i)},y^{(i)}) + \frac{\lambda }{2m}\left \| w \right \| ^2_2+ \frac{\lambda }{2m}b^2$$ 

이렇게 loss function을 바꾼 것을 $ L_2 $ regularizatoin를 적용했다고 한다

$ \left \| w \right \| ^2_2 = \sum_{j=1}^{n}w_j^2 = w^Tw $인데 유클리디안 거리라고 생각할 수 있다

 

$L_2$말고 $L_1$ regularization 도 있는데 $ \left \| w \right \| ^2_2 $ 대신 $ \left \| w \right \| _1 = \sum_{j=1}^{n}|w_i| $를 쓰면 된다

 

bias term은 w에 비해 개수가 적어 대부분 regularizatoin을 생략한다고 한다

 

loss function에 이렇게 추가로 항을 붙여주면 $L_1, L_2$ 항은 언제나 양수이고 data에 영향을 받지 않기 때문에 data에 상관없이 loss가 커지게 된다

original loss와 $ L_1,L_2$ 를 모두 고려하며 gradient descent를 진행하게 된다

이 항들을 추가해주었을 때 과적합이 방지되는 이유는 특정 feature의 영향력이 줄어들기 때문이다

W에 너무 큰 값이 들어간다면 해당 feature의 영향력이 과도해지고 이는 과적합을 일으킨다

따라서 W에 들어있는 값들을 줄이기 위해 이와 같은 항을 추가해주는 것이다

W가 0에 더 가깝게 하고 싶으면 $L_2$, 조금 덜 빡빡하게 하려면 $L_1$을 쓰면 된다

 

또한 activation function의 관점에서도 이러한 방식의 regularizaion이 영향을 주는 것을 알 수 있다

activation function을 tanh나 sigmoid를 사용한다면 0과 가까운 지점에서는 linear 함수처럼 보이는 것을 알 수 있다

 

 

linear 함수를 activation function으로 사용하지 않는 이유는 linear 함수는 여러번 적용하여도 결국 최초의 Input에 한 번만 적용한 것과 같아 보일 수 있기 때문이다

하지만 반대로 이 개념을 이용하여 복잡한 네트워크를 만들지 않아 과적합을 막을 수 있다

이러한 효과는 ReLU에서는 얻을 수 없다!

 

$ \lambda $는 엔지니어링이 필요한 하이퍼 파라미터로 얼마나 정규화를 세게 적용할지 결정한다

요즘은 데이터가 많기 때문에 하이퍼 파라미터를 굳이 조절하면서 쓰는 것보다 데이터가 맞춰줄 것을 기대하는 경우도 많고 데이터가 적은 경우에만 regularization을 쓴다고 한다

 

$ L_2$ regularization을 신경망에서 사용하는 경우를 수식으로 살펴본다면 더 자세히 동작 원리를 알 수 있다

 

layer l

input : $ A^{[l-1]} $

output : $ A^{[l]} $

weight : $ W^{[l]} $

activation function : $ g^{[l]} $

$ A^{[l]}  = g^{[l]}(Z^{[l]}) = g^{[l]}(W^{[l]}\cdot A^{[l-1]} + b^{[l]} )  $이라고 하자

 

이 때 activation function이라고 하고 gradient descent를 사용한다면 

$ dZ^{[l]} = dA^{[l]} * g^{[l]}`(Z^{[l]}) $

$ dW^{[l]} = \frac{1}{m}dZ^{[l]}\cdot A^{[l-1]T} $

이다

 

Loss function을 regularization을 사용하여 아래와 같이 만들었다

$ J(W^{[1]},b^{[1]},...,W^{[L]},b^{[L]}) = \frac{1}{m}\sum_{1}^{i=m}L(\hat y^{(i)},y^{(i)}) + \frac{\lambda}{2m}\sum_{l=1}^{L}\left \| W^{l} \right \|^2_F $

 

이 때 $ \left \| W^{l} \right \|^2_F $를 Frobenius norm이라고 한다

$W^{[l]} :(n^{[l]},n^{[l-1]})$일 때, $ \left \| W^{l} \right \|^2_F = \sum_{i=1}^{n^{[l]}}\sum_{j=1}^{n^{[l-1]}}(w_{ij}^{[l]})^2 $ 가 정의이다

정의에 의해 미분은 $\frac{\partial \left \| W^{l} \right \|^2_F}{\partial W^{l}} = 2W^{[l]}$이 된다

 

loss function에 추가로 더해준 항이 위와 같기 때문에 $ dW^{[l]} = \frac{1}{m}dZ^{[l]}\cdot A^{[l-1]T} $ 은 $ dW^{[l]} = \frac{1}{m}dZ^{[l]}\cdot A^{[l-1]T} + \frac{\lambda}{m}W^{l} $이 된다

b는 상관없는 항이므로 바뀌지 않는다!

 

gradient descent가

$$  \begin{matrix}
{W^{[l]}} &=& W^{[l]} - \alpha dW^{[l]}\\
 &=& W^{[l]} - \alpha (\frac{1}{m}dZ^{[l]}\cdot A^{[l-1]T} + \frac{\lambda}{m}W^{l})\\
&=&(1-\frac{\alpha \lambda}{m}) W^{[l]} - \alpha (\frac{1}{m}dZ^{[l]}\cdot A^{[l-1]T} )\\
\end{matrix} $$

이렇게 바뀌게 되는데 기존의 방식에서 W가 줄어드는 것을 알 수 있다

이를 weight decay라고 한다

 

ITE4053 : Deep Lerarning ( Hanyang University )

'AI' 카테고리의 다른 글

Regularization 3 - Data Augmentation  (0) 2021.04.18
Regularization 2 - Dropout regularization  (0) 2021.04.18
Activation Functions  (0) 2021.04.13
Logistic Regression  (0) 2021.04.07
[Kaggle] Titanic Competition 타이타닉 생존자 예측하기  (0) 2021.01.03