머신러닝에 왜 통계학이 필수일까?

작년 (2017년) 이맘때로 기억한다. 어느 벤처 투자사 (Venture Capital)와 미팅을 하는데, 왜 머신러닝에 통계학이 필수적인지 잘 이해가 안 된다는 질문과, 머신러닝은 알아서 변수를 다 찾아주는 거라고 들었는데, 도대체 무슨 변수를 어떻게 찾아서 최적화를 한다는 건지 잘 이해를 못하겠다고 하더라. 그 중 한 명은 통계학을 꽤나 쓰는 학문으로 석사 유학을 다녀오신 분이고, 다른 한 분은 국내 매우 유명한 DMP + DSP  (Data Management Platform, Demand Side Platform, 온라인 유저 데이터를 수집해서 수익모델로 전환시키는 플랫폼, 머신러닝을 많이 써야하는 사업 영역으로 알려져 있다) 회사에서 잔뼈가 굵은 개발자 분이었다. (후에 다른 DMP 를 만들어야하는 회사에 CTO로 이직을 하셨다.)

솔직히 돈줄을 쥐고 있는 투자자와의 미팅이 아니라 일반적인 세일즈 미팅이었으면 불편한 기색을 숨기기 힘들만큼 충격적인 질문들이었다. 어떻게 저정도 공부하신 분이나, DMP + DSP 만드는데 그만큼 발을 들여놓으신 분이 이정도로 머신러닝에 대해서 까막눈일 수가 있을까?

필자가 블로그에 장기간 반복해서 쓰고 있는대로, 머신러닝은 응용통계학의 한 영역이고, 데이터의 Non-linear 패턴을 잡아내기 위해서 통계 테크닉들을 적극적으로 활용하는 방법이다. 당연히 통계학으로 모델링할 때 쓰는 모든 기술적인 지식을 총망라하고 있어야 제대로 머신러닝을 활용할 수 있다. 알아서 변수를 찾아준다는건 아마도 Un-supervised learning을 이야기하거나, 알파고-제로에서 봤던 Reinforcement learning을 하겠다는 뜻일텐데, 사업 모델 자체가 DMP에서 출발하니 당연히 있는 데이터를 활용하는 이야기를 해야지, 수식을 제대로 확정 못해서 시뮬레이션으로 데이터 생성하는 Reinforcement learning과는 연결되는 구석이 없고, Un-supervised learning은 결과값인 0/1을 모르는 상태에서 패턴에 따라 분류를 하는 작업이지, 써야할지 말아야할지 잘 모르는 변수를 알아서 척척척 찾아내는 작업은 아니다.

사업 영역에 머신러닝만 들어가면 스타트업 가치에 0을 더 붙이는 시절이니, 너도나도 머신러닝 몇 줄씩 갖다붙이는 이야기에 많이 호도되신 것 같아서 미팅내내 답답한 점이 많았다.

 

통계학을 제대로 모르는 학자(?)들

머신러닝 쓴다는 회사들 중 많은 수가 밑바탕이 되는 통계학에 대한 이해도가 떨어지는 걸 자주 보고 있고, 더 솔직하게는 아카데믹으로 가도 제대로 통계학을 모르는 사람들이 어설프게 활용하는 경우가 많다.

경제학 박사들 사이에 도는 전설적인 소문 중 하나가 있는데, 어느 연구원 분이 회귀를 하나 돌렸는데 평소와는 굉장히 다른 결과가 나와서 (보통 “Unconventional”이라고 한다) 연구소 전체를 대상으로 프리젠테이션을 했단다. 약간 상기된 분위기의 발표 도중 앞자리에서 코드 결과값을 보던 분이 “여기 Degree of freedom이 음수네요?”라고 반문하는 순간, 모두에게 비웃음을 당했다는, 정말 도시의 전설같은 이야기가 있다. (출신학교와 전공, 박사 학위까지 거친 학교, 당시 연구소 이름, 해고되고 이직한 회사까지 많은 개인 정보를 알고 있지만 그 분의 신상을 위해서, 괜한 법적인 분쟁에 휘말리고 싶지 않아서 모든 개인정보는 비공개로 한다.)

