Computer Science/기계학습 (Machine Learning)

[기계학습/ML] Introduction to ML

gxxgsta 2023. 10. 23. 00:16
반응형
SMALL

Machine Intelligence

Early AI

사람에겐 어렵지만, 컴퓨터에게 쉽다.

예로 수학적인 규칙이나, search가 있다

 

Modern AI

사람에게는 쉽지만 형식적으로 표현하기 어렵다.(컴퓨터에 가르치기 어려움)

직관적인 정보와 비공식적인 지식이 있다는 특징이 있다.

예로 사람의 말을 이해하는 것이나, 손으로 쓴 숫자를 인식하는 것이 있다.

 

Machine Learning

ML의 분류는 다음과 같다.

Task T를 수행하는 능력을 Performance P로 측정할 때,

Expression E로 T의 P가 향상되는 것을 ML이라고 한다. (1997, Mitchell)

 

이때, 엑셀로 한 계산이나 E로 P가 향상되지 않는 경우거나, If문을 통한 분류는 ML이 아니라고 할 수 있다.

위 사진과 같이 if문으로 작성된 프로그램은 ML이 아니라고 할 수 있다.

왜냐하면, 데이터에 따라 성능이 향상되지 않기 때문이다.

 

위 사진과 같이 0-9와 결과값과의 관계를 학습하는 것은 ML이다.

왜냐하면, E를 통해 P를 향상시킬 수 있기 때문이다.

 

traditioinal programming는 데이터와 프로그램을 입력으로 넣으면 출력이 나오는 형식이고

ML은 데이터와 결과값을 컴퓨터에 넣으면, 컴퓨터는 데이터와 결과값 사이의 관계를 학습하여

관계 또는 함수를 출력으로 뱉는다. 즉, 데이터를 통해 관계를 정의한다.

 

Learning Algorithm

Task, T

사람이 작성한 fixed program으로 해결하기 어려운 작업으로 ML은 task가 아니다.

학습은 task를 수행하기 위한 능력으로 아래의 예시를 보겠다.

위 사진은 예시를 보여주는데, x는 정량적으로 측정된 특징의 집합이다.

feature가 모여 하나의 E를 설명한다.

ML의 task 종류에 대해 설명하겠다.

 

Supervised Learning은 입력으로 데이터와 desired output을 함께 넣은 후

데이터와 desired output 사이의 관계를 학습하게 한다.

Unsupervised Learning은 입력으로 데이터(feature)만 넣고

데이터 사이의 관계나 규칙을 학습하는 것이다.

 

Supervised Learning: Classification

출력이 categorical 즉, 불연속적인 값이다. (= 분류)

0과 1을 분류하는 Binary classification,

0-9사이의 값에서 하나를 분류하는 Multiclass classification,

0-9 사이의 값에서 해당하는 모든 경우를 분류하는 Multi-label classification이 있다.

위와 같은 데이터로부터 어떠한 입력을 넣으면 어떤 출력을 뱉어야 한다.

이때, 학습을 통해 입력과 출력 사이의 if x >= 5 then y = 1, else y = -1이라는 관계를 스스로 학습한다.

 

classification의 종류로는

  • Bayesian classifier
  • Neural nerworks
  • Support vector machine
  • Decision tree
  • k-nearest neighbor
  • ...

가 있다.

 

Supervised Learning: Regression

출력이 Continuous한 값으로 강수량, 판매량, 수요 등이 해당한다.

마찬가지로 데이터에 대해 출력과 입력의 관계를 학습한다.

위의 예시를 통해 프로그램은 y = 3x + 1이라는 관계를 학습할 수 있다.

 

regression의 종류로는

  • Linear Regression
  • Multivariate linear regression
  • Lasso and Ridge linear regression
  • Neural network regression
  • Support verctor regression
  • Decision tree regression
  • ...

가 있다.

 

Unsupervised Leanrning: Clustering

원본 데이터에서 분리 가능한 클러스터를 만든다.

 

Reinforcement Learning

agent는 어떤 결정을 내려야 하는지에 대한 주체이다.

enviroment로부터 agent는 상태를 받는다. agent는 어떤 action을 취하고,

enviroment는 action에 대한 reward와 다음 상태를 agent에 전달한다.

agent는 reward를 극대화할 수 있는 action(policy)을 학습한다.

 

Performance, P

P는 정량적으로 측정할 수 있어야 하며 T에 따라 결정되어야 한다.

