한국은 왜 2류일까 (2)

0
418

아래의 2개 예시는 판교의 어느 초일류 게임사에서 개발자로 밥벌이를 하는 친구의 질문에 대한 답변을 거의 그대로 옮겨 놓았다.

(Source: Harnesslink)

 

1. Information equivalence

“데이터의 해상도를 높이면 숨겨져 있는 데이터 속 패턴을 찾을 수 있다.”

와 같은 생각으로 요즘 회사 안에서 DB 기록 시간 단위를 좀 더 세분화하는, 이른바 “해상도를 높이는” 프로젝트를 진행 중이란다. 그러면서 정말 이게 효과가 있는거냐, 아무리 봐도 효과가 없는거 같은데, 위에서 내려오는 프로젝트라서 토달지 못하고 있단다.

대답을 하기 전에, 한 가지만 확인하고 가자. 온라인에서 인간의 행동이 일어나는 시간 단위는 어떤가? 매 초 마다 여러개의 웹 사이트를 찍어대기는 하지만, 그래도 상품 구매 같은 금전적인 결정은 최소한 분 단위 이상의 고민 or 지식 습득이 들어가고 난 다음에 일어난다. 행동 일어나는 패턴을 추적하는데, 그 행동이 발생하는 것보다 더 자주 데이터를 찍어놓으면 의미가 있을까? 사실 더 Frequency를 높여봐야, 목적값이 분 단위라고 한다면, 큰 도움이 안 된다. 왜일까?

그동안 빅데이터의 정의를 이야기하면서, 분기별 데이터, 월별 데이터를 단순한 몇백 테라바이트 정보로만 모아놓아봐야 소용없다, 행동을 추적할 수 있어야된다는 이야기를 했기 때문에, millisecond 단위의 데이터는 필요없을지도 모른다는 이야기에 얼핏 이해가 안 될 수도 있다.

가장 쉬운 예시로, 주가 수익률을 들어보자. 내가 1달 동안 보유해서 얻을 수 있는 수익을 예측, 계산하고 싶다면 어떻게 해야할까? 매일의 주가 30개 (한 달 거래일을 30일로 가정)를 알고 있는 것과, 매 시간 단위로 9시간  x 30일의 데이터 포인트를 알고 있는 것 사이에 차이가 있을까?

한 달 주가를 예측하려면 몇 년치 주가를 이용해서 평균 수익률을 계산하고, 이걸 월/일/시간 단위로 재계산을 하게 된다. 말을 바꾸면, 한 달 수익률을 일일 수익률의 30배, 일일 수익률은 시간 수익률의 9배가 되어야한다. 이게 안 된다면? 당연히 비싼건 팔고, 싼건 사는 방식의 대차거래 (Arbitrage)가 일어난다. 못 믿으시겠다면 기하평균으로 수익률 10개의 곱과 처음 & 끝 사이 가격의 차이를 비교해보시라.

평균값인 수익률만 그렇고, 분산은 안 그런거 아니냐고? (변환 계산을 거치고 나면) 분산도 똑같고, t-stat도 똑같고, 신뢰구간도 똑같이 나온다. (서로간 Correlation이 있는 경우가 아니라면 – Finance에서는 모멘텀이 있는 경우가 해당된다)

Finance에서는, 아니 좀 더 General하게 통계학에서는 이런 경우를 Information equivalence라고 한다. 시간단위 수익률 데이터에서 나온 정보가 일일 수익률에, 일일 수익률 데이터 분포의 정보가 월간 수익률에 모두 포함되어 있기 때문이다. 매일 주가 수익률 널뛰기가 심하다면 일별 분산이 크게 나올 것이고, 결국 월별 분산도 크게 나올 수 밖에 없다.

그럼 시간별, 일별 수익률 같은 “해상도 높은” 데이터는 아무 쓸모도 없냐? 그렇지는 않다. 아까 위에서 “인간의 행동이 일어나는 시간 단위”에 대한 질문을 했던 기억이 나는가? 한 달 후의 주가 예측이 아니라, 당장 2시간 후의 주가 예측을 하고 싶으면 시간 단위의 주가 움직임 정보가 더 많은 정보를 담고 있음은 당연하다. (High Frequency Trading에서 아주 짧은 시간 별 데이터를 보는 이유는, 거래 시간 단위가 그만큼 짧기 때문일 뿐, 워렌 버핏처럼 장기 투자하는 사람들에게 그런 “해상도 높은” 데이터는 아무런 소용이 없다.)

