머신러닝 스타트업 투자자들이 알아야 할 필수 지식

인공지능, 머신러닝, 데이터 사이언스

 

요즘 인공지능, 머신러닝 같은 Buzzword를 걸고 사업 소개를 하는 발표를 가면 꼭 나오는 말이 있다.  

“우리가 현재 최고의 AI 기술을 보유하고 있다!”

그래서 당신들의 인공지능 기술을 제대로 좀 설명해봐달라고 부탁하면, 앵무새같이 홍보 문구만 열심히 읊어댄다. 제대로 된 대답을 못 들은 것 같아서, 좀 더 구체적으로 파고들어가는 질문을 다시 하면 앞에 했던 이야기랑 다른 이야기를 막 한다. “엥? 저 사람이 인공지능 로봇인가?”는 생각이 들 정도다. 자기들이 어떤 종류의 머신러닝 기법을 어떻게 써서 이런 인공지능 상품을 만들었다고 제대로 설명을 못하는 사람들이 “최고의 AI 기술을 보유하고 있다”라니….

필자는 이들의 문제점을 잘 안다. 실리콘 밸리에서 직장 찾아 삼만리를 하던 시절, 페XX북과 Data Scientist, Economist 등의 포지션을 놓고 여러가지 면접을 보고 있다고 하니, 필자에게 자기네 스타트업에서 일하자고 “꼬시는” 머신러닝 기반 스타트업들 몇 군데와 이야기를 한 적이 있었다. 그 중 한 회사 CEO가 자기네는 투자 유치를 해서 열심히 성장하고 있는 회사고, CTO와 이야기를 해보면 회사의 기술적 능력에 대해서 더 잘 알 수 있을꺼라길래 차 한잔을 한 적이 있다.

외람되지만 그 분은 너무 순수한 “개발자”였다. 공대 박사 과정 친구들하고 이야기하면 나도 수학이랑 통계학 열심히 공부해야겠다는 자극을 많이 받고 살았는데, 그 CTO 분은 수학, 통계학은 잘 모른채 TensorFlow만 갖다가 코드에 얹어서 머신러닝을 하는 사람이었다. IT업체들이 모델 만들고 데이터로 테스트는 어떻게 하는지 한참 궁금하던 시절이었는데, 일단 모델 만들 능력이 없는 분들이 CTO로 앉아서 회사의 기술 개발 전반을 이끌고 있는데 투자 유치가 잘 되는 스타트업인 상황이었던 것이다. 시간이 한참 흐른 요즘 생각해보니 그런 회사는 CTO말고 Chief Data Scientist가 하나 더 있어야 된다. 아마 필자가 그 시절 무턱대고 거길 갔으면 회사는 망하고 비자 지원도 못 받고 괴롭지 않았을까 싶다.

문제는 그런 스타트업이 한 두 군데가 아니었다. 데이터가 없는데 머신러닝 잘 돌아간다고 주장하는 스타트업, 경우의 수를 많이 고려하는 알고리즘이 머신러닝 아니냐고 반문하던 CTO가 있던 스타트업도 있었다.

우리나라 스타트업도 상황은 비슷한 것 같다. 머신러닝, 인공지능에 대한 제대로 된 이해가 없는 상태에서 당장 투자를 위한 PR에 집중하다보니, 그리고 지식에 대한 깊이있는 이해보다는 코드를 그대로 갖다쓰는 식의 단순한 개발만 하다보니 필자의 질문에 제대로 대답하지 못하는 경우가 생길 수 밖에 없다고 생각한다. 

자칭 데이터 사이언티스트고, 이걸로 강의까지 하고 있는 내 입장에서 이런 상황에 가슴이 아프다. 주변의 요청에 따라 벤쳐 투자자들이나 인공지능 서비스를 쓰는 사용자들을 위해서 몇 가지 숙지사항을 전달하고 싶다.

1. 인공지능의 “진짜” 정의

인공지능의 “진짜” 정의가 뭐냐는 질문을 제일 많이 받는다. 정답은 앞에 있는 “인공”을 빼면 된다.

