brunch

You can make anything
by writing

C.S.Lewis

기계는 어떻게 사물을 분간할까

기계학습의 원리 - 지도학습과 비지도학습


필자는 빅데이터 분석과 머신러닝, 인공지능에 관심이 많다. 그래서 원래 글을 포스트하던 구글 블로그에선 파이썬을 통한 데이터 분석, Tensorflow나 Scikit-Learn등의 라이브러리를 사용한 데이터 분석 / 머신러닝에 대해서도 포스팅을 한 바 있다. 그러나 역시 비전공자나, 컴퓨터과학에 대한 지식이 없는 이들이게 요즘 대세로 떠오르고 있다는 머신러닝이나 인공지능이 근본적으로 어떻게 작동하는지를 이해하기란 쉽지 않다. 그래서 이 글에서는 어려운 이야기는 쏙 빼고 대체 머신러닝이 무엇이며 어떻게 작동하는지 아주 간단히 설명하고자 한다.


이번 글에서는 빅 데이터 기반 머신러닝의 대표적인 분석방식인 지도학습과 비지도학습에 대해 간단히 이야기하도록 하겠다. 구글 블로그에서는 간단한 코딩과, 내가 텐서플로우를 처음 접하면서 공부하게된 선형회귀분석 / 경사 하강법 (Gradient Descent)을 실행하는 코드도 소개하고, 이를 응용해서 실제 NBA 선수들의 스탯(Stat) 데이터를 가지고 몇몇 변수간 회귀분석을 진행해본 포스트가 있으니 관심있는 이들은 참고하면 되겠다.



머신러닝(기계학습)이 대체 뭘까?


인공지능, 빅데이터에 대해 이야기할 때 가장 많이 언급되는 것이 바로 머신러닝이다. 머신러닝이 도대체 뭘까? 말 그대로 Machine Learning - 기계가 학습을 한다는 말이다. 빅 데이터를 통한 알고리즘으로 기계가 학습할 수 있게 만든다는것이 바로 머신러닝의 기본적인 아이디어이다.

과거의 컴퓨터 소프트웨어들은 그저 수행되도록 프로그램된 동작 외에는 수행할 수 없었다. 그래서 초창기의 프로그램들은 단순한 작업들을 인간을 대신해서 빠르게 수행하는 도구로 자리잡았다. 컴퓨터는 따지고 보면 엄청난 연산 능력을 가진 ‘슈퍼 계산기‘라는 말을 들어봤을 것이다. 컴퓨터가 애시당초 Computer(Compute: 계산하다)라고 이름지어진 이유도 방대한 연산을 처리할 수 있는 기계이기 때문이었다. 프로그램이 발전하면서 컴퓨터는 점점 더 많은 연산을 쉽게 처리할 수 있게 되었고, '정해진 동작'의 범위를 다양화하기 위해 프로그램들은 여러가지 변수와 예외에 대한 동작을 수행할 수 있게 되었지만, 예외와 변수에 대한 동작들 역시 일일이 지정하고 프로그래밍해야 했다.

 
예를들어, 한국의 수도가 어딘지 묻는 질문이 나오고, 오답을 입력하면 '틀렸습니다'라는 문장이 출력되는 프로그램이 있다고 가정해보자. 내가 '미국'이라고 입력하면 컴퓨터는 '틀렸습니다'라고 할 것이다. 그렇지만 이는 프로그램이 한국의 수도가 어디인지 알기 때문이 아니라, 프로그래머가 '서울'이외의 다른 답을 입력하면 '틀렸습니다'라고 말하라고 프로그래밍했기 때문에 가능한 것이다.


그렇지만 기계학습을 통한 인공지능 프로그램은 조금 다르다. 기계학습의 기본적인 아이디어는 기계가 '학습'할 수 있는 알고리즘을 짜는 것이다. 그렇다면 기계는 어떤 식으로 학습하는 것일까? 결론부터 말하면 빅테이터를 통해 패턴을 학습하는 방식이다.


예를들어 머신러닝을 통해 기계가 사과와 오렌지를 구별하도록 학습시킨다고 생각해보자. 우선, 사과와 귤의 특성을 정제된 데이터의 형식으로 만든다. 예를 들자면 아래와 같은 방식으로 말이다.

 
예시에는 4개의 데이터뿐 없지만 이런식으로 '빅 데이터'라고 부를 수 있을만큼 많은 사과와 오렌지의 데이터를 수집하여 기계가 분석하도록 한다. 기계는 이 데이터셋에서 패턴을 발견해내고 사과와 오렌지를 구별할 수 있도록 '학습'된다. 예컨데 색이 오렌지는 색이 주황일 확률이 더 높고, 표면이 울퉁불툴할 확률이 높으며 평균적으로 지름이 더 큰 경향이 있다는 특징을 포착하는 것이다. 물론 기계는 이 모든 판단을 숫자와 확률로 계산한다.

