cs [Lecture 3] Error Analysis
본문 바로가기
  • 매일 한걸음씩
  • 매일 한걸음씩
개발/UC Berkely CS182

[Lecture 3] Error Analysis

by 시몬쯔 2021. 4. 4.
728x90
반응형

 

 

Part 1

 

이번 강의에서는 error에 대한 분석이 주를 이룬다.

 

Empirical risk and true risk

예를 들어, zero-one loss를 생각해보자.

 

이 loss는 말그대로 답이면 0, 아니면 1인 loss function이다.

 

 

여기서의 Risk는 loss function의 평균값을 의미한다.

 

 

하지만 학습하는 동안 우리는 위에 나와있는 확률분포 $p(x)$를 모른다. 그냥 데이터 $D$만 알뿐이다.

 

그러므로 $p(x)$와 같은 확률분포함수가 아닌 $(x_i, y_i)$와 같은 데이터쌍을 이용해서 risk를 계산해낸다.

 

앞 강의 Lecture 2에서 잠깐 소개한 supervised learning은 대개 empirical risk minimization을 하는 방식이다.

 

하지만 이 학습과정이 실제 risk도 최소화하는가? ❌❌

 

이를 표현하는 용어가 "Overfitting"이다. Empirical risk는 낮고 true risk는 높은 경우이다.

이전에 본 데이터에서만 잘 모델이 예측하는 경우이다.

 

Overfitting의 두 가지의 원인을 생각할 수 있다.

 

1. 데이터셋이 너무 작은 경우 ( 많은 예시를 못봐서 일반화가 불가능한 경우이다. )

2. 모델이 너무 "강력한" 경우 ( 잘 작동한다는 것이 아니고 너무 많은 파라미터나 capacity를 가진 것이다. training data에만 너무 맞춤형으로 잘 작동함. ) 

 

 

반대의 경우 "Underfitting"이 있다.

empirical risk와 true risk 둘 다 높은 경우이다.

 

두 가지 원인이 있는데,

 

1. 모델이 너무 "약한" 경우 (너무 파라미터와 capacity가 적어서 제대로 패턴 학습이 안된 경우이다.)

2. optimizer가 잘 설정이 안된 경우이다. (즉, 최소화가 잘 안되는 경우, 예를 들면 learning rate를 너무 크게 설정해서 minimum값을 지나치는 경우가 있다.)

 

 

 

지난 시간에는 classification에 대해 다루었는데 이번에는 regression에 대해 다룬다. 즉 정해진 클래스를 예측하는 것이 아닌 continuous값으로 매핑하는 예측에 대해 다룬다.

 

 

자 이제 좀 더 수학적으로 overfitting과 underfitting을 분석해보자.

 

Regression은 Input을 continuous distribution에 mapping하는 맥락이다. 

이 distribution을 가장 간단한 distribution인 gaussian distribution으로 가정해보자.

 

Normal distribution은 평균과 분산이라는 두 가지 파라미터를 가진다. 여기서 평균은 하나의 상수값이라기 보다는 함수값이 된다. 

두번째 항에 log가 들어가야할 듯
normal 분포이므로 분산 행렬을 Identity matrix로 둔다면 간단하게 정리가 가능하다.

마지막 항을 보면 Mean Squared Error loss가 된 것을 알 수 있다. (사실 이제까지 MSE를 쓰는걸 자연스럽게 생각했는데 이렇게 가우시안 분포로 엮여있다고 생각하니 신기했다.)

 

 

 

좀 더 깊게 이해해보자!

 

 

Q. Training set에 따라 어떻게 에러가 변할까?

 

이 질문이 왜 중요할까?

 

다음의 그래프를 가지고 이해해보자.

파란점들이 가지고 있는 데이터셋이라고 하고 오렌지색의 선이 예측한 regression model이라 해보자.

 

 

이러한 경우를 "Overfitting"이라 한다.

 

주황색의 선이 모든 파란점을 잘 맞추었기 때문이다.

 

아래의 예시가 대표적인 overfitting을 표현하는 그래프이다.

 

Training set인 파란점들은 잘 예측했지만 다른 데이터가 주어지면 예측 성능이 훅 내려가는 경우이다.

 

 

그럼 Underfitting 그래프는 어떨까?

Training data인 파란점들조차 제대로 예측하지 못하는 경우이다.

 

 

 

✔️정리해보면,

 

Overfitting은 학습 데이터는 잘 맞추었지만 다른 데이터에는 잘 작동하지 못하는 경우이다. 

학습 데이터에 따라 함수가 매우 다르게 움직인다.

 

Underfitting은 학습데이터에도 잘 작동하지 않아 모델이 아예 잘 작동하지 않는 경우이다.

 

 

 

그럼 데이터셋($D$)에 대한 분포가 주어졌을 때, Expected error는 어떻게 될까?

 

 

