Machine Learning 이란?

  • 경험을 통해 자동으로 개선하는 컴퓨터 알고리즘의 연구
  • 학습데이터 : 입력벡터들 $x_1, \dots, x_n$, 목표값들 $t_1, \dots, t_n$
  • 머신러닝 : 알고리즘의 결과는 목표값을 예측하는 함수 $y(x)$

 

 

핵심개념들

  • 학습단계(training or learning phase) : 함수 $y(x)$를 학습데이터에 기반해 결정하는 단계
  • 시험셋(test set) : 모델을 평가하기 위해서 사용하는 새로운 데이터
  • 일반화(Generalization) : 모델에서 학습에 사용된 데이터가 아닌 이전에 접하지 못한 새로운 데이터에 대해
    올바른 예측을 수행하는 역량
  • 지도학습(Supervised learning) : target이 주어진 경우
    • 분류(classification)
    • 회귀(regression)
  • 비지도학습(Unsupervised learning) : target이 없는 경우
    • 군집(clustering)

 

 


1. 다항식 곡선 근사 (Polynomial Curve fitting)

  • 학습데이터 : 입력벡터 $\textbf{X} = (x_1, \dots, x_n)^T, \quad t = (t_1, \dots, t_n)^T$
  • 목표 : 새로운 입력벡터 $\hat{x}$이 주어졌을 때 목표값 $\hat{t}$를 예측하는 것
  • 확률이론(Probability theory) : 예측값의 불확실성을 정량화시켜 표현할 수 있는 수학적인 프레임워크를 제공한다.
  • 결정이론(decision theory) : 확률적 표현을 바탕으로 최적의 예측을 수행할 수 있는 방법론을 제공한다.

 

A polynomial function linear in w

$y(x, \textbf{w}) = w_0 + w_1x + w_2x + \dots + w_Mx^M = \sum_{j=0}^M w_jx^j$
우리가 사용할 함수 $y$는 $x$가 입력, $w$가 모델 파라미터로 주어진다. $w$는 계수, 모델 파라미터라고 부른다.
여기서는 M+1개의 모델 파라미터가 있음을 알 수 있다.
$x$에 대해서 다항식이 된다. $w$에 대해서는 선형식이 된다.
$x$는 데이터에서 주어지는 값이고 계속 바뀔 수 있다.
$w$같은 경우 고정되어 있는 값이다. 우리의 목표는 고정되어있지만 알지 못하는 $w$의 값을 찾아내는 것이다.

 

 

 

오차함수 (Error function)

주어진 $w$에 대한 함수값 $y$와 데이터에서 주어진 $t$값 사이의 차이를 표현한다.
이 차이를 오차함수라고 한다.
오차함수들 중에서 가장 일반적인 함수는 오차의 제곱합 함수이다.
이는 $w$에 대한 함수이다. $\frac{1}{2}$은 간단하게 하기 위해 곱한다.
제곱을 하기 때문에 $E$라는 이 함수는 항상 양수가 된다. 목표값과 예측값이 같으면 0이 된다.

 

 

 

 

 

과소적합(Under-fitting)과 과대적합(Over-fitting)

$M$의 값을 결정해야 한다.
$M$값에 따라 1차식, 2차식 등등 형태가 바뀐다.
$M=0$이면 기울기가 없는 직선이 된다. 좋지 않은 모델, 이를 과소적합(Under-fitting)이라고 한다.
$M=1$이면 기울기는 있지만 여전히 직선이다. $sin$함수를 제대로 근사하고 있지 못하므로 과소적합
$M=3$이면 $sin$함수에 비슷하게 근사함을 알 수 있다.
$M=9$이면 곡선의 진동이 너무 심하다. 하지만 곡선이 데이터 모두를 정확하게 지나가고 있고, 점 사이의 변화가 너무 극심하다
이런 경우는 모델이 데이터의 노이즈까지 너무 무리하게 근사한 것이다. 이 경우 과대적합(Over-fitting)이라고 한다.

 

 

 

과소적합, 과대적합 판별