참고로 자유도 (Degree of freedom)가 음수는 커녕, 양수 값이어도 그 값이 너무 작으면 그 회귀의 분산이 너무 커서 신뢰구간이 넓게 나온다는 이유로 데이터를 더 모아오기 전에는 선뜻 발표를 안 하는게 정석이다. 음수라는 이야기는 모델이 선형 종속 케이스여서 상관계수가 다양한 종류로 나올 수 있다. 그런데 나름대로 박사학위 공부를 열심히 하신 분이 자기네 연구소 전체를 대상으로 하는 발표에서 기초도 모르는 어이없는 내용을 놓치는 이야기가 돌아다니는 것은, 그만큼 통계학 교육이 제대로 안 된 채로 시장에 나와있는 연구 인력이 많다는 반증이기도 할 것이다.

경제학 밖으로 나가도 사정은 크게 다르지 않다. 수업에 찾아오는 공학, 의학 쪽 박사 학위생들이 자기네 지도 교수가 뭔가 해보라고 했는데 도대체 뭘 어떻게 해야될지 필요한 통계학을 전혀 감을 못 잡고 있고, 머신러닝 수업하다가 짧게 포인트로 통계학 아이디어들 몇 개를 던져주면 지도교수는 뭘 하는지 그걸 제대로 확인도 안 하고 그대로 쓰고 있더라. 뭐, 박사 학위와 교수 직위를 얻는데 통계학이 핵심이 아니었고, 본인의 세부 전공에서 강점을 가진 사람들이라고 생각은 하지만, 저렇게 통계학을 모르는데, 논문에 쓴 통계는 다 틀렸는데 왜 저렇게 버젓이 publish가 되는지 잘 이해가 안 될 때도 많다.

물론 그 정도로 충격적인 연구는 매우 좋은 저널로 올라가면 제대로 솎아낼 수 있을 것이라고 기대하지만, 어쩌다보면 좀 황당한 연구 결과가 버젓이 찌라시신문에 오르내리는 경우를 본다. 논문을 뒤져보고는 역시… 라는 생각이 드는 경우가 꽤나 있는데, 링크의 어느 블로그 글에 나오는 연구들 하나 골라볼까 한다.

 

황당한 연구들 based on 통계학

 

가끔 포털에 뜬 신문 기사들 중에 영국의 잘 모르는 대학에서 어떤 연구를 했는데 뭔가 예상치 못한 결과가 나왔다는 경우가 있다. (뭐, 그들도 연구비 몇 푼 더 받을려고 찍어내는 논문일텐데 너무 공격하기 싫긴 하지만…. 학계를 떠나도 연구 결과물이 눈에 거슬리는 것은 변하지 않는다…)

사회학 계열로 박사 학위를 하시는 분들 (정확하게는 수학, 통계학 대신 논리로만 쌓아올리는 연구를 하시는 분들)에게 필자와 유사한 전공의 사람들이 좀 심한 “무시”를 하는 경우가 있는데, 위와 같은 연구(?)들이 그런 편견을 더욱 굳건하게 해주는 사례 중 하나라고 할 수 있겠다. 좀 미안한 말이지만 머신러닝 할 줄 안다고 코드만 베껴쓰는 개발자들도 똑같은 “잘못” (Note: 원래부터 모르고 있으니 “실수”가 아님)을 저지르고 있기 때문에 이번 기회에 왜 저런 연구들을 필자같은 사람들이 “Garbage”라고 부르는지, 이거랑 머신러닝 잘 하려면 왜 통계학 이론 훈련이 잘 되어있어야한다는 말이 같은 맥락에 있는지 한번 정리해보자

위 논문의 최종 결론은 “똑똑한 사람”들이 “술을 잘 마신다”이다.

당장 두 가지 의문이 든다. “똑똑한 사람”들은 어떤 사람들을 말하는 걸까? IQ가 높은 사람들? 대입 시험 점수가 높은 사람들? 성공의 척도로 볼 수 있는 수 많은 변수 중 하나인 연봉이 높은 사람들? 셋 모두를 다 쓰는 것과 셋 중 하나 혹은 두 개만 “똑똑한”에 대응되는 값으로 쓰는 것은 회귀분석에서 어떤 차이가 있을까?

두번째로, “술을 잘 마신다”는 도대체 무슨 근거로 정의되는 걸까? 마신 술의 전체 무게가 큰 걸까? 그럼 도수가 높은 술과 도수가 낮은 술의 차이는? 이걸 보정하려고 순수 알코올 부분만 놓고 다시 계산했을까? 그것보다 “잘 마신다”는 말이 많이 마시는게 아니라, 자주 마시는 걸 말하지는 않을까? 7일 동안 맥주 한 잔씩을 마신 사람과 금요일 저녁에만 맥주 7잔을 마신 사람의 차이는?

좀 더 깊이 들어가보자. 술도 다양한 종류가 있다. 저렴한 맥주도 있고, 비싼 맥주도 있고, 와인, 진, 보드카 등등 세상에는 정말 수 많은 종류의 술이 있다. “똑똑한” 사람의 기준이 혹시 “연봉이 높은”이었다면, 돈이 많은 사람들은 상대적으로 비싼 술을 마시고, 지갑이 얇은 사람들은 저렴한 술을 마셨을 것이다. 첫 직장이 접대 위주로 돌아가다보니 장기간 술고래로 살았던 경험(ㅡㅡ;;;)에 비춰보면, 비싼 술일 수록 뒤 끝이 적다. 혹시 똑똑해서 연봉이 높아, 비싼 술을 마시고, 숙취가 없다보니 술을 더 자주 마시는 것 때문에 “똑똑한 사람들이 술을 잘 마신다”는 결론이 나온 것은 아닐까?

 

모델링을 잘 한다는 건?

참고로, 영국에서 저렴한 맥주들 (그 회사들 브랜드 가치를 위해서 이름은 생략한다)의 별명은 “Wife beater”다. 경제 사정이 어려운 일용직 노동자들이 하루 일과를 끝내고 저렴한 맥주를 사먹고 집에 들어가서는 술주정을 많이 부린다는 뜻에서 붙은 별명이라고 들었는데, IQ와 연봉이 높은 상관관계를 갖고 있다고 치면, IQ가 높은 사람들은 상대적으로 Wife beater들을 적게 마시고, IQ가 낮은 사람들은 Wife beater들을 많이 마시지 않을까?

Psychology Today에서 언급하는 “다중 회귀 분석”에 들어간 변수들이 위에 필자가 언급한 의문점들을 싹 정리해줄 수 있을까?

직접적인 인과 관계가 없는데도 불구하고 회귀분석 모델에 그 변수를 넣는 경우는 그 변수 때문에 종속변수 (Y값)가 영향을 받는 부분을 제거하고 싶기 때문이다. 그런 면에서 보면 위에 필자가 던진 의문들 중 많은 부분이 수입, 교육 수준, 사회 계층 같은 변수를 모델에 입력함으로써 제어되었다고 생각해볼 수 있다. 저 논문의 이 부분에는 정말 크게 박수를 치고 싶다. (제발 머신러닝으로 뭔가 하겠다던 분들께서 좀 보고 배우셨으면 좋겠다 ㅎㅎ)

문제는 종속변수 (Y값)이다. 술의 가격에 따라 더 쉽게 마실 수 있는 술이 있고, 연관해서 숙취가 적은 경우도 많다. 그렇다면 Y값을 어떤 값을 써야 술을 “잘” 마신다는 정의를 내릴 수 있을까? 저 논문을 직접 찾아보면 알겠지만, 얼마나 자주 마시는지로 모델을 돌려놨다. 얼마나 자주 마시는지는 몸의 건강상태나 알코올 성분 해독 능력에도 영향을 받지만, 동시에 얼마나 숙취가 적은 술인지, 술 맛이 얼마나 좋은지에도 크게 영향을 받는다. 이런 요소들이 수입, 교육 수준 등으로 제어가 된다면 큰 상관이 없겠지만, 그 논문에서도 고려했다는 언급이 없고, 필자 스스로도 확신이 없다.

아마 횟수 대신 알코올의 총량으로 다시 모델을 돌려보면 결론이 다를지도 모른다. 필자의 짧지 않은 런던 생활, 특히 돈 아낀다고 가난한 동네에 살았던 기억을 떠올리면, 일용직 노동자 분들은 돈만 있으면 Wife beater에 쩔어있다. 단지 돈이 없어서 “못” 마시고 있었다는 표현이 맞을 것 같은데, 보통 저런 리서치가 나오고 나면 얼마 지나지 않아서 반박 논문이 나오니까 한번 기다려보자.

