기계학습의 오차를 구성하고 있는 bias와 variance 와 함께 기계학습의 목표인 일반화와 밀접한 관계를 가진 overfitting과 underfitting에 대해 알아보자. 선택 과정을 이해하기 위해서 bias, variance, overfitting, underfitting 사이의 trade-off 관계를 깊게 알아보자.
기계학습 알고리즘을 선택할 때 핵심이 되는 개념이다.
bias는 편향,
variance는 분산,

여기서 과연 잘 동작하는 것은 무슨 의미인가? 이는 loss funcation으로 수치값으로 나타내게 된다.

기계학습의 일반화는 기계학습 알고리즘이 학습한 데이터에 대해서 잘하는 것보다 학습과정에서 보지 못한 데이터에 대해서 잘하는 것의 성능이다.
학습과정동안 학습 데이터에 대해서는 최적화를 하는 와중에 new unseen data에 대해서 잘하는 것에 대해 같이 고려를 해야한다.
이로써 overfitting과 underfitting과 밀접하게 연관을 가진다.
알고리즘을 fitting할 때 사소한 up, down에 맞추게 된다면 기계학습 알고리즘의 함수적 표현이 복잡하게 fitting이 된다. 보지 못한 영역에 대해서 up, down이 심하게 반영을 하게 된다. 이는 정확도는 희생하면서 일반화 능력을 더 높이기 위함이다.
학습 에러가 큼에도 불구하고 이 함수를 사용하는 이유는 보지 못한 영역에 대해서 부드럽게 반영하는 과정을 고려하였기 때문이다.
학습 데이터와 테스트 데이터를 얻는 과정에 대해서 알아본다.
개와 고양이를 분류하는 task를 진행한다.


E는 expectation으로 하나의 분포를 가지는 값을 하나의 숫자로 요약한 것이다.
p(x, y)가 True distribution을 따른다고 하였을 때, 그때 구한 Loss의 평균값, 혹은 기대값이 된다.
과적합 : Generalization error < Training error
너무 과하게 학습 데이터에 적합이 된 경우이다.
과소적합 : Generalization error > Training error
두 상황 중에서는 과소적합이 더 좋지 않은 경우이다. 학습 데이터는 input과 정답인 output이 모두 주어진 경우이기 때문에 과소적합이 발생하면 안된다. 모델의 선택의 문제가 있거나 학습이 잘 이루어지지 않은 것이다.
과적합이 발생한 경우는 학습 데이터에 대해서는 잘 학습을 한 경우이다.
- 일단 overfitting을 발생하게 만들어 training error를 최대한 줄일 수 있는 정도로 시도해본다.
- overfitting으로 training error와 validation error의 차이가 큰 경우에는 regularization을 통해서 training error을 조금은 손해를 보면서 validation error를 낮추어 두 차이를 줄이도록 한다.

데이터를 fitting하기 위해서 함수를 선택한다.
모델의 capacity와 training error는 반비례 관계로 capacity가 올라갈수록 training error는 무조건 작아진다.
복잡한 모델을 사용하연 학습데이터에 대해서는 error을 최소화하여 반영할 수 있지만, 데이터가 없는 구간에 데이터가 있는 경우에 대해서 smooth하게 반영한다. 두 경우를 비교하였을 때 후자의 경우가 더 확률이 높기 때문에 두번째가 더 좋은 모델이 된다. 이를 설명하는 법칙에 대해서 알아보자
Occam's Razor(오컴의 면도날 법칙)
인색하게 쓰는 것에 대한 원칙으로 "현상을 설명할 수 있는 모델이 2~3개 있다고 가정할 때, 가장 간단한 설명이 맞을 확률이 높다" 는 것이다. 경험에 대한 것이고 정답에 관한 것은 아니다.
정답은 직접 확인을 해야 알 수 있지만, 복잡한 경우가 맞기 위해서는 확률적으로 낮기에 가장 간단한 경우가 맞을 것이라는 것이다.

capacity와 training error의 관계를 표현한 그래프이다. 목표는 일반화 error를 최소화하는 것으로 녹색의 실선이 최적의 capacity를 지점을 찾아야 한다.
그래프의 빨간선을 기준으로 왼쪽은 underfitting의 영역이 되고, 오른쪽은 overfitting의 영역이 된다.
Generalization error은 training error와 달리 바로 구할 수 없고, 측정이 불가하며 validation을 통해서 예측할 수 밖에 없기 때문에 어렵다.
특정 solution에 대한 preference를 정규화라고 할 수 있다.

목적함수는 학습 데이터에 대해서 loss를 정의하고 loss가 minimized되도록 정의한다.
training loss가 최소화되는 방향의 W에 regularization term을 부여하여 과적합에 빠질 경우를 보완한다. 함수는 낮은 차수의 함수를 사용하는 것이 더 좋기 때문에 이를 더 선호한다.
모델의 capacity가 증가할수록 커지는 regularization term을 사용하여 모델의 loss를 최소화하는 것뿐만 아니라 모델의 capacity도 최소화하도록 정규화를 진행한다.
그냥 parameter는 학습을 통해서 배우는 변수들이 되고,
hyperparameter는 학습을 위해서 주어져야 하는 변수들이 된다.

목적함수의 두가지 term에서 hyperparameter 람다를 적게주면, 첫번째 term만 고려하게 된다. 람다를 크게주게 되면 두번째 term를 고려하게 되는 것이다.
최적의 기계학습 모델을 찾는 과정에서 가장 중요한 개념이다.

bias는 편향, variance는 분산이 된다.
영점도 잘 맞아서 10점에 쏠 수 있어야 하며, 널뛰지 않고 균일하게 쏴야한다.
구하는 방법
- bias는 예측한 것들에 대한 평균을 구하고, 예측의 평균값과 true값과의 차이로 구할 수 있다.
- variance는 true값을 알 필요없이, 예측한 것들에 대한 평균을 구하고, 예측의 평균값과의 거리의 제곱을 통해서 구할 수 있다. (X는 분포를 가지는 random variable)

generalization error 혹은 test error를 낮추려면 bias와 variance가 모두 낮아야 한다.
기계학습에서는 bias와 variance가 trade-off가 존재하기 때문에 두 값을 모두 낮추기 위해서 많이 사용되는 방식은 Ensemble Learning이다.

다음 이미지를 통해서 bias와 variance, overfitting과 underfitting의 관계에 대해서 정리해보자.
overfitting은 과하게 적합이 되어, training data의 노이즈까지도 적합이 된다.
그럼으로 모델은 널뛰게 되며 unstable하여 variance값이 올라가게 된다. 모델의 capacity가 증가하면 증가할 수록 variance가 올라가게 된다.
variance를 잡기 위한 가장 좋은 방법은 training data의 수를 늘리는 것이다.
regularization을 사용하는 이유는 data가 충분하지 않아서 어떤 preference를 주기 위함이다.
bias가 높은 것은 영점이 맞지 않은 것으로 별로 정확하지 않는 모델로 underfitting과 관련이 있는 것을 의미한다.
모델의 복잡도가 낮다는 것이고 데이터가 필요로 하는 복잡도보다 부족한 것이다.
bias를 잡기 위해서는 모델의 complexicity를 올리는 것으로 해결할 수 있다.
모델의 complexicity를 올릴수록 bias는 낮아지지만,trade-off 관계로 인해 variance가 올라갈 확률이 높다.
bias는 데이터를 더 모은다고 해결되지 않는다. 이미 선형모델을 사용하고 있는 경우 데이터를 표현할 수 있는 능력이 부족한 것임으로 데이터로 해결할 수 없다.