On the journey of

[딥러닝 홀로서기] 2. ML Basic (Eng - Kor) 본문

Experiences & Study/딥러닝 홀로서기

[딥러닝 홀로서기] 2. ML Basic (Eng - Kor)

dlrpskdi 2023. 8. 26. 07:34

 

What is Machine Learning?

"A Field of study that gives computer the ability to learn without being explicitly programmed"

if-else문과 같은 수백 개의 조합으로 룰베이스로 코드를 짤 필요 없이 알아서 학습을 한다

 

  • Deep Learning

머신 러닝에서 쓰이는 학습 방법을 차용하여 머신러닝 알고리즘의 성능을 좀 더 올릴 수 있는 방법론이며 Feature Extractor이라고도 표현할 수도 있다

  • Representation Learning

딥러닝과 머신러닝의 간극 즈음에 자리하여 feature들을 조금 더 잘 표현하는 법을 학습한다

e.g.) shallow neural network

  • Machine Learning

그리 명확하지 않아도 (just like logistic regression) 학습 가능

  • Artificial Intelligence

사람처럼 행동하고 생각할 수 있는 것(뉴런 나오는 개념)


Original Lecture - https://www.youtube.com/watch?v=hPXeVHdIdmw&list=PLSAJwo7mw8jn8iaXwT4MqLbZnS-LJwnBd&index=1

Categories of ML(Machine Learning) Problems


학습법
Output Space
Supervised Learning
Unsupervised Learning
Reinforcement Learning
Discrete
Classification
Clustering
Discrete Action Space Agent
Continuous
Regression
Dimensionality Reduction
Continuous Action Space Agent

  • Semi-Supervised Learning = Supervised Learning + Unsupervised Learning

Semi-Supervised Learning(준지도학습)은 Supervised Learning과 Unsupervised Learning을 적당히 혼합한 방식이다

전체 10000개의 음악이 있다면 사람이 먼저 100개의 음악을 락이나 클래식 등으로 분류하며 라벨링해준다

즉, X1 ~ X100까지는 라벨링이 되어 각각 대응되는 Y1 ~ Y100이 있는 상태인데 X101 ~ X10000까지는 라벨링이 되지 않은 상태. 이렇게 라벨링 된 100개의 X, Y set을 가지고 학습을 시킨다.

 

예를 들어 어떠한 특정한 특징을 가진 X라면 어떤 클러스터로 갈지 학습시켜 supervise(지도) 가능. 

이렇게 feature extraction이 어느 정도 되었다면, 나머지 X들을 좀 더 잘 분류할 수 있게 된다. 요즘은 Semi-Supervised Learning을 실제로 잘 활용하는 Trend! 항상 라벨링 된 데이터를 비용적인 측면에서도 구하기 쉽지 않은 만큼 인력 등을 써서 일부 데이터 등을 라벨링 해놓고(Supervised Learning) 나머지 데이터 set은 Unsupervised Learning을 통해서 자동으로 라벨링 하는 방식을 사용하는 곳이 늘어나고 있기 때문

  • Supervised Learning

x를 줄 때 y라는 답을 내도록 강요하는 과정

다양한 샘플을 보여주며 답을 알려주면서 학습시킨다

x와 y가 모두 주어진 경우에 Supervised Learning이라고 할 수 있다

  • Unsupervised Learning

Clustering : 데이터들이 주어지면 비슷한 것들끼리 묶어 군집화를 하는 것

y가 없고 x만 있는 경우, 즉 라벨링이 없는 상태에서 활용할 수 있는 알고리즘이다

알아서 비슷한 것끼리 묶고 나중에 사람이 라벨링을 진행하는 방식. 

  • Reinforcement Learning

x와 y가 주어지지 않고 현재 환경과 자신의 상태가 input으로 들어갔을 때 output으로 action을 취하면 그것에 따라 상태가 다시 바뀌고 updated된 상태에서 다시 action을 취하는 과정을 반복하는 것