과소/과대 적합은 일반화에 관한 문제이고, 이 모델이 새로운 데이터가 들어왔을 때, 잘 예측하는지 알아보는데 유용하다.
시뮬레이션 하기 위해서 학습데이터와 독립된 테스트데이터를 따로 사용한다.
$x$축은 0부터 9까지 시도한 $M$의 값, $y$축은 에러함수의 값이다.
$E_{RMS}$에서 $RMS$는 Root Mean Square의 줄임말로, 에러함수를 샘플의 개수 $N$으로 나눈 것이다.
그리고 2를 곱하는데, 이러면 앞서 나왔던 $\frac{1}{2}$이 사라지게 된다.
모델에 대해 평가를 할 대 테스트데이터의 개수가 작은지 많은지에 따라서 두 개의 데이터셋을 동일선상에 비교해주기 위해 $E_{RMS}$을 사용한다.
그래프를 보면, $M$이 증가함에 따라 학습데이터와 테스트데이터의 오류가 줄어든다.
$3$이 되었을때, 가장 많이 떨어지고, 그 이후엔 거의 변화가 없다.
하지만 $M$이 $9$가 되었을 때, 학습데이터의 에러가 $0$이 되는데, 테스트데이터의 에러는 기하급수적으로 늘어난다.
이렇게 오버피팅이 되면, 훈련 상에서 가장 좋은 성능을 낸 것이 실제 테스트에서는 가장 나쁜 성능을 보이게 된다.

 

 

 

 

 

$M = 9$일 경유, 점들의 개수 $N$이 15인 경우, 똑같이 $M=9$이지만, 이전에 비해 진동이 줄어든 것을 볼 수 있다.
$M=100$일 경우, 훨씬 더 매끈한 곡선에 근사한다.
이를 통해 알 수 있는 것은, 개수가 많아지면 복잡한 모델도 과대적합 문제가 덜 심각해지는 것을 알 수 있다.
즉, 데이터가 많아지면 많아질수록 조금 더 복잡한 모델을 사용해도 된다는 것이다.

 

🔥  모든 머신러닝 프로젝트의 핵심은 많은 양의 데이터를 수집하는 것이다!!

 

 

 

규제화(Regularization)

다음의 표는 $M$의 값의 변화에 따라 계수들(모델 파라미터 값)이 어떻게 변하는지 보여준다.
$M$이 커질수록 계수의 절대값이 커짐을 알 수 있다. $M$이 커질 수록 학습하는 과정에서 계수값을 키움으로써
데이터를 정확하게 맞추려고 하는 경향이 있다. 밸런스를 맞추기 위해 양수값을 키우는 만큼 음수값도 키운다.
그럼, 계수값이 너무 커지지 않게 제한하는 것이 규제화(Regularization)이다.

  • 파라미터 절대값이 너무 커지지 않도록 오차함수를 수정하는 방식으로 간단하게 적용 가능
  • $\lambda$값이 작을수록 기존의 오차함수(오차제곱합)과 같아지므로 규제가 완화된다.
  • $\lambda$값이 너무 커지면 오히려 과소적합될 수 있으니 주의

 

 

 

에러함수 위의 물결표시(tilde, 틸다)가 붙는다. 우리가 앞에서 구한 제곱합 에러함수 뒤에 $\frac{\lambda}{2}||w||^2$를 더한다.
$\lambda$를 통해 앞부분을 강조할 것인지(더하기 앞부분), $w$를 작게 만드는 규제화에 집중할 것인지(더하기 뒷부분)을 컨트롤 할 수 있다.
왼쪽 표의 경우 $\lambda$값이 작은 경우이다. 하지만 규제화도 조금 들어가서 데이터개수는 여전히 몇개 안되자만, 앞에서 본 방법에 비해서는 진동이 적은 모델을 만들었다.
오른쪽 표의 경우 $\lambda$값이 큰 경우이다. 이 경우에는 너무 규제화에 신경쓰다보니 에러를 해결하지 못해 직선과 같은 형태로 나타난다.
따라서 $\lambda$를 너무 크게하면 과대적합을 피하려다가 과대적합이 될 수 있으니 적절한 $\lambda$값을 구해야 한다.

 

 

 

$\lambda$가 마이너스 무한, 즉 아주 작아서 규제화를 안한 것이나 다름없는 경우이다. $w$값의 절대값이 크게 나타난다.
$\lambda$가 $-18$정도로 작은 경우, 어느정도 적절하게 규제화가 된 경우이다. 계수값이 너무 크지도 작지도 않게 나온다.
$\lambda$가 0으로 커서 규제화가 너무 많이 한 경우 과소적합이 나타나며 역효과를 일으킨다.

 

 

 

 


2. 확률이론(Probability Theory)

 

 

확률변수(Ramdom Variable)