Regrssion에서 오류와 desired output의 관계식으로 P를 측정한다.

이때, e는 y - ŷ이며, y는 실제 값, ŷ는 예측 값이다.

P에 대한 측정 방법은 여러 가지이며, 종류는 아래와 같다.

 

MSE(Mean Square Error)

RMSE(Root Mean Square Error)

MAE(Mean Absolute Errror)

MAPE(Mean Absolute Percentage Errror)

이 경우는 결과가 10인데 9로 예측한 것과, 결과가 1000인데 999로 예측한 경우 error은 동일하지만 오차가 덜하기 때문에, 실제 값과 error 비율의 평균을 구하는 것이다.

 

Classification에서의 P

classification은 accuracy와 error rate를 구할 수 있는데, 이는 분류 정확도이다.

accuracy와 error rate를 합하면 항상 1이 된다.

Confusion matrix는 틀린 경우와 맞춘 경우를 분류한 matrix이다.

이때, 결과값과 예측한 값 사이의 관계를 아래와 같이 나타낼 수 있다.

각 경우를 분리하는 이유는 예를 들어 미사일을 포착하는 레이더 카메라를 생각해보자.

해당 카메라가 공중에 미사일이 존재하지 않는데 존재한다고 판단을 내린 경우와

존재하는데 존재하지 않는 판단을 내린 경우의 결과가 굉장히 다르다. (후자의 경우 사상자가 발생)

따라서 각 경우를 분리하여 식을 세울 수 있다.

 

Accuracy는 전체에서 맞춘(True한) 비율이다.

Precision은 Positive라고 예측했을 때 진짜 Positive일 확률이다.

Recall은 결과가 Positive일 때 Positive라고 한 확률이다.

F1-score는 조합 평균으로 recall의 값이 작아 의미가 퇴색되는 경우 사용한다.

즉, precision과 recall 사이의 가중(조합) 평균을 구현하는 것이다.

 

Test data set

ML의 궁극적인 목표는 새로운 data에 대해 옳은 출력을 만들도록 학습시키는 것이다.

이때, 데이터는 학습용과 평가용으로 분리하여 학습을 진행한다.

평가는 unseen data에 대해 진행하므로 test data를 제외한 데이터로 학습시킨다.

이때 validation data는 학습 과정 중 검증하는 용도로 사용하는 것이다.

original data가 1000개가 있을 때, 600개를 training, 200개를 validation, 200개를 test로 쓸 수 있다.

 

이때 cross validation을 사용할 수 있는데,

cross validation은 training data도 validation 데이터와 동일하게 쪼개어

training data와 교차하며 validation하는 것이다.

즉, 순서를 바꿔서 넣거나, 동일한 data를 여러 번 넣어주는 것이다.

 

학습 과정은 보통 다음과 같은 과정을 거친다.

 

Expression, E

raw data는 뭐든 될 수 있는데, 우리는 아래와 같은 데이터 타입을 고려해야 한다.

각 데이터는 ID(또는 key)와 value로 구성되어 있고,

각 ID는 다양한 변수들로 이루어져 있는데, 해당 변수는 보통 feature이다.

각 변수는 우리가 관심있는 것과 연관된 데이터여야 하며 ID별로 다른 값을 가져야 한다.

Dataset은 이러한 데이터의 집합이다.

 

data set은 design matrix로 표현할 수 있는데, 모양은 아래와 같다.

열은 각 example의 값이고(id), 행은 각 feature의 값이다.(value)

 

Unsupervised learning

Unsupervised learning에서의 데이터셋은 많은 feature를 포함한다.

데이터 셋 구조의 유용한 정보와 속성을 알아 다음과 같이 응용할 수 있다.

Clustering: Subgroup를 만듦

Density estimation: 데이터 셋을 생성하는 확률 분포

데이터를 통해 학습하면, 사진의 아래에 있는 그래프와 같은 분포를 얻을 수 있다.

 

Supervised learning

example들은 feature와 labels를 갖고 있다.

각 데이터의 라벨을 분류하고 예측한다.

표의 가장 오른쪽, 붉은 점선으로 싸인 부분이 결과값이다.

 

Unsupervised vs. Supervised

Unsupervised: x -> p(x) = x들 사이의 관계

Supervised: x -> p(y|x) = x에 대해 y의 결과(관계, 분포)

이때 Supervised learning의 성능이 더 뛰어나다.

 

