Regularization (C2W1L04)
높은 분산으로 신경망이 데이터를 과대적합하는 문제가 의심된다면 가장 처음 시도해야 할 것은 정규화이다.
높은 분산을 해결하는 다른 방법은 더 많은 훈련 데이터를 얻는 것이다.
꽤 믿을만한 방법이지만 더 많은 훈련 데이터를 얻는 것은 비용이 많이 들어가기 마련이다.
그러나 정규화를 추가하는 것은 과대적합을 막고 신경망의 분산을 줄이는데 도움이 된다.
강의에서는 로지스틱 회귀를 사용해 방법을 제시하였다.
Logistic Regression에서의 정규화 (Regularization)
비용 함수의 기본 형태
Logistic Regression의 기본 비용 함수는 다음과 같이 정의된 비용함수 J를 최소화하는 것이다.
$$ J(\omega, {\small b} ) = \frac{1}{m} \sum_{i=1}^{m} L(\hat{y}^{(i)}, y^{(i)}) $$
여기서,
- \( L( \hat{y}^{(i)}, y^{(i)}) \) : 예측값 \( \hat{y}^{(i)} \) 와 실제값 \( y^{(i)} \) 간의 손실 함수
- \( m \) : 데이터 샘플 수
정규화를 적용하면 비용 함수에 추가적인 정규화 항이 더해진다.
L2 정규화 (Ridge Regularization)
L2 정규화는 비용 함수에 가중치의 제곱합을 추가하여 모델이 복잡해지는 것을 방지한다. 정규화가 적용된 비용 함수는 아래와 같다.
$$ J(\omega, {\small b} ) = \frac{1}{m} \sum_{i=1}^{m} L(\hat{y}^{(i)}, y^{(i)}) + \frac{\lambda}{2m} ||\omega||_2^2 $$
- \( ||w||_2^2 = \sum_{j=1}^{n_x} w_j^2 = w^T w \) : 가중치 벡터의 L2 노름(제곱합)
- \( \lambda \) : 정규화 강도를 조절하는 하이퍼파라미터
L2 정규화는 모든 가중치가 0에 가까워지도록 만들어 모델의 복잡도를 줄이고 정규화를 도와준다.
L1 정규화 (Lasso Regularization)
L1 정규화는 비용 함수에 가중치의 절댓값 합을 추가합니다. 정규화가 적용된 비용 함수는 아래와 같다.
$$ J(\omega, {\small b} ) = \frac{1}{m} \sum_{i=1}^{m} L(y^{(i)}, \hat{y}^{(i)}) + \frac{\lambda}{2m} ||\omega||_1 $$
- \( ||w||_1 = \sum_{j=1}^{n_x} |w_j| \) : 가중치 벡터의 L1 노름(절댓값 합)
L1 정규화를 사용하게 되면 \( \omega \)는 희소해지는데 이는 \( \omega \) 벡터 안에 0이 많아진다는 의미이다.
어떤 사람들은 이것이 모델을 압축하는데 도움이 된다고 말한다. 왜냐하면 특정 매개변수가 0일 경우 일부 가중치를 0으로 만들어 희소 모델을 생성하는 데 유리하다.
그래서 모델을 압축하겠다는 목표가 있지 않는 이상 이 정규화를 많이 사용하지는 않는다.
L1 정규화와 L2 정규화의 차이점
특징 | L1 정규화 | L2 정규화 |
정규화 항 | \( ||w||_1 \) | \( ||w||_2^2 \) |
효과 | 일부 가중치를 0으로 만들어 희소성 유지 | 모든 가중치를 0에 가깝게 만듦 |
사용 목적 | 특성 선택(feature selection) | 일반적인 과적합 방지 |
References
https://www.youtube.com/watch?v=6g0t3Phly2M&list=PLkDaE6sCZn6Hn0vK8co82zjQtt3T2Nkqc&index=4