상태가 바뀌면서 긍정적으로 변화했는지 부정적으로 변화했는지를 평가하는 함수인 Reward Function을 짠다

상태가 더 나아지게 된다면 action의 시도에 대하여 reward 보상을 준다

상태의 좋고 나쁨을 표현할 수 있는 보상이라는 개념을 통해 자동으로 리워드를 최대화할 수 있는 방식을 찾는 것이 Reinforcement Learning이다

Regression Problem

Fit the prediction function f(x) to the training data, to predict continuous real value

어떤 function f(x)가 있는데 이 f(x)는 사용자가 갖고 있는 데이터 X를 Y로 매핑할 의무를 가지며, 이러한 f(x)를 찾는 경우가 Regression Problem에 속한다. x(independent)가 사용자가 갖고 있는 input이고 y(dependent)가 예측하고자 하는 값일 때 관측한 데이터에 따라 좌표평면에 점들이 찍혀 있는 상황에서 f(x)를 찾는다는 것, 잘 학습을 한다는 것은 결국 데이터를 가장 잘 지나가는 함수를 찾는 것이라고 할 수 있다. 

f(x)의 form은 사람이 정해 준다. 예를 들어 f(x) = ax + b라는 함수를 통해 검사를 한다고 정하면 이는 Linear regression이라 할 수 있는 것처럼 :) 

직선이 아닌 경우는 Nonlinear regression이라고 부르며, 이는 ax + b와 같은 선형함수로 표현이 잘 되지 않는 것, 점들(데이터들)의 분포와 잘 맞지 않는 것이다. 머신러닝이든 딥러닝이든 Nonlinear regression으로 할 수 있는 방법이 있는데, 데이터가 점점 복잡해질수록 머신러닝으로 한계가 있기 때문에 딥러닝을 쓴다

Regression의 경우에는 x, y가 주어지고(Supervised Learning) output space가 continuous : 연속된 값을 예측한다

Classification

Classification은 Supervised Learning이기 때문에 x와 y가 주어지는 상황이다

그런데 이것이 예측하는 output값이 Discrete space에 존재한다 - Classification이 Discrete 공간인 이유...

Classification Problem

Chihuahua or Muffin?

이런 경우에 x는 이미지이고 y는 classification인 경우인데 이 상황은 binary classification(머핀이냐 치와와냐)인 상황이다

 

Identifying which of a set of categories a new instance belongs

​: 새로운 x가 나타났을 경우 이것이 어느 class에 속할 것인가 분류하는 문제이다. Binary Classification의 경우 x가 이차원 (x1, x2)일 때 데이터들을 표시했을 때 구분선을 기준으로 한쪽은 O라는 클래스를 가지고 있고 다른 쪽은 X라는 클래스를 가지고 있다. 이런 상황에서 새로운 샘플을 좌표평면에 찍었을 때 해당 데이터가 O인지 X인지 구별해야 한다

머신러닝 알고리즘을 통해 모델을 학습시키고 나면 자체적으로 decision boundary를 학습하게 되며, 이는 p(O)와 p(X)일 확률을 구하는 것이다. 

만약 p(O) = p(X) = 0.5로 같아지는 상황인 지점들을 모아보면 linear model을 통해서 학습시키면 이 0.5가 되는 점들을 모아봤을 때 이 점들이 직선 위에 올라오게 된다. 이렇게 직선으로만 올라오면 logistic classification! class가 여러 개(두 개 이상)일 경우에는 Multi-class Classification으로, boundary와 영역이 여러 개로 나뉜다. 이런 영역 중, 새로운 input이 들어왔을 때 hyper plane과 비교하여 영역 R1, R2, R3 중 어느 영역에 해당하는지 판단


Clustering : Clustering Problem

Grouping similar samples into K groups

이전의 음악 장르 분류 샘플과 비슷한 상황(Automatic grouping of instances, such that the instances that belong to the same clusters are more similar to each other than to those in the other groups)