정리하면, 예측해야하는 Time horizon보다 좁은 시간 단위의 데이터는 굳이 “해상도를 더 높이려고” 고생할 필요가 없다는 뜻이다.

온라인 게임을 하면서 millisecond마다 계속해서 결제를 반복하시는 분들은 거의 없을 것이다. 말을 바꾸면, 굳이 “해상도를 높이려고 노력하는 작업”이 필요한 부분은 굉장히 제한적일 것이라는 결론이 나온다.

그런데 왜 게임사들은 데이터 Hype에 걸려서 계속해서 “해상도를 높여야한다”는 주장을 계속하고 있는 것일까?

 

2. Latent variables

데이터의 해상도와 더불어, 유저들의 모든 작업에 대한 정보를 다 모아라는 압박도 있단다.

덕분에 원래는 100개, 200개 정도의 정보만 찍으면 됐었는데, 이제는 천 개 이상의 정보를 찍는 상황이 되었고, 서버 비용도 덩달아 폭증하고 있단다.

여기에 대한 대답을 하기 전에, 이렇게 한 번 물어보자. 고교 시절에 중간, 기말고사 과목이 20과목이면, 그 시험 점수들 사이에 상관관계가 있다는 걸 느낀적이 있냐고. 예를 들면 일반 사회 과목과 지리 과목 점수가 큰 폭으로 차이나는 경우를 본 적이 있나? 국어는 잘 하는데 문학은 못 하는 친구를 본 적은? 실제로 시험은 20과목이나 쳤을지 모르지만, 정작 그 학생의 잠재 능력을 변수화 할 수 있다면 많아봐야 4-5가지 밖에 안 된다.

수학 능력, 국어 능력, 암기 능력, (밤샐 수 있는) 체력 or 근성

아마 시험 점수는 위의 4가지 잠재 능력에 의해서 많은 부분 결정될 것이다. 이런 “숨겨진” 변수를 통계학에서 Latent variables라고 표현하고, Factor Analysis (FA)에서 깊게 배운다. FA에서 Latent variable을 찾는 방식은, 기존 데이터들 사이의 covariance 구조를 활용해서 원래 데이터의 구조를 새롭게 구조화하는 또다른 변수를 찾는 작업이다. (PCA와 굉장히 비슷하지만 Covariance만 쓴다는 점에서 큰 차이가 있다.)

방금 들었던 예제와 FA는 필자가 수업 시간에 PCA를 설명하면서, 또 Neural network에서 Auto-encoder가 작동하는 방식에 대한 설명을 하면서 좀 더 깊게 다룬다.

자, 원래 질문으로 돌아와서, 게임 유저가 돈을 쓰게 되는 결정을 하는 순간을 찾아내는데 1,000개 이상의 변수를 항상 찍어대야할까? 아니면 숨겨져 있는 변수 몇 개만을 찾아내는 것으로 충분할까?

현실 데이터에서 변수들 간에는 거의 같은 값을 주는 경우, 수학적으로는 Multi-collinearity가 있는 경우도 많고, 꼭 1:1이 아니더라도 1:N으로 Linear dependency가 있는 경우도 흔하다. 정말 중요한 변수는 사실 그렇게 많지 않다. PCA를 직접 Raw data에 적용해본 경험이 있는 사람들은 다들 알 것이다.

저렇게 단순하게 Column만 더 늘리겠다는 접근을 할 일이 아니라, 무슨 데이터가 필요할지 간단하게라도 유저 행동 패턴에 대한 Toy 모델을 세워놓고, 현재 보유 데이터에서 어떤 부분이 부족한지, 어떻게 Instrumental variable 같은 걸 찾아서 메워넣을 수 있을지에 대한 고민을 먼저하는게 데이터 모델링을 했던 사람에게는 상식과 같은 접근 방법이다.

재밌는 사실은 이런 작업에 대부분의 공돌이들이 경끼를 일으킨다는거다. 뭔가 자동화해서 시스템만 갖춰놓으면 알아서 척척척~ 되는 거 없냐고들 묻던데, 정말 그랬으면 다른 전공들 Research가 박사들의 머리가 아니라 자동화 시스템에 의존하고 있을 것이다. 공학에서는 그런지 모르겠는데, 인간 행동 데이터 다루는 곳은 다르다. “Machines can replace hands, but cannot replace brain.”

