지도/비지도 학습

지도학습: 모델이 입력값에 따른 결과값을 예측 혹은 측정하도록 하는 것

비지도학습: 입력값이 있어도 정답이라고 표현할 수 있는 결과는 없음. 그러나 데이터 세트에서 데이터간 상관관계나 구조를 익힐 수 있음. 데이터를 설명할 수 있는 구조를 찾는다, 데이터를 설명할 수 있는 좌표계를 재구성한다. 데이터를 설명하는 숨은 구조를 추정

학습 종류손실의 기준
지도 학습정답(label)
비지도 학습데이터 분포/구조

선형회귀에서의 지도학습

지도학습은 관측값을 가장 잘 예측하는 근사 함수를 찾는 과정이다

t=f(x)+ϵt = f(x) + \epsilon
  • tt: 관측된 데이터
  • f(x)f(x): 데이터를 발생시킨 모델
  • ϵ\epsilon: 자연에서 발생하는 오차 (noise)

여기서 f(x) 와 가장 근사한 함수 (모델) 을 찾고싶은 것.

이 f(x)를 임의의 다항식이라고 가정하면 아래와 같이 쓸 수 있다.

y(x,w)=w0+w1x+w2x2+w3x3++wMxMy(x,w)=j=0Mwjxjy(x,w) = w_0 + w_1 x + w_2 x^2 + w_3 x^3 + \cdots + w_M x^M \therefore y(x,w)=\sum_{j=0}^{M} w_j x^j
  • wnw_n: 각 피쳐가 결과에 얼마나 영향을 미치는지 나타내는 계수(weight)

그러면 실제 관측값과 우리가 유추하려는 위의 다항식 (모델) 의 차이는 아래와 같을 것이다

y(xn,w)tn)|y(x_n,w) - t_n)|

우리는 모든 관측값에 대해서 위의 절댓값이 최소가 되는 함수를 찾으면 된다.

하지만 여기서 문제가 발생한다. 우리가 궁금한건 ww(계수)값이고, ww에 대해서 위의 다항식은 1차식이다. 이를 그래프화하면 기울기가 다른 직선들의 나열로 최솟값이 정확히 어디에 위치하는지 계산할 수 없다.

이를 해결하기위해 절댓값 대신 제곱을 하여 2차식으로 만들어주면 그래프는 U 형태로 나타나기때문에 미분을 통해 기울기가 0인 지점인 최솟값을 쉽게 구할 수 있다.

E(w)=n=1N(y(xn,w)tn)2E(w)=\sum_{n=1}^{N} (y(x_n,w) - t_n)^2

E(w)E(w) 가 최소가 되게하는 y(x,w)y(x,w) 를 구하면 이 함수가 곧 f(x)f(x) 일 것이다.
하지만 단순히 기울기를 통해 최솟값을 쉽게 찾기위해 절댓값 대신 최소 제곱을 사용하는 것은 아님.

하지만 가장 처음 언급된 수식을 다시 살펴봐야한다.

t=f(x)+ϵt = f(x) + \epsilon

애초에 관측값 tt는 오차를 포함하고 있다. 방금 우리가 구한 함수는 이 오차까지 모두 섭렵한 함수이다. 즉, 함수가 훈련을 위한 데이터 tt 에 대해 과적합(overfitting)한 상태인 것이다.

실제 과적합 상태의 함수를 살펴보면 차수가 높은 xx 항의 계수 ww의 크기가 매우 크다. 이는 모든 훈련 데이터 수치를 맞추려다보니 많은 굴곡이 필요하게 되고 필연적으로 고차항의 계수가 커지는 것이다.
[그림1. pattern recognition and machine learning-bishop 에서 발췌]

이런 굴곡을 단순화시키기 위해, 즉, 실제 f(x)f(x) 에 근사한 함수를 찾기위해 ww 가 커지는것을 억제하기 위한 패널티를 추가한다.