인공지능의 진정한 정의는 “컴퓨터가 ‘지능’있는 인간처럼 행동하도록 만든 알고리즘”이라고 생각하면 옳다고 본다. 어린아이가 인간으로 성장하고 그 문화권의 행동 패턴을 습득하는 방식을 여러가지로 설명할 수 있겠지만, 쉽게 정리하면 어른의 행동을 보고, 배우고, 그걸 따라하는 시스템으로 정의할 수 있다. 컴퓨터가 똑같이 할 수 있으면 그게 인공지능이다.

알파고가 바둑을 잘 두는 이유는 구글 딥마인드 CEO 하사비스가 바둑을 잘 가르쳐서가 아니라, 그 규칙을 따른 게임들에 대한 데이터가 있고 (보고), 그 데이터로 승패에 필수적인 착점들을 알게되고 (배우고), 다른 프로 기사들과 바둑을 두는 (따라하는) 작업을 할 수 있도록 알고리즘을 짜 놓았기 때문이다.

여기서 오해할 수 있는 부분이 있는데, “누가 암산을 더 빨리 할 수 있나?”를 놓고 인공지능이라고 하지 않는다. 굳이 따지자면 이 부분은 어떤 CPU를 쓰고 (GPU 는 대용량 계산을 천천히 but 정확하게 하는 도구다), 얼마나 간략한 알고리즘을 짰느냐로 결정된다. 이건 설비와 개발자의 코딩 능력에 달려있지, 머신러닝 알고리즘에 달려있지 않다.

따라서 어느 회사가 인공지능 기능을 갖췄다고 주장하면, “이 기능으로 무엇을 할 수 있냐?”와 같은 사용 용도에 대한 질문을 해야지, “얼마나 좋냐, 얼마나 빠르냐?”는 질문을 해서는 안 된다. 그리고 제대로 질문을 했는데도 불구하고 “도입하면 곧바로 사용할 수 있다”거나, “구축이 매우 쉬워서 학습 데이터가 필요없다”고 주장하면 인공지능이 아니라 그냥 Hundreds of “IF”s 일 가능성이 매우매우매우 높다. 

2. 사용하는 머신러닝 종류

그 다음으로 물어야 할 질문은 “사용하는 머신러닝 종류가 무엇인가?”다. 온라인 유저 데이터로 패턴을 매칭한다고 그러면 나올 수 있는 머신러닝 알고리즘은 사실 한정되어 있다. 예를 들어 Decision tree (아래 예시)를 쓴다고 하면, 새로 관찰된 내용들을 이전에 사용한 데이터에서 나온 결론에 적용하는 방식인데, 조건 A,B,C를 만족하는 유저들만 골라서 광고를 보여준다는 식으로 모델이 정리될 수도 있다. 근데 그 조건 A,B,C가 이미 모든 사람이 다 알고 있고, 굳이 머신러닝을 활용하지 않아도 조작으로 쉽게 셋팅할 수 있는 내용이라면? 그리고 그 조건 A,B,C가 계속해서 업데이트 되는게 아니라, 장기간 같은 조건을 그대로 쓴다면? 적어도 필자가 생각하기에 그건 인공지능이라고 말하기 좀 곤란하다.


그 다음 자주 등장하는 모델이 “딥러닝”이다. 박사시절, 전공도 아닌 머신러닝 수업에 놀러가서 처음 본 모델이 Neural Network (신경망 모델)인데, 그 모델에 가상 변수를 1개 층위로 넣느냐, 여러개 층위로 넣느냐가 모델의 정확성과 계산 비용간의 상충관계 (Trade-off)라고 배웠던 기억이 아직도 생생하다. 어느날 머신러닝 관련 기사를 보는데, 여러개 층위로 들어가면 “딥러닝”이라고 이름을 바꿔서 부르길래 저기도 마케팅 하는 사람있네라고 웃어넘겼더니, 이젠 자기네 모델이 딥러닝이라고 “우기는” 인공지능 회사들까지 만나게 됐다.

딥러닝 한다고 하면, Hidden layer는 몇 개 쓰고, 왜 그렇게 쓰는지 한번 질문해보는게 좋을 것 같다. 대부분의 회사에 있는 개발자들은 TensorFlow에 있는 기본 셋팅을 쓰거나, Hidden Layer 숫자 조합 몇 개 바꿔보고 제일 마음에 드는 (제일 정확도가 높아보이는) 숫자를 고른다. 그런데 계산 비용 다음으로 신경망 모델이 안고가는 가장 큰 단점이 과적합 (over-fitting)이다. 이번 데이터 셋에서는 잘 맞는데, 다른 데이터 셋에서는 정확도가 뚝 떨어지는 경우를 말하는데, 개발자들이 그런 수학적인 백그라운드는 잘 모르는체 단순하게 작업하다가 과적합에 빠지는 경우가 많다.

그리고 요새 한창 뜨는 베이지안 모델이 있다. 이 모델을 쓴다고 하면, 베이지안 통계학의 개념을 설명해달라고 해 보고, 그 개념이 사업 모델에 어떻게 적용되었는지 알아듣기 쉽게 설명해달라고 부탁해보면 좋을 것 같다. 대부분의 개발자들은 베이지안 통계학에 대한 깊이있는 이해가 부족한채, 그냥 베이지안 모델이라고 불리는 TensorFlow 코드를 쓰고 있는게 현실이고, 어떤 경우에는 베이지안을 쓰는게 안 좋은 경우도 있다. 특히 다른 글에서 언급한 것처럼, 베이지안이 반드시 필요한 경우가 있는데 (예, 불확실성이 상존하고 그걸 커버해야하는 모델들), 왜 자기네 사업 모델에 베이지안이 필수적인지 제대로된 설명을 할 수 없는 사업모델을 놓고, 단지 Hot하다는 “베이지안”이 들어갔다는 이유만으로 그 머신러닝 알고리즘이 대단하다고 추켜세울 필요는 없다.

 

3. 데이터는 있나요?

사업모델도 인공지능과 궁합이 잘 맞고, 무슨 인공지능을 어떻게 쓰는지 제대로 된 대답을 하고나면, 이제 그 인공지능이 쓸 수 있는 데이터가 있냐고 물어볼 차례다. 데이터가 없으면 Learning이 제대로 될 수 없고, 당연하겠지만 테스트로 제대로 해 볼 수 없다.

대부분의 경우, 아니 99.99%의 경우 데이터가 없거나, 이상한 종류의 데이터만 갖고 있을 것이다. 자기네들은 좋은 데이터가 있다고 우기고, 그 데이터를 직접 볼 수 있는 경우가 흔치 않으니 검증할 방법이 묘연하기는 한데, 이럴 때는 데이터 샘플을 달라고 하는 수 밖에 없겠다. 그래서 어떤 데이터를 어떻게 이용하고 있는지에 대해서 차분하게 설명을 부탁해보자. 데이터가 없는 경우에는 “희망사항”만을 읊을 것이고, 이상한 데이터만 있는 경우에는 제대로 된 설명을 하기 어려울 것이다.

데이터가 이미 많이 있다고 주장하는 경우에 또 하나 던질 수 있는 질문은, 서버 관리는 어떻게 하고 있냐는 질문이다. 아주 큰 회사들은 데이터 센터가 있을 것이고, 좀 덜 큰 회사들은 고가의 실제 서버를 사서 IDC에 넣어놓고 관리한다. 서울 근교 지역으로 나가보면 IDC들이 많이 있으니, 어느 IDC를 쓰냐고 물어보면 된다. 그리고 더 작은 회사들은 고가의 서버를 감당할 돈이 없어서 아마존 같은 클라우드 서비스를 활용하고 있을 것이다. 어떤 인스턴스 (CPU와 RAM 및 기타 성능 패키지)를 쓰고 있는지, 한 달에 클라우드 서비스에 얼마를 내고 있는지, 비용 절감을 위해서 인스턴스를 어떤 걸 바꿔썼는지, 데이터 특성에 따라 인스턴스 쓰는 방식이 다른데 그걸 어떻게 해결하고 있는지 등을 물어보면 데이터 관리하는 부분에 대해서만큼은 감을 잡을 수 있지 않을까?

그런데, 이런 질문들에 다 대답할 수 있으면 스타트업이 아니라 이미 잘 나가는 회사일 것 같다. 거시 경제 수업 때 배운 Rational expectations theory가 문득 생각나네.

X