ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 머신러닝
    머신러닝 & 딥러닝/딥러닝 기초 2023. 12. 14. 14:20

    머신러닝이란

     사람이 모든 조건을 코딩해서 컴퓨터에게 알려주는 것이 전문가 시스템이었다. 머신러닝은 컴퓨터에게 데이터 분포를 주고 컴퓨터가 스스로 규칙을 찾게 하는것이다.

    위 그림과 같은 데이터 분포가 있다고 가정해보자. 이 데이터 분포를 갖고 컴퓨터에게 파랑색과 노랑색을 가르쳐주기 위해 어떻게 해야할까?

     

    첫째로 학습용 데이터셋을 제공해준다. 학습용 데이터셋이란 컴퓨터가 보고 학습하기 위한 데이터셋이다. 컴퓨터에게 문제와 정답지 모두 제공하여 틀렸을 경우 반복해서 학습하게 한다.

    두번째로 시험용 데이터셋을 제공해준다. 컴퓨터가 학습용 데이터셋으로 학습을 완료하면 얼마나 잘했는지 테스트하기 위한 데이터셋을 시험용 데이터셋이라고 한다.

     

    학습용 데이터셋과 시험용 데이터셋의 데이터는 겹치면 안된다. 따라서 시험용 데이터는 학습용 데이터와 겹치지 않게 구성해야한다.

    즉, 컴퓨터에게 학습용 데이터셋을 제공하여 컴퓨터가 학습하게한다. 컴퓨터가 학습을 완료하면 우리는 시험용 데이터셋과 컴퓨터가 학습한 결과가 얼마나 일치하는지 확인하면 된다. 결과가 많이 다른 경우 컴퓨터를 다시 학습시킨다.

     

    분류를 어떻게?

     그럼 컴퓨터는 파랑색과 노랑색을 어떻게 구분할 수 있을까? 머신러닝에서 대표적인 classification 방법들을 알아보자.

    1) KNN (K-Nearest Neighbor)

     knn 알고리즘이란 분류하고자 하는 샘플에 대한 k개의 근접 이웃을 찾는 방법이다.

    회색의 데이터들은 파랑색과 노랑색 중 어느 클래스로 구분될 수 있을까? k=3이라고 가정해보자. 여기서 k는 근접한 이웃의 수이다. 좌측 회색 데이터는 파랑색들과 가깝게 분포해있다. 하단의 회색은 노랑색, 우측의 회색은 파랑색들과 가깝게 분포해있다. 이렇게 k개의 가장 근접한 이웃을 기준으로 판단하는 알고리즘을 knn알고리즘이라고 한다. 점들과의 거리를 계산할 때는 유클리드 거리, 맨하탄 거리를 사용할 수 있겠다. 즉 knn 알고리즘이란 다음과 같다.

    • Find the K closest training points
    • Predict class - Majority vote of k-neighbors

    하지만 knn 알고리즘은 비용이 많이 들고 많은 메모리를 요구하며 고차원에서 성능을 발휘하지 못하는 등의 단점을 갖고있다.

     

    2) SVM (Support Vector Machine)

     Classification이란 X가 주어졌을 때, Y를 예측하는 것이다. Classification의 방법 중 하나인 SVM은 입력 공간과 연관된 비선형적인 고차원 공간에서 간단한 기하학적 해석을 할 수 있다는 장점을 갖고있다. 그럼 SVM의 아이디어는 뭘까?

    다음과 같은 데이터 분포가 있다고 가정하자. 우리는 파랑색과 노랑색을 잘 분류만 하면 된다. 즉 데이터를 분리한 선형 초평면(linear hyperplane)을 찾으면 된다.

    하지만 데이터가 더 복잡해서 결정 함수가 선형이 아닐 경우는 어떻게 할까? 이럴 경우에는 데이터를 새 공간으로 변환해서 선형 경계가 인스턴스를 분류할 수 있도록 해주면 된다.

    즉 위 그림과 같이 고차원의 공간으로 변환한다면 분류가 더 용이 할 것이다.

    복잡한 데이터를 고차원 공간으로 변환 후 분류하게 되면 위 그림과 같이 분류할 수 있게 된다. 이렇게 커널(kernel)을 사용하여 3차원 공간에서 데이터를 선형 분류할 수 있게 된다. 여기서 커널이란 함수를 의미한다. 즉 Kernel Trick을 사용해서 저차원 공간을 고차원으로 변환 후 데이터를 잘 구별하여 비선형 SVM의 문제를 해결할 수 있다. SVM을 요약하자면 다음과 같다.

    • Convex optimization problem in which efficient algorithms are available
    • Maximizing margin of the decision boundary
    • The user must provide hyper-parameters such as the type of kernel function and the cost function C for slack variables
    • Can be extended to multi-class problems

     

    3) 인공신경망 (Artificial Neural Network)

     복잡한 데이터의 경우 고차원으로 변환 후 선형 분류 하는 대신에 애초에 곡선을 이용해서 데이터를 분류하면 어떨까?

    위의 그림과 같이 직선, 곡선 함수들을 잘 조합한다면 애초에 파랑색과 노랑색을 어느정도 구분할 수 있게 되는데 인공신경망이 이런 아이디어이다.

     

    4) 딥러닝 (Deep Learning)

     데이터의 분포가 상당히 복잡하여 하나의 경계선만으로 구분되지 않는 경우가 대부분이다. 이러한 경계선을 위한 작업을 여러번 수행한다는 아이디어가 딥러닝이다.

    딥러닝은 인공신경망의 작업을 아주 많이 반복하는 방법이다. 경계선을 배치하는 작업을 층(Layer)이라고 하며 딥러닝은 이런 층을 많이 쌓아 깊은(Deep)층을 이룬다.

     

    정리

     최초에는 사람이 모든 조건을 코딩해서 컴퓨터에게 알려주는 전문가 시스템 방법을 사용했다. 하지만 모든 조건을 사람이 직접 코딩하기란 불가능에 가깝다. 따라서 이러한 학습을 컴퓨터에게 시키는 머신러닝 기법이 나타났다. 데이터가 충분하다면 높은 성능을 낼 수 있다. 머신러닝의 방법에는 인공신경망이라는 방법이 있는데 이는 여러가지 함수들을 적절히 조합해서 데이터를 분류할 수 있는 경계선을 만들어주는 것이다. 하나의 경계선으로는 데이터를 잘 구분할 수 없기 때문에 경계선을 배치하는 작업을 여러번 수행하는데 이 방법을 딥러닝이라고한다.

     

    참고자료

Designed by Tistory.