데이터셋에 대한 분포 함수가 $f_D (x)$라 할 때, error를 위와 같이 표현가능하다.

 

 

이 Error를 좀 더 들여다보자.

 

$\begin{equation}
E_{\mathcal{D} \sim p(\mathcal{D})}\left[\left\|f_{\mathcal{D}}(x)-f(x)\right\|^{2}\right]=\sum_{\mathcal{D}} p(\mathcal{D})\left\|f_{\mathcal{D}}(x)-f(x)\right\|^{2}
\end{equation}$

 

이러한 이해는 모델이 잘 작동하지 않을때에 인사이트를 제공하는 중요한 역할을 한다.

 

아까 말했듯이 overfitting은 데이터가 달라짐에 따라 모델이 천차만별로 변하는 특징을 갖는다.

 

 

식을 좀 더 살펴보자.

 

모든 데이터에 대한 값의 평균을 다음과 같이 정의해보자.

 

 

이를 통해 Error를 아래와 같이 정리할 수 있다.

 

마지막에 $\begin{equation}
(\bar{f}(x)-f(x))
\end{equation}$ 는 $D$에 영향받지 않으므로 밖으로 뺄 수 있고, $\bar{f}(x)$의 정의에 따라 항이 통째로 날라가버린다.

 

따라서 다음과 같이 간단해진다.

 

 

뒤의 항은 Bias라 하고 앞의 항은 분산이 된다.

 

즉, 앞의 분산항은 True function이 뭐든간에 예측이 데이터셋에 따라 얼마나 다른지를 나타내는 지표이고,

뒤의 Bias항은 우리가 데이터를 얼마나 가지고있는지에 상관없이 나타나는 에러로 데이터의 평균 예측값과 실제값이 얼마나 차이나는지에 대해 나타내는 지표이다.

 

즉 Error는 VarianceBias를 합한 값으로 표현이 되는데,

 

앞서 말한 Overfitting은 Variance가 큰 경우이다. 너무 데이터가 적거나 함수가 복잡할 때 나타난다.

반대로 Underfitting은 함수가 데이터에 비해 너무 단순한 경우로 Bias가 큰 경우이다.

 

 

👉🏻 이 Variance와 Bias를 적절히 조절하는 것이 모델 학습에 관건이라 할 수 있다.(Trade-off 관계)

 

 

이제 어떻게 이 trade off를 다룰지 생각해보자.

 

 

 


Part 2

 

How to regulate bias/variance?

 

대표적인 방법으로는 다음이 있다.

 

1. 데이터를 더 모은다.

 

👉🏻 분산도 처리하고 bias에 영향을 미치지도 않는다.

 

위의 그래프로 보면 파란점이 더 늘어나는 경우로 모델에게 정보를 더 주는 경우이다.(Underfitting은 모델이 능력치가 딸려서(?) 나타나는 현상이므로 데이터가 더 많다고 영향을 받지 않는다.)

 

 

2. 모델의 class를 바꾼다.

 

즉, 모델을 좀 더 단순화시키는 방법이다.

어떻게 Smoothly 단순화시킬까?

 

👉🏻 이에 대한 방법이 Regularization이다.

 

 

 

 

Regularization

정규화는 쉽게 말하자면 분산을 줄이기 위해 loss function에 추가하는 것이다.

 

앞서 보았듯이, 분산이 큰 것은 데이터가 충분히 정보를 주지 않기 때문이다.

 

만약 데이터에 충분한 정보가 없다면 Loss function을 통해 줄 수 있을까?

 

다음의 세 가지는 모두 학습 에러가 0인 경우이다.

하지만 직관적으로보면 마지막의 경우가 실제 함수를 잘 따라가는 것을 볼 수 있다.

어떻게 똑같이 데이터가 주어졌을 때 마지막의 경우처럼 잘 예측하는 모델로 만들까?

 

 

베이지안 관점에서 보자.

 

주어진 질문은 다음과 같다 : Data $D$가 주어졌을 때 parameter $\theta$는 어떻게 될까?

($p(\theta|D)$로 표현)

 

$p(\theta)$는 prior라고 하는 항으로 데이터를 고려하기 전 $\theta$가 어떻게 구성되어있는지(?)에 대한 값이다.

앞의 $p(D|\theta)$는 데이터로 계산이 가능하기에 prior가 어떻게 선택되냐에 따라 전체값이 천차만별이 된다.

그럴려면 prior가 좀 더 generous한, smooth한 값이 되어야 한다.

 

 

이를 통해 다음과 같은 loss function을 고려할 수 있다.

 

 

앞에서와 같이 prior를 가장 간단한 Normal distribution을 가정해보자.

 

예를 들어, 다항식으로 linear regression을 한다고 할 때, 왼쪽과 같은 경우에는 몇몇의 계수($\theta$)가 큰 경우이고,

오른쪽은 계수들이 작은 경우이다.(자기 주장이 적음) 이를 통해, 좀 더 일반화된 모델이 된다.

 

식을 좀 더 들여다보자.

 

앞서 말했듯이, Normal distribution을 가정하여 식을 전개해보면 다음과 같다.

 

theta에 대한 이차식이 된다.

 

위의 $\lambda$는 hyperparameter라 한다. 이에 대해서는 뒤의 강의에서 더 깊게 다룰 예정이다.

 

총 loss function을 정리해보자면 다음과 같이 간단한 식이 된다.(역시 2Norm이 나오면 gaussian분포와 모두 관련이 있는듯하다.)

 

첫번째항은 실제 데이터와의 차이를 표현한 식(MSE)이고 뒤의 항은 파라미터의 2norm을 작게만드는 regularization 항이다. 그럼 2norm만을 사용할까?  ❌

 

여러가지 regualarizer가 있다.

 

1 norm, 2 norm의 시각화

1 norm은 일반적으로 필요없는 계수를 0으로 만드는데에 유용하다. 이를 통해 dimension을 대폭 줄일 수 있다.

 

 

 

🌟 이러한 Regularizer항을 추가하는 방법외에도 Dropout이나 Gradient Penalty와 같이 다른 방법들도 많이 존재한다.

 

여기서는 정규화를 베이지안 관점에서 설명하였지만, 수치적인 관점에서도 설명가능하다.(constraint를 추가하여 영역을 줄인다고도 설명가능) 또한, 최적화 관점에서는 loss landscape를 더 찾기 쉽게 만든다고도 해석 가능하다. 

 

이러한 정규화에서 위의 lambda와 같은 하이퍼파라미터들이 등장하였는데, 이는 학습에 큰 역할을 하게 된다.

잘못 선택했다가는 최적해를 못찾게 되기 때문이다.

 

 


Part 3

 

위에서 강의를 쭉 들어오면서 많은 질문들이 생겼을 것이다.

 

 

예를 들자면, 

 

Overfitting인지 underfitting인지 어떻게 알아내나?

어떤 알고리즘을 쓸지 어떻게 아나?

하이퍼파라미터를 어떻게 선택해야하나 등등 실제 모델 학습에 대한 의문점들이 마구 생겨난다.

 

 

이를 해결하기 위해, 머신러닝의 전체 workflow를 보자.

 

먼저 데이터셋이 있고 이를 통해 학습을 하게 된다. 가지고 있는 데이터셋은 두 종류로 나누게 되는데 여기서의 validation set은 학습전략을 선택하는 데에 사용된다.(하이퍼파라미터 선택, feature 선택, class 수 선택 등등)

 

먼저 Training set으로 학습을 해보자. 여기서의 Loss가 충분히 낮지 않다면 Underfitting을 의심할 수 있다. 정규화를 낮추거나 optimizer를 수정함으로써 해결할 수 있다.

 

다음으로 Validation set으로 예측을 해보았을 때, 만약 Validation loss가 train loss보다 훨씬 크다면 Overfitting을 의심할 수 있다. 정규화를 증가시키는 방법 등으로 해결가능하다.

 

 

 

다음 Learning curve를 보자.

 

두 가지의 그래프는 무엇을 의미하는가?

 

첫번째에서 빨간 그래프는 즉, train loss는 step을 거듭할수록 계속해서 낮아지지만, validation loss는 낮아졌다가 높아지는 것을 알 수 있다. 그럼 validation loss가 다시 증가할 때 학습을 멈춰야 할까? 어디서 학습을 멈춰야 할까?

 

그럼 최종적으로 모델을 사용할 때 어떻게 성능을 테스트할 수 있을까?

 

Validation loss로 최종 성능을 측정할 수 있을까? ❌ 

정답은 No. 이미 하이퍼파라미터 선택시에 Validation set을 사용했기 때문에 제3의 데이터가 필요하다.

 

다시 workflow로 돌아가자.

 

 

사실 처음의 데이터셋은 2가지가 아닌 3가지로 나뉘어야 한다.

 

Training set, Validation set and Test set이다.

 

마지막의 Test set은 최종 성능을 측정하는데에 사용되는 set이다.

 

 

 


Lecture 3를 요약해보자면 다음과 같다.

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형

'개발 > UC Berkely CS182' 카테고리의 다른 글

[Lecture 5] Backpropagation  (6) 2021.04.18
[Lecture 4] Optimization  (2) 2021.04.11
[Lecture 2] Machine Learning Basics  (2) 2021.03.28
[Lecture 1] Introduction  (2) 2021.03.20
[시작] Deep Learning: CS 182 Spring 2021  (0) 2021.03.20

댓글