어쨌건 돈이 없어서 “못” 마시고 있는 사람들의 존재를 감안할 때, “똑똑하면 술을 잘 마신다”는 결론을 내리는 건 좀 위험한 결론이 아닐까 싶다.

 

나가며

Low noise 데이터를 다룰 때를 제외하면, 거의 대부분의 경우에 통계학적 지식 없이 머신러닝을 제대로 활용할 수 없다. (이미지 인식, 음성 인식이 대표적인 Low noise 케이스다.) 반복적으로 이야기하는대로, 기존의 통계학이 회귀분석으로 Linear pattern을 찾는 기술이고, 머신러닝은 거의 같은 수학적 기반에서 Non-linear pattern을 찾아낼 수 있도록 통계학 모델을 응용한 것에 불과하다. 저 위의 술 섭취량에 대한 인과 관계 분석이 변수를 어떻게 쓰고 모델을 어떻게 짜야 “어쩌면…?”이라는 의구심들을 배제할 수 있는 결론을 만들어 낼 수 있고, 때로는 그런 모델링 기술만으로는 한계가 있어서 새로운 데이터를 더 구해야하는 경우도 있다. 머신러닝의 문제 해결 작업도 똑같은 논리로 진행된다. 당장 위의 문제들을 같은 데이터로 단순히 Neural network를 쓰면 필자의 의구심들에 적절한 반박을 할 수 있을까? IQ와 술을 얼마나 자주 마시는지에 대한 관계가 직선이 아니라 곡선이라면 Linear regression을 하는 것보다 Neural network를 쓰는게 더 나을 수도 있겠지만, 일단 데이터의 특성상 곡선이 오목함수 or 볼록함수 정도로 단순한 형태로 나오지 다차 방정식처럼 복잡하게는 안 나올 것이다. 오히려 어떤 데이터를 쓰고, 변수를 어떻게 바꿔서 (Feature engineering) 집어넣어야 필자같이 까탈스러운 사람들이 Robustness에 대한 질문을 던질 때 반박할 수 있는 모델, 유사한 다른 상황에서도 비슷한 결과를 기대할 수 있는 모델이 될 것이다.

몇 달 전에 개발자 그룹과 모델링에 대해서 잠깐 이야기를 한 적이 있었다. 자기네 회사에서 제일 똑똑한 인재라며, 미팅을 주선한 고위직 관계자 분은 그 “똑똑한” 개발자가 필자의 모델링 스킬을 훔쳐배웠으면 하는 눈치던데, 매번 하는 이야기지만, 모델링 스킬을 학부 수준에 그것도 개발자가 갖고 있기란 거의 불가능에 가까운 일이다. 박사 졸업하고 모델링 능력이 있을 것 같아 보이는 Job market paper를 들고 교수 자리를 꿰찬 사람들도 위에 봤듯이 멍청한 논문들을 찍어내고 있는 판국이다. 그런데 학부 출신 개발자에게 필자의 모델링 스킬을 “배워”라는 식으로 말을 하는게 딱해보이더라. 결국에는 “무슨 말 하시는지 잘 모르겠구요, 그냥 자주쓰는 라이브러리나 가르쳐주세요. 그 라이브러리 몇 번 써보는게 더 빠를 것 같아요.” 라던 개발자. 평생 라이브러리 써 봐라. 뭔 말인지 알 수 있나.

정작 더 잘 준비되어 있는 수학과 통계학과 학부 출신들, 공대 박사생들은 “앞이 깜깜하다”, “이런 걸 언제 다 공부하나”는 이야길 하는데, 학부 출신 개발자들은 프로젝트 하나만 같이 뛰면 쉽게 따라갈 수 있는 것처럼 꿈에 부풀어있는 걸 보고 뭐라고 해줘야할까? 수식만 슬쩍보고 나면 할 수 있을 것 같다고 메일보내는 경영학과 출신들보다는 낫다고 해 줄까?

학부 시절 교수님들한테 답장 받기 참 힘들었는데, 요샌 이해가 된다. 깝깝한 소리하는 메일에 답장하는 것도 큰 고역이다.

X