데이터 사이언스 ≠ 머신러닝

2000년대 초만해도 컴퓨터 공학에서 머신러닝 전공은 비주류였(다고 들었)다. 1980년대까지만해도 머신러닝에 대한 여러 투자가 있었으나, 당시 컴퓨팅 파워로는 우리가 지금 보고 있는 수준의 상품을 만들어 내는데 계산 비용 (Computational cost, 예. CPU 속도, 램, 시간, 필요 전력 등등)이 너무 많이 들었기 때문에 시장 수요도 적었고, 현실적인 제약을 본 박사생들이 연구 주제로 택하는 일도 드물었다. 다시말하면, 약 20년간 머신러닝은 이른바 “비인기” 전공 중 하나였다. 최근들어 머신러닝을 바탕으로 한 상품이 폭발적으로 쏟아져 나올 수 있는 것은 IT 기술이 발달하면서 컴퓨팅 파워 문제를 많이 극복했고, 관련 데이터가 폭발적으로 증가하고 있기 때문이다. (그리고 투자자들이 “알파고”의 성능을 보고 기대감에 부풀어 투자를 많이 하고 있기 때문이지 않을까 싶다.)

돈 되는 시장에 투자가 가고 있는 현상, 그리고 그 투자가 돈 놀이하는 부동산이나 주식, 파생상품이 아니라 인류의 미래를 바꿀 수 있는 기술에 투자가 되고 있는 현상이 반가운 것은 사실이나, 안타까운 점도 많다. 특히 요즘 머신러닝, 혹은 인공지능에 대한 글이 홍수처럼 쏟아지고 있는데 그 내용을 가만히 들여다보면 독자들을 바보로 만드는 내용이 많아보여서 안타까운 점이 한 두 가지가 아니다. 가장 꺼림칙한 부분은, 통계학은 구시대의 학문이고, 머신러닝은 21세기적인 기술이다, 혹은 머신러닝은 오래된 기술이고 딥러닝이라는 새로운 기술이 인공지능의 핵심이다는 류의 기사들이다. 좀 더 나아가면, 어느 회사의 머신러닝 기술이 다른 회사의 머신러닝 기술보다 좋다, 인공지능 분야에서 우리 회사가 앞선 기술력을 보유하고 있다는 표현도 자주 들었던 것 같다. 맞는 말일수도 있는데, 듣는 데이터 사이언티스트가 좀 답답하니 몇 마디만 해보고 싶다.

 

1. 머신러닝 별 거 없다. 사실 이거 통계학이다

일단 통계학 박사 친구들이나 머신러닝으로 자율주행 기술 만들고 있는 컴퓨터 공학 박사 친구들 둘 다 필자에게 “너 이럴려고 글 쓰냐”는 메일 쓸 것 같은 표현으로 시작해보자.

아마 석사 수준에서 머신러닝 수업을 들어가보면 처음 몇 시간은 통계학 강의를 잘못왔나는 생각이 들 것이다. (수업 들어봤으니 잘 안다. 수업 교실을 여러번 확인했다ㅋ) 예를 들면, 머신러닝 수업시간에 말하는 Gradient Descent는 특정 목표 값을 찾기 위해 오차를 점차 줄여나가는 Trial-and-error 프로세스인데, 이게 오차 제곱근의 최소치를 찾는 Least Square Regression과 개념적으로 동일하다. (아마 통계학 친구들이 수학적으로 결과값을 단번에 찾아낼 수 있는 모델이 더 나은 게 아니냐고 주장할 것이고, 공대 친구들이 수식이 딱 안 맞아 떨어지는 경우에는 Trial-and-error 해야지, 별 수 있냐? 고 그럴 것이다.)

머신러닝의 Classification에 나오는 테크닉들도 통계학에서 Logit, Probit 같은 확률치 예측하는 Regression이나 Separating Hyperplane Theorem (SHT) 같은 차원 평면을 쪼개는 아이디어들에서 출발한다. SHT는 머신러닝에서 Support Vector Machine (SVM) 에서 응용되고 있고, 수학적인 출발점은 같다.

사용하는 테크닉이 모두 (수리)통계학에 기초하고 있다는 점에서 머신러닝은 통계학의 아류라고 해야하겠지만, 두 학문이 데이터를 활용하는 방식은 철학적으로 크게 차이가 난다. 통계학은 데이터를 이해하고 분석하는 학문이라면, 머신러닝은 데이터라는 투입요소로 특정 목표값의 최적 근사치를 찾으려는 기술이다. Neural Network에서 쓰는 Hidden layer(s)는 데이터의 상관관계를 표시하는 함수를 Non-parametric 방법으로 추측하는 통계학 방법의 공학적인 접근법이라고 보면 맥락이 맞다고 본다.

