300x250

자주 잊어버리는 딥러닝 기초 내용을 여러 포스팅에 걸쳐 간단하게 정리해보려 한다. 다룰 내용은 크게 아래와 같다.

  • Introduction
  • Elements of ML
  • Multi-layer Perceptron
  • Model Selection
  • CNN
  • GNN
  • RNN

 

 

목차

     

     

     

     

     

    Introduction

     

    이번 포스팅에서는 머신 러닝이 무엇이며, 주요 구성 요소는 어떤 것이 있는지 알아볼 것이다.

     

     

     

     

    What is ML?

     

    Mitchell이 1997년에 내린 머신러닝의 정의는 다음과 같다.

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

     

    이를 풀어써보면, 머신러닝이란 task \(T\)와 성능 지표 \(P\)에 대해 경험 \(E\)를 함으로써 학습을 하는 컴퓨터 프로그램이다.

    여기서 task \(T\)에는 classification, regression, machine translation 등이 포함되고, performance measure \(P\)는 accuracy, error, perplexity, log-likelihood, 즉 흔히 알고 있는 loss function이 될 수 있다.

    Experience \(E\)는 supervised/unsupervised/self-supervised, reinforcement 등이며, 이에 따라 ML의 종류가 바뀌게 된다. (supervised learning 등)

     

     

     

    Three Ingredients of ML Algorithms

     

    머신러닝 알고리즘을 구현하기 위해 필요한 세 가지 중요한 요소가 있는데 Data(\(D\)), Model(\(M\)), Loss Function(\(L\))이다. 각각을 자세히 알아보자.

     

    Data \(\mathcal{D}\)

    Image, graph, text, video 등을 data라 하고, 각각에 따라 다음과 같은 특징이 서로 다르다.

    • Dimension (차원)
    • Data Structure (데이터의 구조)

    예를 들어, 이미지는 픽셀 grid의 구조를 가지며, 보통 (Width, Height, Depth)의 차원을 갖는다. 이에 반해 그래프 데이터는 node, edge로 이루어진 구조를 가지며, adjacency matrix 등으로 표현한다. 이러한 데이터의 표현을 data representation이라 한다.

     

    Model \(\mathcal{M}\)

    머신러닝 모델은 학습을 하는 주체이며, 함수들의 collection이다. Linear model, SVM, decision tree, neural neworks 등이 있으며, 아래와 같은 특징을 갖는다.

    • Input/output
    • Functions with different parameters

    모델을 이루고 있는 함수의 parameter를 최적화(optimize)하는 것이 곧 학습이며, 머신 러닝의 목표이다.

     

    Loss Fucntion \(\mathcal{L}\)

    위에서도 언급했듯, loss function은 성능의 지표를 나타내기 위한 함수이다. 예를 들어 L1-loss, L2-loss, cross-entropy 등이 있으며, 다음과 같은 특징이 있다.

    • Optimal point(최적점)들에서 최적의 성능을 달성해야 한다.

    딥러닝에서는 Gradient descent 알고리즘을 사용하여 최적점을 찾는데, 이때 gradient를 구하기 위해 loss function을 사용한다.

     

     

     

     

    ML Examples

     

    Regression

    예시는 집의 면적, 지어진 연도에 따른 가격을 예측하는 regression task이다. 각 요소는 아래와 같다.

    • \(T\) : Regression
    • \(P\) : Mean-squared error (MSE)
    • \(E\) : Supervised learning

     

    Fig 1. ML Example (1) - Regression

     

    Data와 model은 Fig 1.에 표현되어 있고, loss는 아래와 같다.

    \( \mathcal{L} = \cfrac{1}{N} \sum\limits_{i=1}^N \lVert \mathbf{y}_i - \hat{\mathbf{y}}_i \rVert_2^2 = \cfrac{1}{N} \sum\limits_{i=1}^N \sum\limits_{d=1}^D \lvert y_i^{(d)} - \hat{y}_i^{(d)} \rvert^2 \)

     

     

    Image Classification

    다음으로, 손글씨(숫자) 이미지를 분류하는 task를 예시로 알아보자. 마찬가지로 머신러닝의 요소로 표현해보면 아래와 같다.

    • \(T\) : classification
    • \(P\) : accuracy
    • \(E\) : Supervised learning

     

    Fig 2. ML Example (2) - Image Classification

     

     

     

     

     

     

    Fundamental Problem of ML

     

    머신러닝에서는 다음과 같은 근본적인 문제점이 존재한다.

    • Generalization Performance
    • Data Mismatch

     

    각각이 무엇이고, 어떻게 해결할 수 있는지 알아보자.

     

     

     

    Generalization Performance

     

    먼저, overfitting과 underfitting에 대해 알아보자.

    머신러닝 모델은 학습을 위해 크게 두 가지 error를 줄어야 한다.

    \( \text{optimization} : \underset{\mathbf{w}}{\min} \mathcal{L}\left( \mathcal{M}(\mathbf{w}) \mathcal{D}_{\text{train}} \right) \)
    \( \text{generalization} : \underset{\mathbf{w}}{\min} \mathcal{L} \left( \mathcal{M}(\mathbf{w}), \mathcal{D}_{\text{test}} \right) \)

     

    Optimization은 training 시의 error를 줄이는 개념이고, generalization은 본 적 없는(test) 데이터에 대해 모델을 적용해 보았을 때에도 잘 동작하는지, 즉, training error와 test error의 차이가 작도록 하는 개념이다. 

     

    Fig 3. Underfitting vs Overfitting

     

    Fig 3에서 왼쪽 그림은 학습이 덜 된 상황이다. Model의 capacity가 부족하여 training data에 대해 error가 크다. 이를 underfitting된 경우라 한다.

    반면, 오른쪽 그림은 training data에 학습을 너무 많이 해서, training data에는 잘 맞지만 test data(새로운 데이터)에 대해서는 일반화 성능이 좋지 않은 경우로, 이러한 경우 overfitting되었다고 표현한다.

     

    최종 목적은 당연히 모델이 새로운 데이터에 대해 예측을 잘 하는, 즉 generalization performance가 좋아지도록 하는 것이다. 이를 위해서는 적절하게 모델의 capacity(weight의 차원, 개수 등)를 설정해주어야 한다.

     

    Fig 4. Generalization Performance

     

    이를 위해 학습 과정에서 training data를 training용과 validation용으로 쪼개어, k-fold validation을 수행해준다. 주로 data의 개수가 부족한 경우에 사용하며, 총 k개의 fold로 나누고, 각 fold를 validation으로 k번 학습을 진행하여 성능을 측정한다.

     

    Fig 5. K-fold Validation

     

    이때 test data는 별개의 data로, 원래 목적대로 evaluation에만 사용한다.

     

     

     

    Data Mismatch

     

    만약 근본적으로 training data와 test data의 분포가 맞지 않는 경우에는 model의 적절한 capacity를 찾는 것은 일반화 성능에 별로 도움이 되지 못한다.

    따라서, training error와 test error의 차이를 줄이기 위해서는 data generating 과정에서 두 데이터의 분포를 맞춰주는 과정이 필요하다.

    \( \text{optimization} : \underset{\mathbf{w}}{\min} \mathcal{L}\left( \mathcal{M}(\mathbf{w}) \mathcal{D}_{\text{train}} \right) \)
    \( \text{generalization} : \underset{\mathbf{w}}{\min} \mathcal{L} \left( \mathcal{M}(\mathbf{w}), \mathcal{D}_{\text{test}} \right) \)
    \( \text{generalization} : p_{train} \approx p_{test} \)

     

    예를 들어, 모델이 강아지를 학습하도록 하기 위해 학습 데이터를 준비했는데, 배경이 모두 잔디밭이라면, 배경이 물이고, 헤엄치고 있는 강아지는 강아지로 구분하지 않을 것이다.

     

     

    728x90
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기