확률 변수 $X$는 표본의 집합 $S$의 원소 $e$를 실수값 $\textbf{X}(e)=x$에 대응시키는 함수이다.
즉, 확률변수는 확률함수로 정의되어 있다.
표본의 집합이란 여러번 실행했을 때 가능한 경우의 수들이다.
예를 들어,
동전 한 개를 던져 앞면 혹은 뒷면이 나오는 사건의 집합 $S = {H, T}$이 있을 때, $X(H)=0, \quad X(T) = 1$로 대응시킬 수 있다.

  • 대문자 $X, Y, \dots$ 확률변수
  • 소문자 $x, y, \dots$ 확률변수가 가질 수 있는 값
  • 확률 $P$는 집합 $S$의 부분집합을 실수값에 대응시키는 함수
    • $P[X=x]$
    • $P[x \leq x]$
    • $X =x, \quad X \leq x$는 집합 $S$의 부분집합을 정의한다.

예를 들어 다음과 같이 표현 가능
$S=HH, HT, TH, TT$
$X(HH)=2, \quad X(HT)=1, \quad X(TH)=1, \quad X(TT)=0$
이 확률변수(확률함수)는 $H$가 몇번 등장하는지를 기준으로 한다고 한다.
$P[X=1] = P[HT, TH] = \frac{2}{4} = \frac{1}{2}$
$P[X \leq 1] = P[HT, TH, TT] = \frac{3}{4}$

 

 

 

 

연속확률함수(Comtinuous Random Variable)

  • 누적분포함수(Cumulative Distribution Function, CDF): $F(x) = P[X \in (\infty, x)]$
  • 누적분포함수 $F(x)$를 가진 확률변수 $x$에 대해서 다음을 만족하는 함수 $f(x)$가 존재한다면 $X$를 연속확률변수라고 부르고
    $f(x)$를 $X$의 확률밀도함수(Probability Density Function, PDF)라고 부른다.
    $$F(x) = \int_{-\infty}^{x} f(t)dt$$
  • 따라서 $F(x)$를 미분하면 $f(x)$가 되고, $f(x)$를 적분하면 $F(x)$가 된다.
  • 확률변수를 명확히 하기 위해 Subscript로 어떤 확률변수를 사용자는지 $F_X(x), f_X(x)$로 쓰기도 한다.
  • 혼란이 없을 경우 함수 $f_X(x)$대신 소문자 $p$를 써서 $p_X(x), p_x(x), p(x)$를 사용하기도 한다.
  • $p(x) \geq 0, \quad \int_{-\infty}^{\infty}p(x) = 1$ 즉, **누적분포함수 $F(x)$를 미분하여 구한 도함수를 확률밀도함수 $f(x), p(x)$라고 한다.

 

 

 

 

확률변수의 성질(The Rules of Probability)

여기서 나오는 $p(x)$들은 모두 밀도함수라고 보면 된다.

  • 덧셈법칙(Sum rule)
    $$p(x) = \sum_Yp(X, Y)$$
  • 곱셈법칙(Product rule)
    $$p(X, Y) = p(X|Y)p(Y) = p(Y|X)p(X)$$
  • 베이즈 확률(Baeys)
    $$p(Y|X) = \frac{p(X|Y)p(Y)}{\sum_Y p(X|Y)p(Y)}$$
    $$posterior = \frac{likelihood \times prior}{normalization}$$
    • Posterior : 사후확률
    • likelihood : 가능도(우도)
    • prior : 사전확률
    • normalization : $Y$와 상관없는 상수, $X$의 경계확률(marginal) $p(X)$

 

 

 

 

확률변수의 함수(Functions of Random variable)

확률변수(확률함수) $X$의 함수 $Y=f(x)$도 확률변수이다. (함수의 함수)
예를 들어, 확률변수 $X$가 주(week)의 수로 표현되었다고 할 때 일(day)의 수로 표현된 새로운 확률변수를 정의할 수 있다.
$$Y = 7X$$ $$P[14 \leq Y \leq 21]=P[2 \leq X \leq 3]$$

확률변수 $X$의 함수 $Y=g(x)$와 역함수 $w(y)=X$가 주어졌을 때(일대일대응) 다음이 성립한다.
즉, 새로운 확률변수 $Y$의 밀도함수는 $X$의 밀도함수에 특정한 값을 곱하여 구할 수 있다.
$$p_y(y) = p_x(x)\left | \frac{dx}{dy} \right |$$
우리가 원하는 것은, 새로운 확률변수 $Y$의 밀도함수이다. 이 밀도함수를 어떻게 계산할 것인가?
우리가 알고있는 것은 $x$에 관한 밀도함수이다. $y$의 밀도함수는 $x$의 밀도함수에 $\left | \frac{dx}{dy} \right |$값을 곱해준 것이다.

 

k차원의 확률변수 벡터 $x = (x_1, x_2, \dots, x_k)$가 주어졌을 때
$k$개의 $x$에 관한 함수들 $y_i =g_i(x) \quad for \quad i=1, 2, \dots, k$는 새로운 확률변수벡터 $\textbf{y}=(y_1, \dots, y_k)$를 정의한다.
간략하게 $\textbf{y} =g(s)$로 나타낼 수 있다.
만약 $y=g(x)$가 일대일(one-to-one) 변환인 경우($x=w(y)$로 유일한 해를 가질 때),
$y$의 결합확률밀도함수는 다음과 같다.

 

 


 

# 예제

 

 

 

 

 

 

Inverse CDF Technique

확률변수 $X$의 분포를 따르는 sample들을 만들 때 사용할 수 있는 기법이다.
확률변수 $X$가 $CDF F_x(x)$를 가진다고 하자. 연속확률분포함수 $U \sim UNIF(0,1)$의 함수로 정의되는 다음의 확률변수 $Y$를 생각해보자
$$Y=F_X^{-1}(U)$$

  • UNIF는 uniform distribution(연속균등분포)를 말한다. 여기서는 0부터 1까지 모두 1로만 분포되어 있다고 가정한 것
  • 누적분포함수 CDF를 가지는 확률변수 x에 대해서 샘플링을 하고 싶다면 UNIF을 가지는 확률변수 U를 통해서 또다른
    확률변수 $Y$를 정의한 다음, 그 Y로부터 샘플링 할 수 있다.

 

증명

확률변수 $Y$는 확률변수 $X$와 동일한 분포를 따르게 된다.
$F_Y(y) = P[Y \leq y]$ : CDF의 정의
$\quad\quad\quad=P[F_X^{-1}(U) \leq y]$ : 위에서 정의한 대로 $Y$를 치환
$\quad\quad\quad=P[U \leq F_X(y)]$ : 부등식을 이와 같이 다시 표현 가능
$\quad\quad\quad=F_x(y)$
확률변수 $U$가 우항의 값보다 작을 확률을 계산하면 되는데,
이 값은 $UNIF(0, 1)$을 따르는 확률변수 $U$의 정의에 따라서 $F_x(y)$이 된다.

  • $UNIF(0,1)$을 따르는 확률변수 $U$의 정의 : $P[U \leq u] = u$
    위의 증명에 따라, 확률변수 $X$와 $Y$가 결국 같은 분포를 따름을 알 수 있다.

 

 

$X$에 대해 CDF가 주어져 있다. $F(X)$
그럼 먼저 계산해야하는 것은 $F$의 역함수를 계산하는 것이다
$F^{-1}(X)$이 계산될수 있으면, $U$로부터 샘플링을 하여 여러 샘플값들을 만들어 그 값을 $F^{-1}(X)$에 집어넣으면 된다.
즉 $U \rightarrow F^{-1}(X)(u)$ 이 값들이 결국 $X$의 분포를 따르게 된다.

 

 

 


# 예제

반경이 r인 원 안에 랜덤하게 점들을 찍는 프로그램을 만드려면 어떻게 해야 될까?

 

 

 

 


기댓값(Expectations)

  • 기댓값 : 확률분포 $p(x)$하에서 함수 $f(x)$의 평균값
  • 이산확률분포(Discrete Distribution) : $E|f| = \sum_x p(x)f(x)$
  • 연속확률분포(continous distribution) : $E|f| = \int p(x)f(x)dx$
  • 확률분포로부터 $N$개의 샘플을 추출해서 기댓값을 근사할 수 있다.
    $E[f] \approx \frac{1}{N} \sum_N^{n=1}f(x_n)$
  • 여러개 변수들의 함수 $E_x[f(x, y)] = \sum_xf(x, y)p(x) \quad y$에 대한 함수임을 상기할 것
    $E_{x,y}[f(x, y)] = \sum_y\sum_x f(x,y)p(x,y)$
  • 조건부 기댓값(Conditional expectation) $E[f(y)] = \sum_x f(x)p(x|y)$

 

 

 

 

분산(variance), 공분산(covatiance)

  • $f(x)$의 분산(variance) : $f(x)$의 값들이 기댓값 $E[f]$으로부터 흩어져 있는 정도

확률변수에 대한 분산과 공분산이 아닌 확률변수의 함수에 대한 분산과 공분산이다.
x, y가 아닌 x만 주어져 있을때도 계산 가능

 

 

 

 

빈도주의 vs 베이지안 (Frequentist VS Bayesian)

확률을 해석하는 두 가지 다른 관점

  • 빈도주의 : 반복가능한 사건들의 빈도수에 기반
  • 베이지안 : 불확실성을 정량적으로 표현
    반복가능하지 않은 사건일 경우(Ex. 북국 얼음이 이번 세기말까지 녹아 없어질 확률?),
    우리가 이미 알고있는 정보(얼음이 녹고 있는 속도)에 근거해 확률을 정량적으로 나타낼 수 있고
    새로 수집하는 정보에 따라 확률을 업데이트 할 수 있다.

앞서 언급한 다항식 곡선 근사문제에서의 계수 w(즉, 모델의 파라미터)에 대한 우리의 지식을 확률적으로 나타내려고 한다.

  • 베이지안 방식
    • $w$에 대한 사전지식 $P(w) \Rightarrow 사전확률(prior)$
    • 새로운 데이터 $D={t_1, \dots, t_n}$를 관찰하고 난 뒤의 조건부확률 $p(D|w) \Rightarrow 우도함수(likelihoow function)$
      (특정 $w$값에 대해 $D$의 관찰값이 얼마나 '가능성'이 있는지를 나타낸다. $w$에 관한 함수임을 기억하자)
    • $$p(w|D) = \frac{p(D|w)p(w)}{p(D)}$$
    • $p(w|D)$는 D를 관찰하고 난 뒤의 w에 대한 불확실성을 표현
    • 사후확률(posterior) $\propto$ 우도(likelihood) $\times$ 사전확률(prior)
    • 장점 : 사전확률을 모델에 포함시킬 수 있고, 극단적인 확률을 피할 수 있다.
  • 빈도주의 방식
    • $w$가 고정된 파라미터이고 최대우도와 같은 추정자(estimator)를 사용해서 그 값을 구한다.
    • 구해진 파라미터의 불확실성은 부트스트랩(bootstrap) 방법을 써서 구할 수 있다.

부트스트랩(bootstrap)이란?
데이터를 가지고 여러번 샘플링을 한다. 뽑았던 샘플을 다시 넣고 중복을 허용하여 N개를 뽑았을 때 그것을 $D1$이라고 하고
이 과정을 반복해 여러 데이터셋을 만들고, 각각에 대해 추정치를 통해 w값을 구한다.
이 값의 변화들을 보고 파라미터에 대한 에러바를 만든다. 이를 통해 불확실성을 표현할 수 있다.

 

 

 

 

정규분포

단일변수 $x$를 위한 가우시안 분포

 

 

 

정규분포 : 정규화

$\mu$ = 평균값
여기서 하려고 하는건 함수의 형태가 가우식안 밀도함수형태로 주어졌을 때 $\mu$와 $\sigma$는 파라미터로 주어질 때
결과적으로 $\mu$가 그 확률변수의 기댓값이 된다는 것을 보이려는 것이다.
$\sigma$ 또한 파라미터로 주어질 때 결과적으로 $\sigma$가 분산값이 된다는 것을 보일 것이다.
따라서 $\mu$와 $\sigma^2$이 평균과 분산이 됨을 보일 것이다.

 

Odd function : $f(a)$와 $f(-a)$값의 부호가 다르다. 적분을 하면 0이 된다.
정규분포의 기댓값은 $\mu$이다.

 

 

 

 

정규분포 : 분산

상수에 대해 변수로 미분을 하면 0이 된다. 이 사실을 사용해서 분산값을 유도해보자
마지막 결과를 분산에 대해 풀면 $\sigma^2$이 나온다. 정규분포의 분산은 $\sigma^2$임을 증명했다.

 

 

 

 

 

정규분포 : 최대우도해

독립적인 두 확률의 값은 각각의 확률 값을 곱한 것이다 라는 것의 증명임
증명이라기보단 정의 로그를 씌우면 좀 더 다루기 쉬운 형태가 된다.

 

 

 

 

도출된 식을 0으로 두고 $\mu$에 대해서 풀면 마지막 식과 같이 된다.
ML은 Maximum likelihood의 약자이다.
즉, likelihood function을 최대화 시키는 값이다.
평균을 구하려면 값들을 더해서 그 수로 나누는 당연한 것을 이렇게 수학적으로 생각한 것이다.

 

 

 

 

 

완전한 베이지안 곡선근사

완전한 베이지안 방법은 $w$의 분포로부터 확률의 기본법칙만을 사용해서 t의 예측분포를 유도한다.

 

 

완전한 베이지안을 통해 모델링을 하게 되면 값이 하나가 나오는게 아니다.
확률분포가 나오게 되는 것이다.