[기계학습, 머신러닝, 데이터마이닝] 인공지능, 그 허상을 깨자. (02)
앞선 글의 다음이다.
앞의 글에서, 기계가 학습(머신 러닝, machine learning)하기 위해서는, 사람과 다르게(사람은 책과 선생을 통해 공부), data를 가지고 학습한다고 하였다(다만, 의견이 분분할 수 있음을 인정한다). 그래서, 기계는 개념을 통해 학습할 수 없다고 하였다.
이제, 다시 data로 돌아와보자. 여기에 설문 조사가 있다.
ㄱ) 당신의 나이는? (a) 10대 (b) 20대 (c) 30대 (d) 40대 이상 ㄴ) 당신의 성별은? (a) 남 (b) 여 ㄷ) 당신의 신체에 있는 지름 3mm 이상의 반점 개수는? (a) 0개 (b) 1개 ~ 5개 (c) 6개 이상 ㄹ) 당신이 체감하는 소득 분위는? (a) 하위층 (b) 중산층 (c) 상위층 (d) 특-상위층 |
만일, 이러한 설문조사를 1,000명에게 실시한 data가 있다고 가정하자(여기서, 숫자는 크게 중요하지 않다, 1,000명이 1,000만명이 될 수도 있다).
만일, 이런 설문 조사를 "SK 텔레콤"에서 했다고 보자. 그렇다면, 설문 조사 1개를 추가하여, "현재 사용하고 있는 요금제는?"이 될 것이며, 헤드 헌팅 업체인 "사람인"등에서 했다면, "현재 직장의 만족도는?"이 될 수도 있겠다. 여하튼, 위 ㄱ)~ㄹ)의 data를 가지고, 어떤 knowledge를 구하고자 한다면, 일반적으로, ㄱ)ㄴ)ㄷ)를 바탕으로 ㄹ)의 연관성을 구하려고 할 것이다. 즉, "어떤 경우에 소득이 높을까?"라는 기계 학습을 수행할 수 있다는 것이다. 이런 경우, 임의의 누군가의 ㄱ)ㄴ)ㄷ) data를 가지고, ㄹ)를 예측하는 것인데, 이러한 논리들을 과거 미국등에서 잘 활용되었던 데이터 마이닝을 이용한, 지식 경영의 한 일환으로 활용된바 있다(최근에서야 국내에서도 잘 언급이 되던데, 실제, 미국등 다른 기업에서는 이미 활용이 되었었다).
만일, 기계 학습을 이용하여,
ㄱ) 당신의 나이는? (a) 10대 (b) 20대 (c) 30대 (d) 40대 이상 ㄴ) 당신의 성별은? (a) 남 (b) 여 ㄷ) 당신의 신체에 있는 지름 3mm 이상의 반점 개수는? (a) 0개 (b) 1개 ~ 5개 (c) 6개 이상 ㄹ) 당신이 체감하는 소득 분위는? (a) 하위층 (b) 중산층 (c) 상위층 (d) 특-상위층 |
라는 규칙을 발견했다고 가정하자.
즉, "30대 남자는 중산층이다"라는 규칙이다(보통, 이런 경우, Decision tree(의사 결정 나무) 알고리즘이 사용된 경우이다). 물론, 30대 남자중에서 어떤 조건에서는 특-상위층도 있을 건데, 이는 model 전체를 봤을때 그런 규칙이 나오는 것이고, 위 규칙은 그 중 하나, 일부를 발췌한 것이다.
만일, 위 1,000명의 설문조사한 data를 가지고, 임의의 알고리즘(예, Decision tree(의사 결정 나무))을 했을때, 98%의 정확도가 나왔다고 하자. 그렇지만 과연, 이것이 진실일까? 정답은 아니다. 아니, 확율적으로 아니다.
인공지능(AI)에서, 많은 문제가 있고, 그 해결이 있는데, 많은 해결방법중 하나가 탐색/검색(Search)이다. 예를 들어, 1,000개의 data중, 가장 큰 값을 구하려고 한다면, 그것또한 탐색이다. 일반적으로, 사람이 생각하기엔 탐색이 아닌 문제로 보여지지만, 실제 기계를 통해서 문제를 풀 때는, 탐색으로 해결하는 경우가 제법 많다.
왜, 갑자기 탐색이라는 단어가 언급이 되었냐 하면, 아래와 같은 설명을 하려고 가져온 것이다. 바로, np-complete 문제. 즉, 답을 찾을 방법이 현재로서는 없다는 뜻이다.
완전 신비한 전설의 알고리즘(god)
하나면 하나, 둘이면 둘, 어떠한 data도 정확하게 예측하는, 어떻게 보면, 우리의 목표인 "완전 신비한 전설의 알고리즘"이 있다고 가정하자. 이는 보통, 다른이들은, "신"이라고도 한다(god only knows). 어떻게보면, 머신 러닝이라는건, 아래와 같이, 수많은 알고리즘중 하나를 탐색(검색)하는 과정이라고 보면 된다.
위에 있는 여러 물체들은 하나의 model이라고 가정하자(보통, AI에서는 가설(hypothesis)라고 한다). 그 가설이 있는 영역은 가설 영역이라고 하고, 우리는 그 중, 최고의 "완전 신비한 전설의 알고리즘"을 찾는 것이다. 즉, 맨 오른쪽 위에 있는 6각형 모양의 가설을 찾는 것이다.
생각해 봐라. 어쩌면, "완전 신비한 전설의 알고리즘"을 찾는 것이, 보통, 메모장에 CTRL+F를 눌러서, 단어 찾듯이 쉽겠느냐라는 것이다. 단순, 애국가 가사만 있는 .txt 문서를 CTRL+F하면, 금새 찾을 수 있을 것이다. 그런데, 어랍쇼, .txt문서의 크기가 20GB, 아니, 20TB, 아니, 20PB, 아니, 그 이상인 경우엔? 즉, 답을 찾을 수 없다. 다시 말해 답은 찾을 수 있을런지도 모른다. 그런데, 그 제약이 "주어진 시간"내에서 찾을 수 없다는 뜻이다. 대략 이런 문제가 np-complete라 할 수 있고, 이는 아직 인류가 해결하지 못한 문제이다.
그렇다면, 현재 계속 IT 뉴스에 나오는 "머신 러닝"은 무었이냐라는 것이다. 그건 바로,
쪼금 정확하다 볼 수 있는 알고리즘
를 찾는 것이다. 아쉽다, "신"을 찾지 못해서.
사람이라면 불가능한 것을, 기계가 할 수 있는 유일한 것중 하나는, data를 빨리 처리하는 것이다. 그래서, 기계는 가설 공간에 있는 여러가지 가설들을 가지고, 주어진 설문 data를 수많이 대입하여, 가장 정확도가 높은 것을 선정하는 것이다. 다르게 설명하자면, 딥블루같이 사람과 체스를 하여 승리한 기계는, 바로 위와 같은 "쪼금 정확하다 볼수 있는"것을 사용한 것이다. 사람은, 기계가 체스를 했다고 "착각"했다고 볼 수 있는게, 기계는 단지, "검색"을 한것 뿐이다. 즉, 메모장에서 CTRL+F한것, 그 것 밖에 없다. 단지, PC 성능이 "무척" 좋아, 1분 시간 제한동안 많은것을 검색했을 뿐인 것과 같다.
원래, 이번 글에서는 data attribute, 즉, 위 설문으로 보자면, a), b), .. 같은 것의 한계를 설명하고자 했는데, 이상한 곳으로 새어버렸다. data sampling과 함께 다음번에 다뤄보겠다.