2022. 8. 5. 22:03ㆍML, DL/CS182
CS 182: Deep Learning
Head uGSI Brandon Trabucco btrabucco@berkeley.edu Office Hours: Th 10:00am-12:00pm Discussion(s): Fr 1:00pm-2:00pm
cs182sp21.github.io
앞서 2강 마지막 부분에서 다뤘던 empirical risk와 true risk를 생각해 보자. Empirical risk는 우리가 가진 데이터에 기반해 구한 loss의 기댓값이므로 항상 true risk와 같다고 할 수 없다. 즉 empirical risk의 최소화가 true risk의 최소화와 일치하지 않을 수 있다.
그리고 두 종류의 risk에 따라, overfitting과 underfitting의 개념을 추가적으로 다뤘다.
이번 강의에선 continuous variable을 가지고, continuous distribution을 가지는 regression에 집중해서 이에 대해 알아보자.
위는 gaussian distribution을 따르는 데이터를 가정한 뒤, probability에 log를 취한 형태이다. Varianve가 identity matrix라고 가정 시, 이 식은 MSE loss와 같은 형태가 된다.
이를 토대로 overfitting과 underfitting에 대해 더 알아보자.
Dataset이 변할 때, error가 어떻게 변할까?
Overfitting 쪽의 그래프를 보면 세 주황 그래프 모두 training data를 잘 예측하고 있으나 original data와는 굉장히 다름이 보인다. 각기 다른 training set으로 모델 훈련 시, 다른 모델이 나올 수 있다.
Underfitting 부분을 보면 주황 그래프의 모양은 비슷하다(직선이다). 그러나 training data도 잘 예측하지 못하고, original distribution과도 잘 맞지 않는다. Data에 따라 model function의 모양은 비슷하나 정확성이 낮다.
그렇다면 주어진 dataset에 대해, expected error는 어떤 형태로 나올까?
D가 P(D)를 따를 때, 예상 error는 다음과 같이 실제 error와 dataset의 확률을 곱해 가능한 모든 dataset에 대해 합을 구한 형태로 나타낼 수 있다. 물론 이론적인 접근이다. 가능한 모든 dataset을 실제로 구하는 것은 불가능에 가깝다.
이를 이용해 선택한 알고리즘이 dataset에 얼마나 독립적인지를 측정할 수 있고, 그에 따라 알고리즘을 개선할 수 있어 중요하다.
저 식을 다른 형태로 변형할 수 있다.
참고로 f-bar는 가능한 모든 dataset에 대해 나올 수 있는 모든 function들의 avearge function이다.
약간의 계산을 통해(f-bar x는 평균 바깥으로 나올 수 있어 0이 된다),
이와 같이 variance라는 term과 bias라는 term으로 나눌 수 있다.
Variance는 실제 function과 상관없이, 우리의 예측이 dataset이 변함에 따라 얼마나 달라지는지의 정도를,
Bias는 모든 예측의 평균(f-bar)이 true function(f)과 얼마나 떨어져있는지의 정도를 나타낸다고 할 수 있다.
이렇게 예상 error를 variance + bias^2로 나타낼 수 있다.
Variance가 너무 높다 --> 데이터가 너무 적거나 함수가 너무 복잡하다 --> overfitting
Bias가 너무 높다 --> 함수가 너무 간단하다 --> underfitting.
실제로 variance와 bias는 trade-off 관계이다.
그렇다면 어떻게 이 둘을 조절할 수 있을까?
데이터를 더 모은다면, variance를 줄일 수 있으나 bias에는 영향을 끼칠 수 없다.
모델의 class를 바꾸는 방법도 있다.( 너무 복잡한 식을 단순하게 한다던지)
이를 regularization을 통해 수행할 수 있다.
Loss function에 무언가를 더헤서 variance를 감소시키는 것을 regularization이라고 한다.
이를테면 high variance 상태일 경우 parameter를 결정하는 데 data가 충분히 정보를 주고 있지 못하니, loss function에 정보를 조금 더 줌으로써 좋은 결정을 내리도록 할 수 있다.
이 강의에선 bayesian perspective로 regularization을 다루나, 이것이 유일한 관점은 아니다.
먼저, prediction problem을 probablilstic하게 표현하자. (Learing problem -> probabilistic problem)
주어진 dataset D에 대해, 가장 나올 법한 parameter는 무엇일까? 조건부확률과 bayes' rule을 통해 식을 살짝 바꾼다.
그러면 그 확률은 p(D | θ)p(θ)에 비례함을 알 수 있다. (왜냐하면 p(D)는 변하지 않는 값이므로)
여기서 p(theta)를 prior라고 한다. Dataset을 보기 전에, 얼마나 θ가 나올 법한지에 대한 표현이다.
또한 p(D | theta)는 i.i.d. 가정 하에서 밑의 식과 같이 나타낼 수 있다.
이제 loss function에 prior에 관한 항을 추가해서, model을 smooth하게 할 수 있지 않을까?
간단히 prior ~ normal distribution 가정 하에(variance의 선택에 따라 분포의 모양이 변함), polynomial의 경우 작은 계수만 가능하게 한다면 함수를 보다 smooth하게 할 수 있다.
식을 조금 더 뜯어보면,
Gaussian distribution을 따르는 p(θ)이므로 식을 통해 확률함수를 표현할 수 있고, 그 식에 log를 취해 전개하면 θ에 관한 식으로 정리됨을 볼 수 있다. 이를 바탕으로 regularization term이 추가된 loss의 식을 재정립할 수 있다.
Loss = (실제 데이터와 예측의 차이) + (regularization).
앞선 강의에서 등장했던 softmax 함수에서, θ 앞의 계수가 커질수록 함수가 날카로워졌던 것처럼, logistic regression의 예시에서 nice boundary를 원한다면, 보다 작은 θ를 노리는 것이 좋다고 한다.
물론 regularization이 하나의 방법만 있는 것은 아니다. 앞서 보았던 방법은 L2 regularization이다. 그 외에도 L1 regularization, dropout, gradient penalty 등이 있다.
L1 regularization은 zeroing out dimension을 선호하게 한다(필요없는 계수를 0으로 만들어, 차원을 줄이는 것).
이외에도 여러 관점들이 있다.
머신러닝에서 loss에 어떤 heuristic하고 data에 의존하지 않는 term이 더해진다면, 그걸 regularizer라고 할 수 있다. 또한 이 regularizer는 hyperparameter를 모델에 추가함을 알아두자.
그래서 overfitting, underfitting은 어떻게 구분할 것이며, 어떤 알고리즘을 쓰고, 어떻게 hyperparameter를 고르는가?
일단 loss를 낮추는 것을 골라보는 것이 어떨까? 그러나, train 시 구하는 loss만으로는 충분하지 않을 것이다.
우선 ML의 workflow를 보자.
Dataset을 모두 train에 이용하는 것이 아닌, training set과 validation set으로 나눠서 훈련한다.
Training set은 θ와 optimizer hyperparameter(e.g. learning rate)를 고르는 데 사용하고,
validation set은 regularizer hyperparameter 선택, feature 선택, model class 조절 등에 사용한다.
- Parameter를 loss function을 이용해 훈련시킨다. 이때 train loss가 충분히 낮지 않다면 underfitting 상태이므로 regularization을 낮추고, optimizer를 개선한다.
- Validation loss가 train loss보다 지나치게 크다면 model이 overfitting 상태이니, regularization을 높인다.
그래프를 통해 살펴보자.
왼쪽이 overfitting, 오른쪽이 underfitting의 loss graph이다.
overfitting의 경우 validation loss가 증가하기 전에 멈추면 되지 않을까? 하는 생각을 할 수도 있는데,
이를 early stopping이라 한다.
다만 모든 overfitting을 완화하지는 않는다. 사실, 위의 화살표로 가리켜진 저 시점에서 멈춘다 해도 loss가 충분히 감소하지
않아 그렇게 좋은 모델은 아니리라 생각한다.
여차저차, 훈련을 잘 진행해서 overfitting과 underfittin이 없는 상태가 되었다고 생각해보자. 그럼 끝난 것일까? 그래서 이 classifier는 얼마나 좋은가? 이를 평가하기 위한 수단이 필요하다.
Validation set으로 평가하면 되지 않을까?? 하는 생각이 들 수 있지만, 이미 parameter와 feature 등을 조정하기 위해 사용한 데이터이기 때문에 모델은 저 데이터에 익숙해져 있어 제대로 된 결과가 나오지 않을 것이다.
이를 위해 test set을 따로 만들어서 사용한다.
위의 그림이, 일반적인 dataset의 분할이다.
Test set은 반드시 "final performance"를 위해서만 사용해야 한다!
'ML, DL > CS182' 카테고리의 다른 글
[CS182] Lecture 7 - Getting Neural Nets to Train (0) | 2022.08.09 |
---|---|
[CS182] Lecture 4 - Optimization (0) | 2022.08.07 |
[CS182] Lecture 2 - ML Basics 1. (0) | 2022.08.04 |
[CS182] Lecture 1 - Introduction (0) | 2022.08.04 |
[CS182] Lecture 6 - Convolutional Networks (0) | 2022.08.02 |