정리하면, 데이터 Column 숫자를 기계적으로 늘린다고해서 유저 행동 패턴을 찾고, 그 패턴에서 “돈을 쓰는” 상황을 찾아내는 작업을 하는데 큰 도움이 될 가능성은 낮다.

그런데 왜 게임사들은 데이터 Hype에 걸려서 계속해서 “모든 작업에 대한 정보를 다 모아라”고 압박하고 있는 것일까?

 

3. 한국은 왜 2류일까? – 공돌이의 나라 vs. 공학도의 나라

위의 2가지 사례는 필자가 왜 개발자, 심지어 공돌이 중심의 머신러닝 공부하는 집단을 경멸에 가까운 눈으로 보고 있는지에 대한 단적인 예시들에 불과하다. 한국에서 Data Scientist 뽑는 자리에 수학, 통계학 모델링 훈련을 착실하게 받은 뇌과학, 물리학, 응용수학, 응용통계학, 심지어 경제학 박사들을 뽑는 걸 본 적이 있는가? 왜 실리콘 밸리에서 주력 인재 풀 집단이 이 시장에 진입하질 않고, 한국에서는 수리통계학 내공이 거의 없는 컴퓨터”공학” 출신들 위주로 구성되어 있을까? (전공자들은 알겠지만, 컴퓨터 “과학”과 “공학”은 다른 전공이다. 경제학과 경영학이 다른 전공인것처럼.)

위의 예제들의 Information equivalence와 Latent variable에 대한 이해는 수리통계학 모델링을 공부한 사람이라면 누구나 한번쯤은 스쳐지나가는 토픽이다. 그런 “기본적인 모델링 지식”도 없는 사람들이 우리나라에서 Data로 Insight를 뽑아낼 수 있다고 주장하는 자리에 잔뜩 앉아있지 않다면 위의 한심하고, 멍청하고, 답답하고, 쪽팔린 사건이 생길 수가 없다.

한국은 왜 2류일까? 한국은 쪼개보고, 분석하고, 고민하고, 모델화하는 지식을 갖춘 사람들 위주로 돌아가는 나라가 아니라, 베껴쓰고, 갖다붙이고, 적당히 꿰어맞추는 지식을 갖춘 사람들 위주로 돌아가는 나라, 후발주자형 지식 사회를 갖춘 나라이기 때문이다.

바꿔 말하면, 수학이 강한 나라가 아니라, 계산이 강한 나라이기 때문이다. 좀 더 비판의 수위를 올리면, 공”학자”의 나라가 아니라 공”돌이”들의 나라이기 때문이다. 더 노골적으로 이야기하면, 기초과학이 없는 나라, 기술은 돈 주고 사서 쓰면 된다고 생각하고, 심지어는 훔쳐서 리베이트를 아끼려는 나라, 핵심기술은 포기하고 중간재를 저가 노동력으로 찍어내는걸로 성장한 나라이기 때문이다.

저 위에 언급한 친구네 게임사에 어떤 인력이 있는지는 모르겠지만, 저런 데이터 Hype이 걸리는 이유를 하나만 꼽으라면, 저 회사 데이터 팀에 윗 분들은 학부 수준 or 그냥 앉아서 곰곰하게 생각한 수준 이상의 지식이 없는 분이기 때문이지 않을까? 교수로 있는 선배들이 “학부생들이 한다는게 다 그렇지 뭐~”라고 하셨던 것과 같은 맥락으로 비웃음을 날릴 수 밖에 없다. (개인적으로 탐문 조사한 내용을 바탕으로 그 회사 사정에 대한 좀 더 직접적인 정보를 기입했으나, 대외적인 이미지에 타격을 입을 수 밖에 없을 그 회사 사정을 생각해 추가적인 정보는 삭제한다.)

삼국지의 조조처럼 적재적소에 인재 등용을 할 수 있는 우두머리가 저 게임회사에 앉아있었다면, 외부에서 수리통계학 기반 연구로 박사 하신 분을 불러와서 전권 위임을 시켰을 것이다. 그 게임사가 글로벌 1등을 다툴 수 있을만큼 잘 나가는 회사인데 그런 인력 하나 못 구했을까?