여러 가지 instance, 혹은 sample이라고 부를 수 있는 것들을 알아서 그룹핑을 해주는 알고리즘으로 instance간의 similarity나 distance를 정의하여 비슷한 것들끼리 모은다는 것이 핵심. 여기서 어려운 점은 두 노래가 비슷하다는 것을 사용자가 어떻게 정의할 수 있는지다 (멜로디냐, 가사냐, 등등)

기존의 머신 러닝 technique를 쓴다면 비트 수, 주요 멜로디, 주요 파장 등의 feature extraction을 사용자가 직접 처리한 다음에 어떤 노래의 특징을 대변하는 값, feature들을 모두 계산해서 feature들 사이의 유클리드 거리 계산을 할 수 있다. 유클리드 거리가 짧을수록(=가까울수록) 그룹핑은 쉬워지지만, 그룹핑 시 해당 음악(데이터) 본연의 feature, 정보가 상당히 많이 손실된다. 때문에 딥러닝 메소드를 쓰면 임의의 노래를 100차원에서 300차원 정도의 vector로 뽑아주게 된다

여기서의 feature들을 가지고 similarity를 계산하면 손으로 짠 코딩에 비해 결과가 훨씬 잘 나온다

ex) Different cluster analysis results on "mouse" data set: Original Data / k-Means Clustering / EM Clustering

k-Means Clustering으로 처리한 것은 한 영역의 데이터들이 다른 영역을 다소 침범한 것을 볼 수 있는 데에 비해

EM Clustering으로 처리한 것은 상당히 깔끔하게 나뉘어짐. 둘 다 머신러닝 기법인데, 딥러닝 technique로 처리하게 되면 훨씬 더 깔끔해지고 보다 복잡한 분포에 대한 처리도 가능해진다 :)


feature selection, feature extraction 둘 다 사람이 처리한다는 점에선 동일.

feature selection : 사람이 판단하여 괜찮다고 생각되는 feature를 선택하는 그러한 logic

feature extraction : 사람이 선택한 feature를 데이터에 주입하기 위해 코드를 직접 짜서 extract하는 것

사람이 rule-based로 짜는 것은 selection에 가까우며, data를 PCA(Dimensionality Reduction에 속한다)같은 method나 평균적인 모델을 가지고 추출하는 것, 즉 통계적인 기법이 되었든 딥러닝적인 기법이 되었든 알고리즘을 사용해서 추출하는 것은 extraction이라고 할 수 있다.


Dimensionality Reduction Problem

​: Reduce the dimension of input data, to avoid the effect of the curse of dimensionality

projection을 하는 이유 : clustering 같은 것을 할 때 유클리드 distance를 기반으로 similarity를 계산할 때 차원의 저주(데이터의 차원이 올라갈수록 고차원 공간에서 계산되는 유클리드 distance의 의미가 없어지는 현상)이 나타난다

차원이 많다 보면 불필요한 요소에 의해서 거리값이 disturb되는 정도가 점점 심해지기에 항상 최대한 data의 정보들을 손실하지 않고 저차원 공간에서 분석하려는 노력을 하게 되고, 그 여파(?)로 실제 데이터를 분석할 때 dimension을 낮추는 projection을 많이 하게 된다. 그럼 projection은 어떻게 진행되는 걸까.

​-

projection 과정 : 3차원 공간 상에서 데이터 분포를 살펴보니 우연히 한 면에 주로 많은 데이터가 분포한다는 것을 확인한 상황에서 분석하는 입장에서 살펴 보았을 때 해당 면에서 데이터의 분포를 보는 것과 다른 방향에서 데이터의 분포를 보는 것은 다르다

Reduce unnecessary representation axis

original data space(3차원 공간) --(PCA)--> component space(2차원 공간)