E(w)=n=1N(y(xn,w)tn)2+λj=0Mwj2E(w)=\sum_{n=1}^{N} (y(x_n,w) - t_n)^2 + \lambda \sum_{j=0}^{M} w_j^2

갑자기 λ\lambda 가 튀어나왔다. λ\lambda 가 뜻하는 것은 굴곡의 단순화를 위한 패널티가 얼마나 중요한지를 정해주는 정도이다.

  • λ\lambda가 작으면 → 첫 항(훈련 데이터 맞추기)이 더 중요
  • λ\lambda가 크면 → 둘째 항(굴곡 단순화)이 더 중요

λ\lambda는 우리가 직접 여러 수치를 지정해서 ww 를 구하는 실험을 반복해서 각각의 λ\lambda 마다 그에 따른 ww를 구하고 이렇게 구한 y(w,x)y(w,x) 들의 예측 성능을 비교하여 오차가 가장 작은 λ,w\lambda, w 쌍으로 최종 함수를 선택하는 것이다.

손실함수

예측한 데이터와 실제 데이터간의 오차 (손해)를 수치화한 함수
손실함수의 기울기로 머신러닝 시 ww의 수치를 어느 방향으로 조정해줘야하는지 판단할 수 있음.
예측하려는 데이터에서의 오류 분포에 따라 손실함수가 달라짐

  • tt: 관측된 데이터
  • f(x)f(x): 모델의 예측값

0-1 loss

t=f(x)t = f(x): 0 (맞춤)
tf(x)t \neq f(x): 1 (틀림)
틀릴 확률이 가장 작은 값을 선택하게 되고 이는 곧 최빈값이 됨

L1 loss

f(x)t|f(x) - t|
절댓값 오차의 기대값을 최소화하는 예측값이 중앙값이 됨

L2 loss (MSE)

(f(x)t)2(f(x) - t)^2
오차 제곱의 기대값을 최소화하는 예측값이 평균이 됨 (가능한 정답들의 평균을 예측하게 됨)

Cross-Entropy loss

0-1 loss 손실함수처럼 분류에 사용되는 손실함수. 0-1 loss에서는 가장 확률이 큰 클래스를 선택하고, 그 선택이 정답이면 손실은 0이 된다. 정답이 고양이일때 모델이 아래와 같은 확률 출력을 내놓는다면 0-1 loss 손실함수 사용 시

[고양이=0.6,=0.3,=0.1][고양이=0.6,개=0.3,새=0.1]

고양이일 확률 손실은 0

[고양이=0.9,=0.05,=0.05][고양이=0.9,개=0.05,새=0.05]

이 경우 역시 고양이일 확률 손실은 0.

그러나 cross-entropy loss 손실함수에서는

[고양이=0.6,=0.3,=0.1][고양이=0.6,개=0.3,새=0.1]

정답 클래스(고양이)의 확률을 사용해 손실을 계산한다.

손실은 작을수록 정답일 확률이 높다는 것인데 이를 위해 cross-entropy 에서는 확률에 -log 를 취한 값을 손실로 사용하여 확률이 1에 가까워질수록 손실은 0에, 확률이 작아질수록 손실이 커지게 한다.

즉 이때 고양이의 확률 손실은 0.22\approx0.22에 해당한다

만약 모델의 결과가 아래와 같다면

[고양이=0.2,=0.7,=0.1][고양이=0.2,개=0.7,새=0.1]

log(0.2)0.7-log(0.2) \approx 0.7 이 되어 0-1 loss 와 다른 손실값이 도출되는 것

개념의미
likelihood데이터가 나올 확률
negative log-likelihood손실함수(loss)
MLE (Maximum Likelihood Estimation)손실함수를 최소화해서 (w)를 찾는 과정
결과최적 파라미터 ( \hat w )

위에 서술한 것 뿐만 아니라 더욱 많은 종류의 손실함수가 있다. 그런데 왜 유독 MSE 가 자료에 많이 나오고 중요하게 다뤄지며 많이 사용될까?