글쎄다. 아마 그 위에 회사 전체 대표라는 분도 딱 그 수준으로 “데이터 어쩌고 저쩌고 = 머신러닝 = 개발자들이 하는 일 or at least 개발자들도 할 수 있는 일”이라는 생각에서 크게 벗어나지 못한 상태이기 때문에 그런 인사 결정을 내렸을 것이라고 생각하면 너무 회사 정치 싸움을 모르는 티가 나는 판단인가? 어찌됐건, 위계집단에서 우두머리가 2류면 1류 부하직원이 집단을 이끌지 않는 이상 그 집단의 최대치는 2류에 불과하다.

 

나가며 – 응원을 받을 수 있는 자격

응원하는 팀의 스포츠 경기를 보러가서 언제 응원을 그만하고 집에 돌아가게 될까? 이겼으면 경기가 끝나도 여운을 즐기려고 경기장에 남아있는 분들이 많다. 근데, 지고 있는 경기를 도무지 뒤집을 수 있을 거라는 판단이 서질 않으면, 남은 시간에 관계없이 자리를 뜨는 사람들이 점점 늘어난다. 실망했는데, 반전의 기미가 안 보이기 때문이다.

요즘 한국의 “데이터 사이언스” 시장 상황을 보면서 비슷한 생각을 하게 된다. 상황이 적당히 엉망이면 웃으면서 응원한다. 바뀔지도 모르니까. 근데 모델링 하는 사람들에게 상식적인 내용을 몰라서 한국의 대표 IT회사가 저런 식으로 AWS 비용만 몇 배를 쓰는 쪽팔린 짓을 하는데 웃으면서 응원해야하나? 가끔식 연락오는 교수님이나, 나름대로 공부 좀 했다는 분들 말씀에 따르면, 남들은 수식 이해없이 코드만 보고 있지만 나는 수식 볼 수 있으니 다른 사람들보다 뛰어나다고 굳이 수업까지 들어가며 자세하게 공부할 필요 없다고 생각하시는거 같은데, 미안하지만 필자의 눈엔 거기서 거기다. 수식만 보고 이해한다고 될 문제가 아니라, 모델링을 하는 전체적인 뷰를 갖고 있어야하기 때문이다. (이미지 인식, 자연어 처리처럼 극히 제한적인 작업만 하겠다면 상관없겠지만.)

참고로, 최근 몇 년 동안 데이터 사이언스 붐이 생기기 전까지 이쪽 지식은 Non-linear programming과 대용량 데이터 처리를 고민하면서 수리통계학 도구를 무겁게 쓰는 몇몇 박사 과정에서나 다루던 내용이었다. 몇 개의 관측값만으로 천체의 궤도를 시뮬레이션하던 천체물리학이나, 복잡한 파생금융상품 가격 모델링을 하던 금융공학하던 친구들이 데이터 사이언스에 더 적합한 전공이라는게 너무나 자명해보이지 않나? 그러니까 실리콘 밸리에 그런 인력들이 Data Scientist로 대거 유입되고 있는 것이다. 이걸 박사 과정에서 배우는 수학, 통계학 훈련없이, 그렇게 쌓아올린 내공을 바탕으로 몇 년동안 연구에 밀어넣는 노력없이도 다 이해하고 있다는 분은 진짜 엄청난 천재인건가? 아니면 수박 겉핡기 수준으로만 이해하고 있는건가?

뭐, 누구 실력이 뛰어나고 말고를 떠나서, 제발 판교와 강남에 흩어져 있는 우리나라 IT 회사들이 정신 좀 차렸으면 좋겠다. 그런 “데이터 팀”을 깊이 없는 전직 개발자가 아니라 내공 탄탄하신 수리통계학 기반 박사님들이 이끌고 있는 회사는 언제쯤 나올 수 있을까? “공돌이들의 나라”에서는 과연 가능한 일일까? 왜 공학도와 수학도가 높은 자리에서 회사를 제대로 이끌고 있는 경우는 못 볼까?

가만 생각해보니, 저 위의 2개 포인트를 보고 “어떤 시간 단위로  기록해야할지, 무슨 데이터 column 만들어야할지 목록 뽑아서 가져와!” 라고 위에서 명령이 내려오는 “2류” 회사에 있으신 분들의 일만 더 늘린게 아닌가 싶다.

참고로, 1류 회사들은 윗 사람이 먼저 고민해서 경우의 수 A, B, C, D 같은 거 만들어놓고 팀원들에게 thought experiment나 간단한 data test 모델 셋팅 주제로 회의를 할 것이다. 윗 사람이 똑똑한 1류회사라면 말이다.