이렇게 학습된 패턴을 바탕으로 빅 데이터를 통해 기계는 사과와 오렌지를 구별하는 알고리즘을 만들어내고, 새로운 과일의 데이터가 주어졌을 때 그 과일이 사과인지 오렌지인지 구분할 수 있게 된다.  결국 인공지능, 머신러닝의 알고리즘은 모두 빅 데이터에 근간을 두고 있다. 이전의 글 - AI의 인지능력과 편향되지 않은 편향성 - 에서도 언급했듯이 기계가 실제로 인간과 같이 생각을 하거나 지능을 가지는 것이 아니다. 그저 수많은 빅 데이터의 분석을 통해 인간과 같은 수준으로 (혹은 인간 이상의 수준으로)패턴을 찾아내는 것이다.



지도학습(Supervised learning)과 비지도학습(Unsupervised learning)


머신러닝에 대해 조금 더 자세히 알아보자. 머신러닝 알고리즘에는 크게 두 가지 대표적인 종류가 있다. 그것은 바로 지도학습(Supervised learning)과 비지도학습(Unsupervised learning)이다. 지도학습은 기계가 알고리즘을 통해 학습하고자 하는 대상의 레이블 (Label) 이 정해져있으며, 데이터와 레이블을 매칭시키는 방식으로 학습하는 방식이다. 반면 비지도학습은 대상의 레이블 (Label) 이 정해져있지 않으며 단순히 퍼져있는 데이터를 분석해 패턴을 발견하거나 유사한 데이터끼리 그룹을 짓는 방식이다.

아마 머신러닝을 접한지 얼마 되지 않은 이들인 이게 무슨 소리인가 싶을 것이다. 알기 쉽게 설명하기 위해 위에서 언급했던 사과와 오렌지의 예시를 다시 들어보겠다. 여기서 우리는 우리가 구별하고자 하는 것이 무엇인지 알고있다 - 오렌지와 사과를 구별하고자 하는 것이다. 다시말해, 우리가 머신러닝을 통해 구별하고자 하는 것의 답에는 범위가 '오렌지 아니면 사과'로 정해져있다. 따라서 '오렌지'와 '사과' 가 '레이블 (Label)이 되며 이는 지도학습에 해당한다. 위에서는 간단한 설명을 위해 '울퉁불퉁함', '매끈함'과 같은 수식어를 사용하여 데이터를 간단히 표현했지만, 실제 머신러닝을 이용해 사과와 오렌지를 구분하기 위해서는 사과와 오렌지의 특징 (feature)를 더 세세히 '데이터화'해야 한다. 예를들어, '매끈하다', '울퉁불퉁하다' 와 같은 추상적인 표현은 '매끈함의 정도'라는 항목을 만들어 수치화하던지, 그게 불가능하다면 '매끈함의 여부' 라는 항목으로 대체해 yes = 1, no = 0 으로 표현함으로써 코드화해야 한다. 그러면 오렌지와 사과를 구별하도록 기계를 '학습'시키기 위해, 우리는 다음과 같은 형태의 데이터셋이 필요하다.


이 100개의 데이터셋은 어느것이 '오렌지'이고, 어느것이 '사과'인지 답이 정해져있는 데이터셋이며, 이 데이터에 포함된 사과와 오렌지의 특징(feature)값들을 특정 알고리즘을 통해 학습하여 사과와 오렌지를 구분할 수 있는 모델을 만들어낸다. 이 100개의 데이터를 포함한 데이터셋을 'Training Data'라고 하며, Training Data 의 크기가 너무 작거나 편중되어 있다면 사과와 오렌지를 충분히 잘 구별하도록 정확히 학습하지 못할 수 있다. 지도학습의 경우 이렇게 Training data를 통해 사과와 오렌지를 구별하는 규칙을 학습하고, Training dataset 외의 과일을 가져왔을 때 이것이 사과인지 오렌지인지 구별하게 된다.

지도학습의 과정


이와 다르게 비지도학습은 Label 없이 데이터만으로 학습 알고리즘을 만들어낸다. 즉, '이 과일이 사과인가 오렌지인가?' 하는 문제에 대답하기보다는, 수많은 과일들이 놓여있을 때 이들의 특징을 분석하여 같은 종류의 과일들끼리 묶어내는 알고리즘인 것이다.

지도학습은 사과와 오렌지 문제처럼 레이블이 정해진 데이터를 구별하는 기준점(Classifier)을 찾기 위한  'Classification' 문제나, 주어진 데이터의 변수간 관계를 나타내는 함수를 찾는 '선형 회귀' (Linier Regression) 문제 등에 사용된다. 비지도학습은 여러 데이터를 종류별로 묶어내는 Clustering에 주로 사용된다.

비지도학습의 과정



구글 블로그의 포스트에서는 직접 파이썬 코드로 지도학습, 비지도학습을 실행해보는 과정을 서술했다. 이 글에는 코딩에 관한 내용은 포함시키지 않겠다. (구글 블로그를 참고하자: https://thoughtschangeworld.blogspot.com/2018/03/blog-post_74.html) 파이썬 코딩으로 알고리즘을 이용해 데이터셋을 분류하면 다음과 같이 깔끔하게 분류되는 것을 볼 수 있다.



작가의 이전글 소프트웨어가 하드웨어를 대체하다
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari