Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

Contents

ML 이란

우리가 알고 있는 프로그램의 대부분은 Explicit programming이다. 어떻게 해결해야 할지가 명확한 프로그래밍이다. 순서도 같은 것으로 실행과정을 나타낼 수 있는 그런 프로그램이다. 내가 만들고 있는 프로그램도 거의 100% 이 영역에 속할 것이다. "if else"만으로 해결 할 수 있는 문제를 푸는 프로그램들이다.

하지만 해결해야 할 문제가 복잡해 지면서 explicit programming 으로 한계에 부닥치게 된다. 스팸 메일 필터링의 경우 초기에는 필터링할 단어의 목록만 유지하면 됐지만, 메일의 양이 커지고 다양한 데이터를 담게 되면서 조건이 너무 복잡해지게 됐다. 개발자가 수천 수만의 if else를 일일이 설정해야 한다고 생각해보자.

그나마 스팸 메일 필터링은 자율주행에 비하면 단순한 편이다. 자율주행은 차량 환경, 차선, 신호등, 주변 차량의 이동, 목적지까지의 경로, 적절한 주행속도, 건널목 등등 엄청나게 많은 변수들을 종합적으로 검토해야만 한다.

1959년 "Arthur Samuel"이라는 분이 이런 생각을 하셨다. 프로그래머가 조건을 일일이 프로그래밍하지 않고, 컴퓨터가 데이터로 부터 학습을해서 문제를 풀게 해보자. 이렇게 머신러닝의 개념이 만들어졌다.

Supervised / Unsupervised learning

러닝은 Supervised 러닝과 Unsupervised 러닝 두 개의 타입이 있다. Supervise는 감독관이란 뜻인데, 학습을 지도하는 주체가 있는지를 기준으로 Supervised와 Unsupervised를 나눈다.

Supervised의 경우 훈련 데이터(Traning data)셋이 주어진다. 이 훈련 데이터는 레이블(labeled)이 붙어있다. 이미지를 분류하는 머신러닝 소프트웨어가 있다면, 사진을 입력하면서 이 그림은 "개", "고양이", "컴퓨터"라고 알려주는 식이다. 충분히 훈련이 되면, 머신러닝 소프트웨어는 지금껏 본적이 없는 이미지에 대해서 분류할 수 있게 된다.

이 출력값이 연속적이면 회귀분석(regression)이 되고, 어떤 종류의 값인지를 출력하면 분류(Classification)가 된다. 위의 예제는 분류의 예다.

Unsupervised Learning 는 자율학습이다. Supervised learning와 달리 입력데이터에 대한 레이블이 주어지지 않는다. 구글뉴스(지금은 서비스하고 있지 않다.)가 대표적인 예다. 구글 뉴스는 주제에 따라서 뉴스를 분류(Classfication)해서 유저에게 전달하는데, 인터넷에서 수집하는 뉴스라는게 레이블이 붙어있을리가 없다. 이처럼 데이터를 보고 스스로 학습하기 때문에 "자율학습"이라고 한다.

이 강좌에서는 Supervised learning를 주로 다룰 것이다. 세상의 많은 문제들이 이 방법으로 풀 수 있기 때문이고, ML에서도 가장 널리 사용하는 방법이기 때문이다. 아래는 Supervised learning로 풀 수 있는 문제들이다.
  • 이미지 레이블 : 이미지에 태그를 붙여서 학습.
  • 이메일 스팸 필터 : 메일에 스팸 태그를 붙여서 학습.
  • 점수 예상 : 공부한 시간대비 점수에 대한 이전 데이터로 부터 학습.

훈련 데이터 세트

Supervised learning은 레이블이 붙은 데이터들을 가지고 훈련을 한다. 훈련의 결과 해당 데이터셋을 가장 잘 설명할 수 있는 모델을 만들게 된다. 이때 사용하는 데이터를 훈련 데이터 세트(Training data set) 라고 한다. 아래 그림을 보자.

 Training data set

X에 있는 값을 입력하면, 결과가 Y로 나오는 훈련 데이터 세트가 있다. 이 세트에 있는 데이터들을 머신러닝으로 훈련을 하면, 이들을 잘 표현할 수 있는 "모델" 이 만들어진다. 이렇게 모델이 만들어지면 새로운 데이터를 입력했을 때, 어떤 값이 나올지를 알 수 있게 된다.

Supervised learning의 타입

Supervised learning는 크게 3가지 타입이 있다.
  1. Regression. 공부한 시간대비 성적을 예측하는 ML 모델을 만든다고 가정해 보자. 이 경우 성적은 0 ~ 100까지의 넓은 범위를 가지게 될 것이다. 이러한 타입을 regression 이라고 한다.
  2. Binary classification. 성적이 아닌, 합격/불합격으로 나누는 모델이 있을 수 있다. 참 아니면 거짓으로의 분류인데, Binary classification 이라고 한다.
  3. multi-label classification. 합격/불합격이 아닌, 몇 개의 등급(A,B,C,E,F 와 같은)으로 분류하는 것은 Multi-label classification 이다.

공부시간에 따른 성적 예측

공부시간에 따른 성적 예측은 Regression 타입의 supervised learning이다. 이 경우 아래와 같은 훈련 데이터 셋이 준비될 것이다.
X(공부시간) y(점수)
10 90
9 80
3 50
2 30
위의 훈련 데이터 셋을 이용해서 모델을 만든다. 이제 7시간을 공부한 학생은 몇 점정도 일지를 예측 할 수 있다.

공부시간에 따른 합격 불합격 예측

공부시간에 따른 합격,불합격 예측은 binary classification 타입의 supervised learning이다. 훈련 데이터셋은 아래와 같을 것이다.
X(공부시간) y(합격/불합격)
10 P
9 P
3 F
2 F

공부시간에 따른 학점

아래와 같이 두 개이상으로 분류하면 Multi-label classification이 된다.
X(공부시간) y(학점)
10 A
9 B
3 C
2 D

학습의 분류

  • 알파고와 같이 승패가 결정되는 게임에서 이기는 방향으로 학습하는 것을 "강화학습"이라고 한다.
  • 스팸메일은 지도학습(supervised learning)
  • 아무런 기준 없이 데이터의 접근성을 확인해서 분류해서 군집화(Clustering)하는 것은 비지도학습(unsupervised learning)
라고 한다.

오차 수정

학습은 인간의 사고과정을 따라간다. 사람은 학습한 데이터를 토대로 결과를 예측하고, 틀릴 경우 왜 틀렸는지를 확인해서 올바르게 예측할 수 있는 방향으로 수정을 한다. 머신러닝에서 예측과 실제 결과가 오차가(Error) 생기는데, 오차를 줄여서 올바른 결과가 나오도록 모델(방정식)을 수정한다.

오차를 수정하는 몇 가지 방법이 있다.
  • 최소제곱법(Method of least squares) : LSM, LMS
  • 최우추정법(Maximum likelihood method) : MLE
  • 최대사후확률추정(Maximum a posterior estimation) : MAP
  • 경사 하강법(Gradient descent) : GD
  • 역전파(backpropagation) : BP
앞으로 이들을 자세히 공부하게 될 것이다.

머신러닝 카테고리

... 정말 많다.