[기계학습, 머신러닝, 데이터마이닝] 인공지능, 그 허상을 깨자. (03)
앞선글에서 "탐색"이라는 것을 알아보았다. 이제, data의 속성, 즉 attribute에 대해 알아보자.
앞선글에서 사용한 "설문조사"는 아래와 같다.
ㄱ) 당신의 나이는? (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개의 data에서 거의 100% 정확도로 맞추는 모델을 만들었다고 가정하자. 물론, 그 이후에 각각의 다른 사람들을 통해 입수된 10,000개의 정보도 100% 정확도로 ㄹ) 항목을 맞추고 있다고 하자(즉, 사람의 외관 정보 ㄱ)~ㄷ)를 통해, 최종 판단 정보 ㄹ)를 완벽하게 맞춘다고 가정).
그런데, 혹시 이런 경우가 있을까?
모델, 즉, 머신 러닝을 수행할때 사용된 1,000개의 data와 그 이후 입수된 10,000개의 data가 모두 만일, 만일, 만일에, "양촌리"에서 조사된 내용이라면 어떨가. 그렇다면, 그 모델, 즉, 머신러닝의 결과는 "양촌리"에 적합한 결과를 반영한 것으로 귀결된다. overfit이라고들 하지만, "양촌리" 내 10,000명에 대해서는 절대로 overfit이 발생하지 않았다. 즉, 1,000명의 data 모델은 10,000때까지 overfit이 발생하지 않은 -완벽-한 모델이다.
(overfit : 주어진 data로 머신 러닝을 수행할때, 해당 data만 적합하고, 이후 테스트하는 data에는 적합하지 않는 경우)
그런데, 만일, 만일, 만일, 해당 모델에, "대치동" 혹은 "비버리힐스" 주민의 설문조사 data가 50,000개를 대입하면, 과정 상식적으로 잘 맞출수 있을까? ㄱ)ㄴ)ㄷ) 정보만 가지고 있다는 가정이라면, 이건 상식적으로도 쉽지 않을 것이다. 양촌리는 주로, 연로한 분들이 많으므로, ㄱ)은 (d)가 많을 것이며, ㄴ)은 (b)가 많을 것이다. 이에 비해, 대치동은 ㄱ)은 (c), ㄴ)은 (a)가 많을 것이다. (주의 : 이 모든 것은 제가 예를 들기 위한 것입니다. 실제 data는 다를수 있겠죠?, 혹시 지명으로 기분 상하신 분들 계신다면, 미리 사죄드립니다.)
즉, 1,000개의 양촌리 사람들 data로 모델을 만들때는, 50,000명의 대치동 사람들의 분포와는 전혀 상반된 내용으로 모델을 만들었다는 것이다. 알고리즘이 아무리 대단하더라도, 완벽하더라도, 양촌리 사람 기반의 data 분석으로 대치동을 설명할 수 없다는 것이다. 물론, 대칭동 기반의 data 분석으로 양촌리 사람을 설명할 수 없는 것도 마찬가지이다.
그렇다면, 이런 경우 어떻게 문제를 해결해야 할까?
가장 쉬운 방법으로는,
ㄱ) 당신의 나이는? (a) 10대 (b) 20대 (c) 30대 (d) 40대 이상 ㄴ) 당신의 성별은? (a) 남 (b) 여 ㄷ) 당신의 신체에 있는 지름 3mm 이상의 반점 개수는? (a) 0개 (b) 1개 ~ 5개 (c) 6개 이상 ㅁ) 당신의 주거지는? (a) 양촌리 (b) 대치동 ㄹ) 당신이 체감하는 소득 분위는? (a) 하위층 (b) 중산층 (c) 상위층 (d) 특-상위층 |
그런데 문제도 분명 있을 것이다. 예를 들어, 양촌리에서 "성공"한 사업가가 "대치동"으로 갈 수 있고, 대치동에서 이제 은퇴하여 양촌리로 가는 경우가 있을 것이다. 이런 경우가, outstanding, 즉, 어떻게 보면, noisy data가 될 수 있다. 혹은 여론 조사 회사를 엿먹이기 위해, 일부러 답을 거꾸로 쓴 경우도 있을 것이고... 일단, 이러한 noisy data와 outstanding등은 "훌륭한" 알고리즘을 사용하면, 적당 수준으로 해결될 것으로 예상된다.
이쯤되면, 아무 문제 없어 보일지 모르나, 결정적인 이슈가 있다. ㄱ) ㄴ) ㄷ) ㄹ) 그리고 ㅁ) 항목들은 모두 기계가 만든것이 아니고, 사람이 만들었다는 것이다. 즉, data의 attribute는 절대적으로 사람의 이성, 직감, 그리고 분석에 의존한다는 점이다. 물론, 최근의 딥러닝같은 경우, attribute없이 그 자체의 object만 받아들일수 있다고는 하나, 위 예와 같이 과연 기계가 ㅁ) 항목을 자발적으로 넣을 수 있을까? 그렇지 못할 것이다.
여하튼, 머신 러닝은 data와 알고리즘 의존적인데, 최근에는 지나치게 알고리즘 관련된 뉴스가 언급이 많아진듯 하다. 사실 알고리즘 만큼 중요한건 data의 설계인데, 이는 그냥 big data, 즉, hadoop 같은 인프라로 퉁 치려고 하는듯 하다. 사실, 머신 러닝을 위한 data는 갯수(이는 big data, 즉, hadoop 연관)도 중요하겠지만, 더 중요한건 어떤 속성(attribute, 즉, 위 예에서는 ㄱ)~ㄹ) 그리고 ㅁ))의 선택도 중요하다는 것이다. 이는 기계적으로 해결될 부분이 아닌 것인데, 많은 인공지능 관련 글들은, "기계"가 "스스로"해결해 나간다는 말이 많으니, 좀 답답할 수 밖에 없다는 것이다.
이를 그림으로 표현하면 아래와 같다.
위 그림과 같이, 한 사람의 설문 조사를 가지고, 어떤 매우 굉장한 알고리즘을 통해 "하위층/중산층/상위층/특-상위층"을 분류하는 알고리즘은 가능할 수 있다. 수십시간~수백시간동안 계속된 계산과 분석을 통해 기계가 스스로 학습할 수 있다는 것이다(참고로, 왼쪽 사람은 data의 object이고, 오른쪽은 attribute의 값인데, 이는 computer science에 등장하는 hash와 유사하다. hash값은 절대 불변의 조건이 있는데, 이에 관련된 글을 다음에 쓸 예정이다.). 그렇지만,
와 같이, 기계가 스스로 설문 조사 항목을 만들어나갈수 없다는 점이다. 물론, google 같이 전세계의 모든 정보가 저장되어 있는 경우, 기계가 스스로 ㅁ) 항목을 만들수 있을 지는 모르나, 그것이 과연, 사람이 ㅁ)을 만드는 것과 비교할 수 있을까? 분명 그렇지 못할 것이다.
이러한 data의 object를 표현하는 attribute의 결정은 꽤나 어려울 수 있는데, 머신 러닝의 일부 영역인 feature selection으로 갯수를 줄여나갈수 있다. 하지만, ㅁ)같이 새로운 항목은, 아쉽게도, 만들어낼수 없다.
그럼 과연 어떤 data가 attribute에 크게 의존하지 않고, object 자체만으로 머신 러닝이 잘 될까? 그게 바로 image와 sound이다. image 같은 경우에는 (0,0)=1, (0,1)=121, ... 와 같이 각 좌표값의 RGB 값으로 표현할 수 있기 때문이다. 더 추가적인 attribute는 크게 고려되지 않는다(뭐, RGB값들의 %정도도 들어갈 수 있겠지만). 그래서, 어떻게 보면, 가장 쉽게 접근할 수 있는 영역이 image인데(apple의 쉬리같은 sound도 포함), 그쪽으로 많이 발전해 나가는건 사실이다. 최근의 "사람", "고양이" 이런것들 분류하는 deep learning은 꽤나 정확도가 높게 나오는 것으로 판명되었다(의아한건, image는 과거 몇십년 전에도 좋은 알고리즘이 많이 나왔는데, 왜 최근에 급격하게 언론으로 붕-뜨는지는... 씁쓸해진다).
즉, 언론이나, 기타 다른 글들에서 사용되는 머신러닝의 예나 분석들은, 어떻게보면, 과거부터 꽤나 "쉬운" 문제들로 구성되어 있다는 점이다. 위 "양촌리" "대치동" 설문지 문제는 deep learning이든 어떤 learning이든 현재로서는 쉽게 해결하지 못한다는 점이다. 현재는 오로지, image, sound, 그리고 특별한 몇몇 이슈들, 밖엔 없는 듯하다.
좀 글이 비관적으로 흐르게 되었는데, 좀 극단적 예를 들었지만, 모든 문제(설문조사, 고양이/사람 그림 분류, ...)들이 모두 적합한것이 아니고, 몇몇 문제는 몇몇 알고리즘등에 적합한 것이 있는데, 최근에 많이 언급되는 것들은 어떻게 보면 - 쉬운 - 문제들이며, 단지 hadoop 같은 인프라 확장에만 목맨다는 점이다. 이런 점이 좀 아쉽다.