Semi-Supervised learning

데이터가 많은 경우 모든 데이터에 대해 labeling하기가 어렵다.

따라서 우리는 Semi-Supervised learning을 수행할 수 있는데,

이는 데이터의 일부에 대해서만 labeling을 진행하는 것이다.

 

Model Capacity

Generalization

ML의 궁극적인 목표는 앞서 언급했듯, new-unseen 데이터에 대해 좋은 성능을 내는 것이다.

training perfomance는 training dataset에 대한 성능,

test perfomance는 학습에 사용되지 않은 test dataset에 대한 성능이다.

이때, training data에 대해 너무 잘 학습되어 있어서 test data에 성능이 좋지 않을 수 있다.

이러한 성능 문제를 해결하기 위해 성능을 일반화할 필요가 있다.

 

Purpose of ML modeling

기존 데이터에 대해 데이터 사이의 관계 또는 데이터를 통해 예측할 수 있는

어떤 규칙을 잘 표현하기에 앞서 궁극적인 목표는 학습되지 않은 데이터에 대해

예측을 잘 수행하는 것이다.

 

Performance on the test data

우리는 테스트 데이터를 학습 시 사용하지 않고 정보가 없다.

따라서 테스트 데이터에 대해 보장할 수가 없으므로 아래의 가정 하에 테스트를 진행한다.

 

1. training data와 test data는 i.i.d(independent)하다.

2. 같은 분포를 통해 생성이 된 데이터이다

3. 동일한 data generating distribution(확률분포)을 갖는다

위 가정 하에 테스트가 진행되므로, training data에 대한 퍼포먼스와 test data에 대한 퍼포먼스가 연결된다.

 

Model capacity

model capacity ML 모델이 training data에 대해 얼마나 잘 표현할 수 있는가?

얼마나 복잡한 관계나 규칙을 학습할 수 있는가?를 나타낸다.

위 예시의 regression의 경우 높은 차수일 수록 training data에 대해 잘 표현할 수 있다.

하지만, 너무 잘 표현하면 test data에 대해 맞추기가 어렵다.

 

x와 y의 관계 찾기 위해 적절한 capacity를 미리 알 수 없다.

 

우리는 training data에 대해 너무 덜 학습이 되어 있으면 underfitting,

너무 잘 학습 되어 있으면 overfitting이라고 하며,

적절하게 분류할 수 있는 모델을 찾는 것이 중요하다.

위 그림에서 어떤 것이 underfitting인지, overfitting인지 쉽게 구분할 수 있을 것이다.

위 그림은 capacity에 따른 오류 발생률인데, 

붉은 선을 기준으로 점차 둘 사이의 거리가 벌어지는 것을 볼 수 있을 것이다.

오른쪽으로 갈수록 training error는 줄어들고 gerneralization error은 높아지는데,

이 경우가 과대적합(overfitting)이다.

왼쪽은 과소적합(underfitting)으로 붉은 선과 최대한으로 가까운 capacity를 찾아야 한다.

 

No Free Lunch(NFL) theorem

어떤 학습 알고리즘도 다른 학습 알고리즘에 대해 우월하지 않다는 이론이다.(1995, Wolpert)

즉, 모든 문제에 대해 가장 좋은 알고리즘은 존재하지 않으며,

한 분야에 대해 좋은 성능을 가지면, 다른 분야에 대해서는 좋지 못한 성능을 모인다는 뜻이다.

 

Regularization

weight decay

training data에 대해 MSE를 낮추기 위해 학습하는 것이 아니라,

학습을 규제(방해)하는 term을 넣어 MSE를 낮추는 쪽으로만 학습되지 않도록

방해 또는 규제하는 것을 말한다.

즉, 모델은 위의 식에서 J(w)를 낮추는 쪽으로 학습한다.

이때, 𝜆는 0과 1의 사이의 값으로 weight가 얼마나 비중을 차지할 것인지 결정한다.

𝜆가 0인 경우 overfitting될 수 있고, 𝜆가 1인 경우 underfitting이 될 수 있어

𝜆의 값을 적절히 세팅하는 것이 중요하다.

 

가중치를 설정하는 이유는 큰 capacity를 가지되, 𝜆값만 조정하는 것이모델을 학습시킬 때에 더 이득인데, 왜냐하면 𝜆값은 학습 중에도 값을 조정할 수 있기 때문이다.

 

 

 

 

반응형
LIST