필자가 수업을 들을때만해도, Hidden layers의 숫자를 늘리면 최종 결과값의 정확도는 올라갈 수는 있지만, 계산 비용(Computation cost, 예. CPU, 메모리, 소요 시간 등)이 많이들어가기 때문에 “우월한” 모델이라고 생각하질 않았다. 그러나 알파고의 성공이후 Hidden layers가 여러 층위로 들어간 Neural Network 모델이 “딥러닝”이라는 이름으로 세간에 알려지면서 요즘 필자가 만나는 사람들은 “딥러닝”이 마치 세상을 바꾸는 지식인 것처럼 광신도가 되어 있다. 어느 회사는 그걸 알고 있기만하면 억대 연봉을 주고 고용을 한다는 이야기도 들었다.

좀 안타깝다. 머신러닝 모델들은 사실 이미 오픈 소스로 다 알려져 있다. 누가 더 “딥러닝”을 잘하고 못하고는 그 지식을 알고 있느냐 모르냐의 단순한 문제를 넘어서서, 누가 더 “딥러닝”을 목적에 맞게 잘 쓸 수 있는 아이디어와 경험이 있는지가 더 중요해졌다. (사실 통계학 교과서에 있는 모든 내용들이 현실 적용이라는 이슈에 직면하게되면 같은 문제에 맞딱드리게 된다. “얼마나 기발하게 잘 쓸 수 있을까?”)

통계학을 배우고, 시뮬레이션으로 내 논문을 쓰다가 머신러닝을 만난 필자같은 경우는 데이터로 내가 원하는 목적에 맞는 결과물을 만들어내기 위해 사용하는 하나의 테크닉이라는 관점에서 머신러닝에 접근한다. 샘플 데이터로 집단의 특성을 파악해야 할 때는 통계학을 유용하게 쓸 수 있고, 기존의 데이터를 바탕으로 미래에 발생 가능성 있는 사건들을 예측할 때는 시뮬레이션 모델을 쓰고, 무수히 많은 사건이 일어난 경우를 바탕으로 패턴을 찾아내는 작업을 해야할 때는 머신러닝을 쓴다. 당연하게도 시뮬레이션이나 머신러닝을 이용할 때 사용하는 방법론은 모두 통계학 수업에서 배운 아이디어의 응용이다. 그래서 필자는 시뮬레이션이나 머신러닝을 모두 “통계쓰는 기술”이라고 부른다.

 

2. 머신러닝이랑 통계학은 비교하면 안 된다. 관점이 다른 학문이니까.

머신러닝이 통계학보다 더 낫다고? 더 실생활에 도움이 되는 학문이라고? 실제 적용도 못하는 통계학을 뭐하러 배우냐고? 글쎄다. 위에 썼듯이 통계학은 머신러닝이고 시뮬레이션이고 뭔가 데이터를 이용해서 내가 만들어내고 싶은 결과물을 찾아내기 위한 기술의 기본이 되는 지식이다. 여기 나오는 통계학이 무슨 평균, 분산 계산하는 고등학생 수준 통계학도 아니고…

사실 두 개를 같은 선상에 놓고 비교(?)를 한다는게 무의미하다. 처음부터 목적이 다른 학문이니까. (뭔가 스마트폰과 노트북 중 어느쪽이 더 기술력이 뛰어난지 묻는 질문 같다. 쓰임새가 다른데 비교를 왜 하십니까…)

굳이 “예측력”이라는 지점만 놓고 보면, 단기간의 행동 패턴을 보고 예측하는 모델을 만들 때 굳이 Computational cost가 많이 들어가는 머신러닝 모델을 안 쓰고도, 통계학 기본 모델들이 더 나은 예측력을 보이는 경우가 종종 있다. 경험상 non-monotonic function 함수로 예측이 들어가야하는데, time-dependent 패턴을 쉽게 잡아낼 수 없으면서 계속해서 데이터가 쌓이는 경우에 neural network 같은 머신러닝 방법론이 효과를 발휘하는 경우를 많이 본다. 아래의 예시를 보자.

Training set에서 Neural network (ANN)가 Logit (log)보다 더 정확한 결과값이 나오도록 Learning을 시킨 이후 Test set에 적용할 경우, 위에서 드러나듯이 일부구간에서 Logit이 Neural network보다 더 효율적이다. Neural network이 Logit보다 더 효율적인 결과를 얻기 위해서 필요한 데이터의 양 혹은 기간 (Learning period)가 일정 수준이 되지 않을 경우 Neural network가 좋은 선택은 아닐 수 있다.

 

3. 인공지능은 노동 시장을 없애는게 아니라 바꿀 것이다.

1920년대에 포드 공장에 있던 노동자가 2010년대 현대 자동차 공장의 자동화를 보면 아마 충격을 받을 것이다. (기아, 쌍용 자동차 관계자 분들, 그리고 기타 해외 브랜드 자동차 관계자 분들 모두 죄송합니다. 제가 본 공장이 현대 자동차 공장 밖에 없어서;;;) 아마 1920년대에 포드 공장에서 일하던 사람들 중에 2010년대 현대 자동차 공장에서 일할 수 있는 기술을 가진 사람은 거의 없지 않을까? 요샌 볼트, 너트 조이는건 물론이고 더 복잡한 작업들도 로봇이 알아서 하더라.

