본문 바로가기

학습공간/빅데이터활용실무

[2주차] Machine Learning Basics

반응형

 Basic Concepts of “Learning”

지도 학습을 중심으로 머신 러닝에서의 데이터 학습에 대한 기본 개념들 및 학습한 모델에 대한 최적화(Optimization)일반화(Generalization), 정규화(Regularization) 그리고 여러가지 알고리즘에 대해서 이야기하도록 한다.

 

 What is the Machine Learning?

지도 학습(Classification, Regression) 중심으로 머신 러닝에 대한 기초 개념 및 용어들을 나열하고 설명하도록 한다. 

 

- 기계 학습에 대한 정의

“A computer program is said to learn from experience E
with respect to some class of task T
and performance measure P,
if its performance at tasks in T, as measured by P,
improves with E.

머신 러닝은 데이터로부터 학습할 수 있도록 하는 알고리즘이다.
                                                                    - Tom Mitchell by Prof. at CMU

비 지도학습과 지도학습 비교

- 머신 러닝의 패러다임

  - 비 지도학습지도 학습을 구분하는 가장 큰 기준은 레이블(Label)이 데이터 셋에 존재하느냐이다.

  - 지도 학습에서는 데이터 셋이 입력 값과 출력 값의 페어로 주어지기 때문에,

    상호 간의 관계 함수 또는 예측 함수 𝑦̂=𝑓(𝒙) 를 기준으로 분류, 회귀 문제를 풀 수 있다.

    e.g., 동그랗고, 녹색이며, 검은 줄무늬가 있고, 과일에 속하는 것은...... 수박이다.

    타원형이고, 연두색이며, 검은 줄무늬가 있고, 과일에 속하는 것은......? 분류 with 정확도

Labeled Dataset (supervised learning)

  - 비 지도학습에서는 오로지 입력 값만 존재하기 때문에,

    이 입력 값들의 분포가 어디에 밀집되어 있는지 또는 값 들의 연관 분석을 할 수 있다.

    e.g., 거주 인구 밀집도에 따라 몇 개의 도.시.구. 로 나누는 데 쓰일 수 있다.

Unlabeled Dataset (unsupervised learning)

- 지도 학습: Classification vs Regression

  - 지도 학습에는 크게 분류 문제와 회귀 문제가 있다. (이산 데이터 셋 vs 연속 데이터 셋)

Supervised Learning

    페어로 주어진 데이터 셋을 학습시켜서 만든 분류기(Claassifier) 는,

    어떠한 입력 값 𝑥 가 주어지면 해당 분류기를 기준으로 예측 값 𝑦 가 어디에 속하는 지 찾아낼 수 있다.

    만약, 𝑦-class 가 명확하게 분류되지 않는 연속 값이라면 예측 값들로 이루어진 함수를 추정할 수 있다.

- 분류 문제를 조금 더 살펴보면,

  분류해야 할 결과가 꼭 참/거짓으로 나눠지지 않고 k 개의 클래스로 나눠질 때가 있다.

Binary vs Multi-class Classification

  또한, 아래와 같이 레이블 된 결과 자체가 여러개인 경우도 있다.

Multi-label Classification (Dog&Cat)

- 가설 공간: Hypothesis space ℋ (the set of all hypothesis 𝑓)

  - 학습 알고리즘은 가능한 모든 함수들의 집합인 ℋ 를 정의한다.

Hypothesis space ℋ

    지도 학습은 이 유한한 공간에서 최적의 근사 값(가장 오류가 적은)을 찾는다.

    학습 데이터(training data)로 부터 만든 모델과 이후 들어올 실제 데이터(test data)의

    차이(error)를 줄여나가는 것을 최적화라고 하며, 보통 * 기호를 사용하여 표시한다.

 

Formal Setup of Supervised Learning, looking for a good parameter

  이때, 이 차이(error)들을 모은 함수 집합이 Loss function 이 되고,

  여러가지 방법론에 따라 다르겠지만,

  최적화를 위한 Σ Loss function + regularizerCost function 이 된다.

  미분을 통해 Cost function 이 0 에 가깝게 수렴하면서 최적의 모델을 찾는다.

 

 Supervised Learning Algorithms

지도 학습(Classification, Regression) 내 여러가지 학습 알고리즘을 소개한다.

 

- [Define] training dataset

  먼저, 학습에 사용할 데이터 집합을 정의해보도록 하자.

  지도 학습의 경우, dataset 𝐷 = {(𝑥₁, 𝑦₁),(𝑥₂, 𝑦₂),⋯,(𝑥ⁿ, 𝑦ⁿ)} 으로 주어진다.

  \[ \mbox{such that }𝑥_𝑖\, =\, ({\color{Red}1},𝑥_{𝑖1},…,𝑥_{𝑖𝑑}) ∈ ℝ^{𝑑+1} {\color{Red}\mbox{ ⋯ the first entry is always set to “1”}} \]

  여기에서 𝑖-th input vector (of the degree 𝑑) 를 보면, 1개의 bias 와 𝑑 개의 입력 변수가 존재하게 된다. (𝑑+1)

  여기에 bias:\(𝑤_0\), weights:\(𝑤_1…𝑑\) 의 가중치를 취하면, 파라미터에 대한 벡터를 linear 하게 나타낼 수 있다.

  2차 다항식(𝑑=2)을 예로 들면,

  𝑖=1 ⇒ 3𝑥² + 2𝑥 + 4 = 𝑦₁

  𝑖=2 ⇒ 4𝑥² + 3𝑥 + 5 = 𝑦₂

\[ {\color{Blue}\underbrace{\begin{bmatrix} 3 \ 2 \\ 4 \ 3 \end{bmatrix}}_{weights}}\, \begin{bmatrix} 𝑥^2 \\ 𝑥 \end{bmatrix}\, +{\color{Blue}\underbrace{\begin{bmatrix} 4 \\ 5 \end{bmatrix}}_{bias}}\, =\, \underbrace{\begin{bmatrix} 𝑦_1 \\ 𝑦_2 \end{bmatrix}}_{class}\, ⋯ \mbox{(그림 1)} \]

  (그림 1) 행렬 식을 (그림 2) 행렬 식으로 간소화하여 𝑤\({}^𝑇\) 형태로 나타낼 수 있는 것이다.

\[ {\color{Blue}\underbrace{\begin{bmatrix} 3 \ 2 \ 4 \\ 4 \ 3 \ 5 \end{bmatrix}}_{weights+bias}}\, \begin{bmatrix} 𝑥^2 \\ 𝑥 \\ {\color{Red}1} \end{bmatrix}\, =\, \underbrace{\begin{bmatrix} 𝑦_1 \\ 𝑦_2 \end{bmatrix}}_{class}\, ⋯ \mbox{(그림 2)} \]

\[ 𝑦̂= 𝑤_0 + \overset{𝑑}\sum\limits_{𝑖=1} {𝑤_𝑖𝑥_𝑖} ≜ \overset{𝑑}\sum\limits_{𝑖=0} {𝑤_𝑖𝑥_𝑖} ≜ {\color{Blue}𝑤^𝑇𝑥} \]

 

- (Solution) Linear Regression

  이제 training error 에 대한 cost function 을 구해 minimize 하여 최적의 파라미터 𝑤* 를 찾는다.

  여기에서는 error 편차를 극대화 하는데 자주 사용하는 MSE(평균 제곱 오차)를 사용하였다. 

\[ 𝐽(𝐰)= \frac{1}{𝑛} \sum\limits_{(𝑥_𝑖,𝑦_𝑖) ∈ 𝐷} 𝐿(𝑦_𝑖, 𝑦̂_𝑖) = \frac{1}{𝑛} \sum\limits_{(𝑥_𝑖,𝑦_𝑖) ∈ 𝐷} {(𝑦̂_𝑖 - 𝑦_𝑖)}^2 = \frac{1}{𝑛} {‖𝑋𝐰-𝑦‖}^2_2 \]

  이 오차에 대한 함수는 볼록성을 띄기 때문에, 파라메터 𝐰 에 대한 편미분을 통해서,

  𝛻𝐰=0 에 가까운 점을 찾아낸다. 이는 곧 최적의 해가 될 것이다.

 

  아래는 정규 분포에 대한 조건부 확률을 통해,

  최대 우도 추정(Maximum Likelihood Estimation) 방법이니 참고하도록 한다.

  ※ MLE -> 가능한 모든 우도 중 최대인 𝐰* 를 찾는다. (붉은 네모 박스가 최소화되면 된다.)

Maximum Likelihood Estimation (parameter 추정)

- [Define] Generalization

  일반화의 문제는 이 모델이 학습 데이터에 대해서만 특화되어 있다는 것이다.

  다시 말해, 학습 데이터에 대해서는 높은 적중률을 보이지만

  알려지지 않은 새로운 데이터(test data) 에 대해서는 성능을 발휘하지 못하는 것이다.

  ※ 따라서, training dataset 이 아닌, test dataset 을 통해 성능을 평가하고,

  일반화 오류 (test error) 를 최대한 낮추어 범용적인 모델이 되도록 한다.

MSE on the test dataset

  기계 학습 알고리즘의 성능을 결정짓는 2 가지 요소는 다음과 같다.

  1. Make the training error small.

  - 기본적으로 학습 오류는 작아야 한다.  

  2. Make the gap between training and test error small.

  - 학습 오류와 실제 오류의 차가 되도록 없어야 한다.

  ※ 우리는 학습 알고리즘의 capacity 를 측정하여 모델의 overfit 또는 underfit 을 제어할 수 있다.

  

  - Capacity, Overfitting and Underfitting

  여기에서 Overfitting 은 학습이 너무 잘되어서 실제 데이터 오류와의 갭이 발생한 것이고,

  Underfitting 은 학습이 너무 안되어서 모델로서 사용하기 어려운 상태를 말한다.

  그래서 정규화를 통해 적정 선의 capacity 를 찾아내어야 한다.

 

  위의 그림과 같이, 모델이 더 잘 분류할 수 있도록 하는 방법은 다항식의 차수를 늘리는 것이다.

  적당한 hypothesis space ℋ 를 선택하여,

  동일한 학습 데이터를 두고 차수를 하나씩 증가시켜보면서 capacity 를 확인한다.

  ※ 참고로 학습 데이터 사이즈가 증가할수록, 일반적으로 최적의 capacity 도 증가한다. 

 

  전형적인 capacity 와 error 의 상관 관계는 다음과 같다.

 

Optimal Capacity

 

- [Define] Regularization

  그렇다면 large hypothesis space 에서 overfitting 을 방지하려면 어떻게 해야 할까?

  대부분의 학습 알고리즘에는 모두 정규화가 기본적으로 들어가있다.

  \[ 𝐽(𝐰)= MSE_{train} + {\color{Red}\underbrace{𝜆Ω(𝐰)}_{regularizer}} \]

  이것은 모든 단계에서 일반화 오류는 줄이면서, 학습 오류는 줄이지 않는 수정이 일어난다.

L2 regularization vs L1 regularization

  대표적으로 Ridge regression(L2-) 과 Lasso regression(L1-) 을 비교해보면,

  regularizer 형태가 다른 것을 확인해 볼 수가 있다. (L1, L2 Norm 사용에 대한 차이는 분명 존재한다.)

  이때, 적당한 크기의 𝜆 는 hyperparameter 로서 최적의 𝐰 를 찾는데 길을 잃지 않도록 도와주는 일을 한다.

hyperparameter 𝜆 (learning rate)

  - Hyperparameters and Validation Sets

  앞서 언급된 Hyperparameter 는 Training Set 으로부터 파생된 Parameter 를 제어하기 위한 변수이다.

  따라서, Training Set 을 학습하기 이전에 사용자로부터 셋팅을 하는데

  Hyperparameter 를 검증하기 위해서는 우리가 알지 못하는 Data Set 에서도 잘 돌아야한다.

  (Training Set 학습으로부터 Hyperparameter 셋업 시 가능한 최대 capacity 를 선택하여 overfitting 발생)

  그러므로, 우리는 데이터 검증을 위한 Validation Set 을 도입할 필요가 있다.

  • Training, Validation, and Test

  그림으로 살펴보면 크게 우리가 학습 할(알고있는) 데이터와 관측되지 않은(모르는) 데이터로 나눌 수 있다.

  그 중 학습 데이터의 일부분을 모델 훈련을 위한 하이퍼 파라미터의 선택용으로 사용하고,

  나머지 실제 데이터는 일반화 오류를 줄이기 위해 사용된다. (일반적으로 7:3)

 

  • Cross-Validation

  그렇다면, 검증하기엔 데이터 셋이 너무 작으면 어떻게 정확도를 보장할까?

  검증 방법에도 여러가지 방법이 있다. (대표적으로 3가지 소개)

  ① K-fold Cross-Validation

  데이터 셋을 K 개의 폴더로 쪼개서 k번 iteration 시킨다. 이후 k 개의 error 평균을 구한다.

 

k-fold cross-validation

  ② Leave-One-Out Cross-Validation

  k-fold cross-validation 에서 k 의 개수를 데이터 포인트의 개수로 지정하여 실행하는 방법이다.

 

  ③ Nested Cross-Validation (Double Cross-Validation)

  Outer CV : (Training / Validation) vs Test

  Inner CV : Training vs Validation

  이 방법은 k 개의 폴더에 Test 데이터를 섞어서 검증하는 방식(outer loop)인데,

  여기서 각 라인 별 Test 데이터를 제외한 부분이 다시 Training 데이터와 Validation 데이터(inner loop)

  로 다시 나뉘면서 성능이 가장 좋은 hyperparameter 를 찾는 작업이 반복된다.

=================================

- (Solution) Logistic Regression

  이름은 회귀(Regression) 이지만, 분류(Classification)이다. 특히 데이터 셋의 라벨이 0 또는 1 인

  이진 분류(Binary Classification) 문제를 풀때 사용된다.

  Linear Regression 과 다른 점은, 예측 값에 𝜎(𝑤\({}^𝑇\)𝑥)::sigmoid function 이 쓰인다는 것이다.

  이를 통해 비용 함수는 MSE 를 사용하지 않고 binary cross-entropy 를 사용하게 되는데,

  gradient descent 방법으로 최적의 파라미터 𝑤* 을 찾아내기 위해 minimizing 하게 된다.

  * binary cross-entropy 가 작아질수록 분류가 잘됨 → 최적 해(𝑤*) 도출

 

  확률적으로, 베르누이 분포 가정이 성립하여 다음과 같이 추정 가능하다.

  (주어진 𝑥 에 대한 𝑦 확률, 𝑦∈{0, 1})

  결론적으로, 확률적 최대 우도 값(maximize) 는 binary cross-entropy loss minimize 와 같다!

  

- (Solution) k-Nearest Neighbors

  KNN 방법은 회귀, 분류 모든 면에서 잘 적용이 되는 상당히 직관적인 방법이다.

  먼저 실제 데이터(test data point)가 1개 주어지면,

  그에 대한 각각의 training data pairs 간 거리를 계산한다. (𝑘-labels)

  그 중 가장 가까운 순의 k 값에 따라 과반수 의결로 예측 값으로 택하는 방법을 수행한다.

  분류 문제는 Voting 또는 Weighted Voting 을 통해 예측 값을 구하고,

  회귀 문제는 Averaging 또는 Weighted Averaging 을 통해 예측 값을 구한다.

 

Examples KNN

 

- (Solution) Support Vector Machine (선형)

  SVM의 기본 아이디어는, 두 개의 클래스를 완벽히 구분해내는 Hyperplane 을 찾는 것에서 시작한다.

  binary classification : Many possible Hyperplanes (𝑤\({}^𝑇\)𝑥+ 𝑏 =0)

  이 중 어떤 Hyperplane 을 찾냐면, 둘 사이를 가르는 마진이 가장 큰 Hyperplane 을 찾는 것이다.

 

  그 외 Hard-margin, Soft-margin formulation 방법 및 데이터가 선형 적으로 분리되지 않았을 경우 사용되는

  여유 변수(slack variables) ξ𝑖 에 대해서는 한번씩 참고하여 찾아보도록 한다.

 

 

- (Solution) Support Vector Machine (비선형)

  비선형 SVM 문제는 Kernel Trick 을 사용하여 문제를 해결한다.

  이것 역시 여러가지 Kernel Function 을 사용할 수 있고, Soft-margin formulation 으로 문제를 해결한다.

  특히, 가장 많이 쓰이는 RBF Kernel Function 에 대한 Hyperparameters (C, 𝛾) 참고하도록 한다.

  (모든 pairs 돌려보고 최적의 validation 을 보여주는 경계까지 넘어가는 것을 고려한다.)

 

  최근, SVM의 약점으로 많은 양의 데이터를 처리할 때 높은 복잡도를 보이는 문제가 있는데

  여러가지 연구를 통해서 이를 극복하는 노력을 수행하고 있다.

  (하지만, Neural Netwroks 대중화로 성능이 떨어져 잘 쓰이지는 않고 있다.)

 

  - SVM and Neural Network 비교

  SVM 이 NN 구조와 같은 형태라는 주장도 많다.

  NN 구조를 가지는데 학습 방법과 철학이 조금 다르다는 것이다.

  서로 관련성은 있지만 다음과 같은 4 가지 항목에 대한 차이가 존재한다.

  - Multi-class Classification with SVM (OAO, OAR)

  기본적으로 SVM은 Multi-class 분류가 지원되지 않는다.

  따라서 아래와 같은 2 가지 방법을 통해 다중 클래스를 분류할 수 있다.

 

• No-Free-Lunch Theorem
머신러닝은 모든 것을 해결해주지 않는다.
어떤 모델이 가장 좋은지는 모두 평가해보아야만 아는 것이다.
- No Free Lunch theorem (Wolpert , 1996): if you make absolutely no assumption
about the data, then there is no reason to prefer one model over any other.
1) For some datasets the best model is a linear model,
   while for other datasets it is a neural network.
2) There is no model that is a priori guaranteed to work better.
3) The only way to know for sure which model is best is to evaluate them all.
4) Since this is not possible, in practice you make some reasonable assumptions
   about the data and you evaluate only a few reasonable models.

- No machine learning algorithm is universally better than any other on every task.
- The goal of machine learning research is not to seek a universal learning algorithm
or the absolute best learning algorithm
.
- We must design our machine learning algorithms to perform well on a specific task.
반응형

'학습공간 > 빅데이터활용실무' 카테고리의 다른 글

[5주차] Regularization  (0) 2020.11.19
[4주차] Optimization  (0) 2020.11.19
[3주차] Deep Neural Networks  (0) 2020.10.22
[1주차] Introduction to Deep Learning  (0) 2020.10.07
[Intro] Learning from Big Data  (0) 2020.08.14