자연에서 얻어지는 데이터에서 오차를 살펴보면 이 오차들은 자연(?)스럽게도 정규분포를 따른다 (중심극한정리). 이를 이용해 수학자 가우스는 오차의 분포가 정규분포를 따른다고 가정하고 손실함수로 변환하면 (negative log-likelihood) L2 loss 함수로 귀결되기때문에 오차 분포가 정규분포인 상황에서는 L2 loss를 최소화 하는 방향이 가장 적합하다는 것을 증명한다.

L1 norm: 맨해튼 거리 (격자 거리)
L2 norm: 유클리드 거리 (직선 거리)


편향과 분산의 trade off

모델의 오차 f(x)tf(x) - t 를 말로 풀어내면
오차 = 실제 자연 발생 오차 + 잘못된 예측(학습된 모델)으로 인한 오차

자연적으로 발생하는 오차는 우리가 줄일 수 없다. 고로 잘못된 예측으로 인한 오차를 최소화하여야 하는데 잘못된 예측으로 인한 오차는 또 이렇게 분해될 수 있다.

잘못된 예측으로 인한 오차 = 모델 모양이 잘못됨(편향↑, 분산↓) + 모델 모양이 학습 데이터에 과적합(편향↓, 분산↑)

수식으로 풀어내면 더욱 더 명확하지만 내 이해도가 그만큼 깊지 않아 해당 포스트에서는 넘어가겠다.

An Introduction to Statistical Learning FIGURE 2.9

그림2.9 에서 점으로 표현된 데이터로 학습을 했을 때 초록색 선은 분산이 높은 상태이고 노란색 선은 편향이 높은 상태이다. MSE 를 낮추는 것이 목표인 우리는 편향과 분산의 트레이드 오프 관계에서 적절한 절충점을 찾아야 한다. 이를 잘 보여주는 그래프를 An Introduction to Statistical Learning 에서 그대로 발췌하였다.

Resampling Methods

한번의 test set을 통한 모델의 성능은 실제 성능과의 오차가 클 수 있기때문에 평가를 여러번 진행하여 모델의 일반화 성능을 추정하는 방법. 해당 포스트에서는 k-fold Cross-Validation 에 대해서만 다룬다.

Validation Set Approach

  • 가지고 있는 데이터를 train set / test set 으로 나누어 성능을 평가.
  • 간단하고 한번의 평가만 진행하기에 시간이 오래 걸리지 않음
  • train set 과 test set 이 어떻게 나뉘냐에 따라 결과가 크게 바뀜

Leave-One-Out Cross-Validation (LOOCV)

위의 validation set approach 가 평가를 한번만 진행하기에 발생하는 단점을 해결. 데이터 N 개에서 1개만 test set으로, 나머지 N-1 을 train set 으로 나눈 후 이 과정을 N 번 반복.

  • 일반화 성능을 가장 작은 편향으로 추정할 수 있음
  • 분산이 큼

k-Fold Cross-Validation

위의 Validation Set Approach 와 LOOCV 의 절충안

test set 크기 N/K\approx N/K
train set 크기 N(11/K)\approx N(1-1/K)

로 나누어서 K 번 반복 평가로 cross validation error (CV error) 를 구한다.
CV error 가 가장 작은 모델을 선택한다.

이때 k 는 일반적으로 10-fold 를 가장 많이 사용하고 그 외에는 계산량 / 분산 / 편향의 균형으로 조절한다.

더 알아봐야할 것

  • stratified k-fold
  • repeated k-fold

reference

  • James, G., Witten, D., Hastie, T., & Tibshirani, R. (2013).
    An Introduction to Statistical Learning: with Applications in R.
    New York: Springer.
  • Bishop, C. M. (2006). Pattern Recognition and Machine Learning. New York: Springer.

0개의 댓글