[머신러닝] Lecture 07 Regularization

이재호·2025년 3월 2일

머신러닝

목록 보기
6/18

https://www.youtube.com/watch?v=IfUV3fmWJeY&list=PLiPvV5TNogxIS4bHQVW4pMkj4CHA8COdX&index=7

linear regression에서 모델을 학습할 때, 아래 그림과 같이 다양한 예측 함수(hθ(x)h_\theta(x))가 나올 수 있다.

  • 왼쪽 그래프는 "under-fitting"을 보여준다.
    • 이 경우 학습 데이터에 대한 예측이 제대로 되지 않는 것을 확인할 수 있다.
    • 이를 "high bias"라고 부르기도 한다.
    • 또한, 함수식을 보면, 매우 단순한 1차 함수임을 알 수 있다.
  • 중간 그래프는 학습이 잘된 경우를 보여준다.
  • 오른쪽 그래프는 "over-fitting"을 보여준다.
    • 이 경우 학습 데이터에 대한 예측은 정확할 수 있지만, 새로운 데이터에 대해서는 제대로 예측하지 못한다.
    • 이를 "high variance"라고 부르기도 한다.
    • 다양한 feature들이 존재하는 고차원 함수임을 알 수 있다.
  • 이처럼 overfitting은 feature가 너무 많은 경우에 발생하며, 학습 데이터에 대해서는 잘 예측하지만, 새로운 데이터에 대해서는 예측을 잘하지 못한다.

linear regression뿐만 아니라 logistic regression에서도 똑같이 underfitting, overfitting 등의 문제가 발생할 수 있다.

만약 feature들이 너무 많을 경우, 하나의 feature에 대해서만 학습하는 경우가 있다. 물론 잘될 수도 있지만, 학습 데이터가 너무 적거나 하는 경우에 마찬가지로 overfitting 문제가 발생할 수 있다.

그렇다면 overfitting 문제를 어떻게 해결할 수 있을까. 아래 그림을 보자.

overfitting을 다룰 수 있는 방법은 크게 두 방법이 있다.

  • feature 수 줄이기
    • 나중에 배울 model selection alg.을 통해 어떤 feature만 유지할지 결정한다.
  • Regularization
    • 모든 feature들을 갖고 있되, 각 feature들의 parameter θj\theta_j 값을 조정한다.
    • feature들이 많을 경우에도 잘 동작하며, feature들이 예측에 영향을 조금 끼치게 만든다.

먼저 Regularization이 어떤 방식으로 적용되는지 알아보자. 아래 그림은 직관적으로 이 방식을 설명하고 있다.

  • 오른쪽 그래프는 hθ(x)=θ0+θ1x+θ2x2+θ3x3+θ4x4h_\theta(x)=\theta_0+\theta_1x+\theta_2x^2+\theta_3x^3+\theta_4x^4에 대한 그래프이다. feature는 하나지만, 차원이 매우 높은 함수이다. 따라서, overfitting 문제가 있다.
  • 그렇다면 이를 좌측 그래프처럼 만들려면 어떻게 해야할까? 고차원에 해당하는 파라미터 θ3\theta_3θ4\theta_4의 값이 0에 가깝게 되도록 만들어야 한다.
  • 그리고 이 방법은 그림의 아래 수식과 같이 적용할 수 있다.
    • minθ12m[i=1m(hθ(xi)yi)2+1000θ32+1000θ42]\underset{\theta}{\min}\frac{1}{2m}[ \sum_{i=1}^m{ (h_\theta(x^{i})-y^i)^2 }+ 1000\theta_3^2 + 1000\theta_4^2]
    • 이는 1000과 같이 매우 큰 수를 parameter에 부여하여 해당 파라미터의 값이 작아지도록 만드는 방법이다.
    • 이와 같은 방식을 적용하면, θ\theta의 값이 거의 0에 가까워질 것이고, hθ(x)=θ0+θ1x+θ2x2h_\theta(x)=\theta_0+\theta_1x+\theta_2x^2와 같이 함수가 나오도록 만들 수 있다.