마찬가지로 언젠가는 인공지능이 잘 갖춰진 로봇이 인류의 노동력을 많은 부분에서 대체할 것이라는데는 필자도 의구심이 없다. 다만 머신러닝으로 로봇이 “알아서” “잘” 작동하는 가능성에는 열려있지만 머신러닝이 그 로봇을 만들어 내는 알고리즘을 “알아서” “잘” 짜게 되는데는 여전히 의구심이 가득하다. “러닝”을 할 수 있는 알고리즘을 효율적이고 정확도 높게 만드는 부분은 앞으로도 머신으로 완벽하게 대체하기 어려울 것이고, 무슨 역할을 하는 로봇을 만들어야하는지를 판단하는 능력은 오랫동안 인간의 영역이지 않을까 싶다.

더 나아가서 요즘 나오는 인공지능 상품들 중 상당수는 아직도 공장 자동화에 썼던 기초적인 패턴 인식 수준에 머물러 있는 경우가 많다. 단순 반복 작업만 반복하는 로봇에게 필요한 데이터 셋은 그렇게 많지 않으니까 Training을 시키기도 쉽고, 결과도 썩 나쁘지 않다. 진짜 “인공지능”이라는 타이틀을 달고 상품을 팔려면 정말 “지능”이 있어서 “Learning”을 계속할 수 있어야되는데, 요즘 나오는 전자제품 중에 이걸 제대로 하는 상품이 얼마나 있는지 모르겠다.

반례로 Reinforcement learning 을 들어 아이디어 생산 자체도 필요없다고 주장하는 분들이 있으나, 이 부분 역시도 최초 설계 자체는 인간이 해야한다. 당장 테슬라의 인공지능 운전 시스템 역시도 설계 자체는 인간이 했다. 설계 이후 추가적인 Learning은 쌓이는 데이터에 따라 엔진이 하는 것이겠지만. 그리고 그렇게 “Learning”을 “제대로” 할 수 있는 상품이 시장에 얼마나 많이 나와있는지…

머신러닝 마니아들에게 필자가 항상 하는 말이 있다. Machine learns. Only if the teacher designs it well

 

그럼 이런 인공지능들을 만드는 머신러닝 = 데이터 사이언스인가?

필자가 어딜가나 주장하는거지만 머신러닝은 데이터 사이언스를 위한 하나의 도구다. 통계학자 수십명이 달려들어도 못 찾아내는 패턴을 간단한 머신러닝 알고리즘에 데이터만 계속 태우면 찾아낼 수도 있고, 복잡한 시뮬레이션 모델 없이도 머신러닝의 패턴 인식만으로 예측을 쉽게 할 수 있는 경우도 있다. 언뜻보면 머신러닝이 더 우월하기 때문에 나타나는 현상같지만, 정작 머신러닝을 써봐야 별로 도움이 안 되는 경우도 많다는 걸 생각해보면, 어느 장소에서 어떤 목적에 맞춰 어떤 기술을 쓰느냐가 중요한 것이지, 어느 하나의 기술이 다른 기술보다 절대적으로 우월하다고 말하기는 어렵지 않을까?

이런 오해가 생긴 가장 큰 이유가 통계학 교육이 평균, 분산, 정규분포 수준에서 딱 멈춰있기 때문인 것 같다. 정작 통계학 방법론이 데이터를 이용하는 모든 학문의 밑바탕에 깔려있다는 사실을 알고나면 머신러닝에 광신도가 되기보다는 배울 수 있는 하나의 기술이라는 측면에서 접근할 수 있을텐데…

대학 입시를 치른지 15년도 더 지난 요새 고등학생들이 대학 전공을 어떻게 선택하는지는 잘 모르겠으나, 중국 사례를 하나 들어주고 싶다. 학부에서 수학을 전공한 친구들은 석사로 통계학을 해도 되고, 컴퓨터 공학을 해도 되고, 경제학을 해도 되고 등등 고를 수 있는 옵션이 많아서 학부 들어갈 때 수학과 인기가 엄청나게 높다고 들었다. 사실 공대 친구들이 짜고 있는 “알고리즘”이 “기능”적인 측면을 넘어서 “기술”의 영역으로 들어가고 “연구”의 영역으로 들어가버리면 수학과 통계학에 대한 깊은 지식이 어마어마하게 요구된다. 머신러닝도 이미 나와있는 알고리즘을 잘 활용하는 수준을 넘어서서 어떤 식으로 결합해서 어떻게 재구조화 하겠다는 생각을 할려면 고급 수학은 필수라고 생각한다.

한 문장으로 요약하면, 진짜 데이터 사이언티스트는 그냥 머신러닝 알고리즘을 잘 다루는 사람이 아니라, 수학과 통계학으로 상상력을 펼칠 수 있는 사람이어야 한다.

한국와보니 우리나라 시장이 여기까지 따라오려면 앞으로 몇 년이 더 걸릴지 모르겠다 싶더라. 

이래서 강의하기로 맘 먹었다.

 

 

<윗 글은 필자가 타사에 재직 중에 쓴 글을 일부 수정한 내용입니다. 원본은 이곳에서 확인해주세요.>

X