3차원 데이터를 2차원 데이터로 보내려는 상황. 3차원 공간에서 임의의 평면을 선택하여 데이터 분포를 살펴보았더니 해당 평면에서 데이터들이 잘 분류되는 것을 볼 수 있으며, 이러한 처리를 하기 위해 이용되는 방법이 PCA(주성분분석)이다

PCA : 데이터의 분산이 가장 커지는 축을 자동으로 찾아준다.

ex) 3차원 공간에서 데이터의 분산이 커지는 방향의 축 두 개(PC1, PC2)를 찾아 이를 low dimensional space의 기준으로 삼아 그 space의 매핑을 projection:  분산이 커서(데이터들이 서로 덜 겹쳐서) 유의미하게 데이터 loss를 최소화하면서 차원을 줄여 distance 계산이나 similarity 계산을 좀 더 잘 할 수 있도록 돕는다

* 차원축소는는 다른 알고리즘(Regression, Classification, Clustering)에서도 많이 사용된다

Feature & Data Representation

Case 1

X

x1 : quiz 1 score

x2 : quiz 2 score

x3 : study hour

Y

y1 : final exam score

y2 : grade

X --(ML)--> Y 를 예측하는 모델:  X는 x1, x2, x3로 3차원이므로 차원이 매우 낮은 상태이기 때문에 기존의 알고리즘이 잘 작동할 가능성이 높다

Case 2

X

x1 : first pixel value

x2 : second pixel value

x3 : third pixel value

...

x784 : 784th pixel value

Y

y1 : digit

X --> Y

이미지가 주어졌을 때 이미지에 작성된 숫자를 파악하여 분류하는 퀘스트 (!) 로 해당 이미지는 가로 세로 28 x 28인 이미지이다. 각 픽셀은 0~255의 값을 가지고 있으며, 총 784개의 픽셀이 각 이미지마다 존재하기에, 이는 784차원의 X 벡터가 된다. 그런데 이러한 X 벡터를 0부터 9까지의 총 10개의 class를 가지는 discrete space로 매핑할 때 784차원 상에서의 유클리드 distance를 사용하여 direct로 계산하면 고차원의 저주가 발생하기도 한다(숫자 5인 이미지와 또 다른 숫자 5인 이미지보다 숫자 0인 이미지와의 거리가 더 짧게 계산되는 현상)

X

x1 : first pixel value

x2 : second pixel value

x3 : third pixel value

...

x784 : 784th pixel value

h

h1 : feature1

h2 : feature2

h3 : feature3

Y

y1 : digit

X --(DL)--> h --(ML)--> Y

기초적인 상황은 case 2와 동일한 상황에서 dimensionality reduction 알고리즘을 사용하여 784차원의 X를 3차원 h로 보내는 모델을 만든다 하자. 해당 정보를 갖고 있다면 각 instance를 distinguish 할 수 있으므로 정보들이 잘 학습될 것 (3차원 h를 Y로 매핑하는 케이스라면 Case1의 상황과 거의 비슷해진 것). 

고차원을 3차원으로 축소하하는 과정에서 feature extractor(selector)도 동시에 이루어진다고 말할 수 있다. 3차원으로 잘 변환된다면 해당 상황에서 머신러닝 알고리즘이 무리 없이 작동할 수 있을 것. 

*위 case에서 알 수 있듯, Dimensionality Reduction 기술은 타 알고리즘과도 무난히 잘 쓰이며, Regression, Classification, Clustering에서도 input instance를 저차원 벡터로 보냈을 때 성능이 높아질 수 있다

Summary(Point)

Classification, Regression, Clustering, Dimensionailty Reduction

딥러닝 모델을 만들려고 할 때 자신이 현재 해야 하는 일이 위의 네 가지 중 어떤 상황인지를 잘 파악해야 한다

문제가 복잡해질수록 네 개 중 어떤 것을 선택하고 뭘 어떻게 설계해야할 지 잘 알아낼 수 있어야 한다