위에서는 θ3\theta_3, θ4\theta_4에 대해서만 적용했지만, 아래와 같이 feature가 매우 많은 경우에도 똑같이 적용하면 된다.

  • cost function을 J(θ)=12m[i=1m(hθ(xi)yi)2+λi=1100θj2]J(\theta) = \frac{1}{2m}[ \sum_{i=1}^m{ (h_\theta(x^{i})-y^i)^2 }+ \lambda \sum_{i=1}^{100}\theta_j^2] 와 같이 정의한다.
  • 여기서 λ\lambda는 regularization parameter를 의미한다.
  • 그리고 중요한 점이 있는데, θ0\theta_0에 대해서는 이 과정을 제외해야 한다는 것이다.
  • 강의에서는 n\sum^n으로 표기를 하였는데, 여기서 nn은 feature들의 개수를 의미한다.

따라서, 새롭게 정의한 cost function J(θ)J(\theta)를 가지고 모델을 학습하면, 기존의 overfitting 문제를 해결할 수 있을 것이다.

그리고 우리는 regularization parameter λ\lambda 값을 잘 선택해야 한다.

  • 만약 λ\lambda가 너무 크다면 각 λθj2\lambda \sum\theta_j^2의 값들에 대해서 무조건 큰 값이 나오게 될 것이고, 이를 최소화 하기 위해 모든 feature parameter θj\theta_j들의 값은 0으로 수렴할 것이다.
  • 이렇게 되면 예측 함수는 hθ(x)=θ0h_\theta(x)=\theta_0과 같이 나올 수밖에 없다.
  • 그렇다면 regularization parameter λ\lambda 값을 어떻게 잘 선택할 수 있을까?

이전의 강의들에서 최적의 θ\theta를 찾기 위한 gradient descent 방식을 배웠다. 그렇다면 regularization parameter λ\lambda가 적용된 gradient descent 방식은 어떨까? 아래 그림을 보자.

  • 우선 regularization은 θ0\theta_0에 대해서는 연산을 하지 않는다. 따라서 θ0\theta_0는 따로 제외한다.
  • 다음으로 θj\theta_j (j=1,2,3,...,nj=1,2,3, ..., n)에 대해서는 다음과 같은 gradient descent 식을 적용한다.
    • cost function : J(θj)=12m[i=1m(hθ(xi)yi)2+λθj2]J(\theta_j) = \frac{1}{2m}[ \sum_{i=1}^m{ (h_\theta(x^{i})-y^i)^2 }+ \lambda\theta_j^2]
    • cost function에 편미분을 적용하면, θjJ(θ)=1mi=1m(hθ(xi)yi)xji+λmθj\frac{\partial}{\partial{\theta_j}}J(\theta) = \frac{1}{m}{\sum_{i=1}^m {(h_\theta(x^i)-y^i)x^i_j +\frac{\lambda}{m}\theta_j} }가 된다.
    • 그리고 gradient descent를 적용하면,
      θj:=θj(1αλm)α1mi=1m(hθ(xi)yi)xji\theta_j := \theta_j(1-\alpha \frac{\lambda}{m})-\alpha{\frac{1}{m}{\sum_{i=1}^m {(h_\theta(x^i)-y^i)x^i_j}}} 를 구할 수 있다.
    • 여기서 1αλm1-\alpha \frac{\lambda}{m}은 무조건 11보다 작은 것을 알 수 있다. 이에 따라 θj\theta_j의 값은 점점 줄어든다는 것을 확인할 수 있다.

그리고 최적의 θ\theta를 찾는 방법은 gradient descent 방식뿐만 아니라 normal equation 방식도 존재한다.

  • 그리고 이를 수식으로 작성하면, θ=(XTX+λD)1XTy\theta=(X^TX+\lambda D)^{-1}X^Ty 와 같다.
  • DDD1,1D_{1,1}만 0이고, 나머지 Di,iD_{i,i}은 1인 대각행렬로 (n+1)×(n+1)(n+1)\times(n+1) 크기를 갖는다.

그렇다면 logistic regression에 regularization은 어떻게 적용할 수 있을까.
그저 cost function이 약간 다르다는 차이만 있을 뿐, linear regression과 거의 동일하다.

마찬가지로 cost function J(θ)J(\theta)θ\theta에 대한 편미분값으로 gradient descent를 적용하면 된다.

profile
천천히, 그리고 꾸준히.

0개의 댓글