작정하고 쓰는 머신러닝 강의 비판 (1)

사회 초년병 시절, 살고 있던 전세집에서 재계약이 임박한 무렵 전세금을 올려달라고해서 한참을 고민했던 적이 있다. 결국은 추가금을 내기로 결정하고 주인에게 연락을 했는데, 그 다음날 부동산 중개인이 전화 오더니 필자가 집주인과 대화하기 몇 분전에 자기가 신규 세입자와 계약을 했으니 필자더러 나가라고 윽박지르더라. 그리고 다음날 집에 내용증명이 도착했는데, 고민끝에 지인을 통해서 전직 판사이신 로스쿨 교수님께 조언을 구했다. 집을 사고 파는 계약이면 물권 계약이니 시간의 선후가 중요하지만, 전세같은 채권 계약은 시간의 선후가 중요한게 아니라, 다중 계약이 동시에 유효하고, 계약을 이행 못하는 경우에 물권 주인이 배상하는 의무를 지게된다는 결론을 듣고, 참 마음이 홀가분해지더라.

물론 남 말은 절대로 신뢰 안 하는 필자는 그 몇 달의 법적인 분쟁기간 동안 민법 채권편을 공부하고, 관련된 판례를 몇 십개나 읽어봤었다. 시간이 흐르면서 다급해진 부동산 중개인이 집주인에게 대리인 계약을 했던걸 소급하는 증거자료를 만들어 달라고 압박을 하고, 집주인은 아무것도 모르고 거기에 맞춰주면서 부동산 중개인에게 그저 알아서 잘 처리해달라는 이야기만 하는 것도 봤다. 나중에는 변호사를 구해서 필자에게 여러가지 말도 안 되는 이야기로 협박을 하더라. 관련 법과 판례로 무장한 필자에게 씨알도 안 먹히는 소리가 되었지만.

반년간의 지리한 분쟁 중에 필자가 집주인에게 여러번 이야기를 해 줬다. 부동산 중개인이 집주인 어르신을 속이고 있다고. 결국 이대로 흘러가면 집주인 어르신께서 신규 계약자였던 분께 계약금만큼 손해배상액을 지불하고, 부동산 중개인은 소리소문없이 도망갈꺼라고. 끝까지 자기는 아무것도 모르니까 부동산 중개인과 알아서 이야기해라고 하던 그 집주인 어르신, 시간이 한참 흐른 후에 필자에게 연락와서 그 때 모른척해서 너무 미안했다, 손해배상 소송이 들어왔는데 어떻게 하는게 좋겠냐고 묻더라.

개인적으로 별로 밝히고 싶지 않은 과거 법적 분쟁 사건 중 하나인데, 그 때 부동산 중개인과 함께 왔던 변호사의 말도 안 되는 억지 주장들이 문득 떠올라서, 그리고 요새 데이터 사이언스 강의하면서 느끼는 감정과 겹치는 부분이 너무 많아서 불편한 과거의 한 장면을 굳이 글로 옮겨봤다.

그 때 상대측 변호사는 이 건을 이기겠다는 생각보다 사건을 수임해서 돈을 벌겠다는 생각이 더 강했을 것이라고 생각한다. 변호사라는 타이틀을 이용해서 윽박지르면 법알못인 필자가 쫄아서 꼬리를 내릴 것이라고 생각했을수도 있다. 최소한 위 사건을 공유했던 주변의 법조계 지인들은 모두 필자의 생각에 공감하더라. (물론 아무것도 몰라보이는 부동산 중개인을 돕겠다는 불인인지심이었을 가능성을 배제하지는 않는다.)

요즘 외부에 돌아다니는 데이터 사이언스 강의들을 보면, 이게 결국 통계학과 수학을 깊게 알아야한다는 사실을 숨긴 채, 몇 가지 간단한 코드만으로 쉽게 적용할 수 있는 것처럼 광고를 하고 있다. 심지어는 그렇게 한 두달 수업을 듣고나면 데이터 사이언티스트로 커리어 전환을 할 수 있다는 이야기까지도 서슴없이 한다. 강의도 돈 벌이니까 좀 홍보성이 짙은 캐치프레이즈를 쓸 수 있다는건 이해할 수 있지만, 수업 내용을 보면 너무 데이터 사이언스의 실상을 외면하는 것 같아서 당황스러울 때가 많다. 마치 전세 문제로 불편할 때 화려한 미사어구와 억지스러운 법리로 필자를 괴롭히고 있던 변호사와 부동산 공인중개사를 보는 느낌이다. (수강생 분들은 그 때 집주인….)

머신러닝 전공자도 아니고, 수학과 통계학 공부 (남들보다 쪼오끔 더) 많이 한거에다 실리콘 밸리 냄새 좀 맡아봤고, 글로벌 펌에서 Senior Data Scientist 타이틀 달고 있던거, 거기에 이것저것 줏어듣고 혼자 고생하면서 배운걸로 사업하고 있는 필자가 보기에도 그런 광고는….매우 불편하다. 머신러닝으로 밥 벌어먹고 살려고 작정하시는 전공자 분들은 오죽하실까…

 

 

1. 불편함에 끌려가시는 분들

어제 저녁에 메일이 하나 왔다.

안녕하세요.

검색하다가 들어왔습니다. 1x 년차 SQL 및 Java, .Net 개발자 입니다. 많이들 묻는 질문을 다시 드리고 싶어 연락드립니다. 국내에서 Data Scientist로 경력을 쌓을 수 있 는 방법이 있나요? 학원 이런거 말고 방법은 없나요? 많은 사이트에서 학원 선전을 하고 있지만 수료 후에 현 회사 생활이나, 이직에 도움이 되는지 잘모르겠습니다. (부정적인 글들만 잔뜩 올라와 있네요.) 답변주시면 좀 더 자세하게 상담받고 싶습니다. 수고하세요~

개발 경력이 화려하신 분이 데이터 사이언티스트로 커리어 전환을 꿈꾸는 것 같아 보이는 (전형적인) 질문이다. 개발과 데이터 사이언스가 겹치는 부분은 머리속에 있는 내용을 구현하는 방식이 코딩이라는 공통의 매개체라는 점 이외에는 완전히 다른 작업이라는 걸 여러번 글에 썼지만, 뭐 필자의 글을 모든 사람이 읽는 건 아니니까. 그리고 개발자가 자기네들 수업 하나만 들으면 바로 데이터 사이언티스트로 커리어 전환을 할 수 있는 것처럼 써놓은 광고들이 엄청나게 많으니까.

아래의 메일로 답변을 드렸다. 분명히 읽기에 불편하실 것 같기는 한데, 필자는 팩트 폭격급의 솔직한 표현을 듣는게 기분은 좀 나쁠지 몰라도 시간 낭비를 안 해도 된다는 점에서 더 효율적이라고 생각한다.

안녕하세요,

일단 잘못된 강의들이 엄청나게 많이 돌아다니는 것으로 알고 있고, 그리고 데이터 사이언스를 무슨 코딩 프로젝트처럼 생각하시는 분들이 너무 많습니다. 이거 사실 (응용)통계학입니다. 여태까지 사람들이 잘 안 썼던 데이터 마이닝 기술과 최근에 빅데이터 때문에 더 응용방법이 다양해진 통계학이요. 당연히 연구자들이 작업하는 내용인데, 돈 벌이에 치중한 몇몇 학원들이 무슨 코딩 프로젝트처럼 가벼운 강의들만 만들어놓았으니 당연히 제대로 내용 전달이 안 되고, 들은 사람들은 이거 어디다가 쓰는거냐고 되물을 수 밖에 없는 것 같습니다.

개발자로 경력있으신 거랑 데이터 사이언티스트랑 (제대로 뽑는다는 가정아래) 거의 아무런 관련이 없습니다. 통계학 처음부터 새로 공부하셔야됩니다. 제가 괜히 통계학과 수학 기반으로 강의하는게 아닙니다. 제가 수업 시간에 영어 네이티브가 영어영문학 잘하는거랑 무슨 상관있냐고 이야기하는데, 코딩 잘 하면 코드 치는건 쉽겠지만, 통계학 모르면 내용을 모르는데 코드만 읽어서 어떻게 데이터 사이언스 하겠습니까?

영어 네이티브면 영문학을 읽고 미묘한 감상은 좀 더 잘할 수 있을지 모르지만, 플롯을 어떻게 구성하고, 대화 한 두줄에 숨어있는 암시를 어떻게 해석하고, 시대적 배경을 저자가 어떤 방식으로 잡아내고 있고, 당시 역사 문헌을 뒤져보면 저자의 묘사와 얼마나 일치하고, 이 문학 작품이 동시대 다른 서유럽 작품과 같은 사조를 얼마나 따라가고 있는지 등등을 다 이해하려면 영어 네이티브라고해도 세익스피어 이후의 영문학 흐름, 서유럽의 당시 역사적 흐름, 르네상스 이후 문예 사조 등등을 모조리 꿰고 있어야 합니다. 저런거 공부하는 과정이 영어영문학 공부하는 과정이죠. 저도 박사 과정 내내 수백, 수천줄의 코드가 들어가는 작업들 엄청나게 많이 했습니다. 쓰는 도구는 코딩이었지만 제 머리속에서 손으로 구현되던 모델들은 다들 수학, 통계학 모델들이었습니다. 당연히 저는 개발은 아무것도 몰랐습니다. (지금도 아는게 거의 없구요.)

한국에 제대로 돌아가는 기업들 (네이버, 카카오 등의 IT기업과 삼성전자 같은 “상대적으로” 인력 제대로 뽑는 대기업들)에 가면 통계학 백그라운드가 탄탄한 사람들한테 이런 프로젝트 맡길겁니다. 관련 기관에서 저한테 연락오시는 분들이 다들 저더러 전공이 “통계학”이었냐고 물으시구요.

박사과정 수업 커리큘럼이나 논문들을 보시면 아시겠지만, 문과에 글로 승부하는 전공들 일부를 제외하면 수학과 통계학은 모든 학문 연구자에게 공통의 스킬셋이기도 합니다. 단적인 예로, 저는 물리학 박사 친구들이 혜성의 움직임을 시뮬레이션 해 놓은 수식보면 이해하고, 같은 시뮬레이션 할 수 있구요. 기계항공 박사하는 친구가 제가 머리 싸매고 풀고 있는 Continuous Time Asset Pricing 모델 문제를 수식으로 못 풀면 그냥 시뮬레이션으로 approximation 하는 걸로 타협하는게 어떠냐고 제가 쳐 놓은 코드를 같이 리뷰해주기도 했던 경험이 있습니다.

제가 수업을 박사 학위 있으신 분들 모여있는 연구 기관에가서 하면 다들 무슨 말인지 알아먹고 어떻게 써야겠다는 이야기가 나오는데, 개발자들 모여있는 스타트업가서 설명하면 코드 따다가 k-means 적용하는 이야기, Neural net 적용하는 이야기 밖에 안 하는거보고, 더 심한 경우에는 파라미터 수정 하나도 안 하고 자기 데이터에 그대로 코드만 넣은 다음, 결과값 안 좋다고 불평하면서 이런게 머신러닝이냐고 투덜거리는 걸 보면서, 역시 통계학 제대로 가르치는게 우선이라는 생각을 또 한번하고 있는 중입니다.

개발자 경력에 자부심을 갖고 있으신 것 같은데 좀 공격적인 언사를 해서 죄송합니다만, 개발자 경력과 데이터 사이언스는 별개라는 점을 이해해주십사하고 쓴 표현이니 너그럽게 이해해주시면 좋겠습니다.

감사합니다

 

 

2. 안 끌려가셔도 되는 분들

국가 경제 정책과 관련해서 장기간 연구를 해오신 모 국책 연구 기관의 연구원 분들께 데이터 사이언스 강의를 해 봤다. 이 분들은 대부분 경제학 박사 or 경제학을 배우는 박사 과정을 거치신 분들이다. (보통 Economist by training 이라는 표현을 쓴다.) 공대 출신으로 개발을 하시던 분이 아니라.

필자의 강의 초반부를 아우르는 회귀분석 + 머신러닝 기초 부분 강의는 일반인을 대상으로 강의할 때 수업 시간에 당황한 반응, 긴장한 반응이 자주 느껴지는 부분이다. 처음 강의할 때는 머신러닝 배우러 왔는데 왜 이런거 가르치냐는 분도 있었다. 당연하겠지만 연구원 분들은 그 부분에서 통계학과 머신러닝의 용어가 다른 점 이외에는 전혀 불편을 느끼질 않는게 보였고, 후반부의 굵직굵직한 모델을 설명하면, 평소 작업하는 내용과 얼마나 연관이 있고, 어떻게 적용해야할지 갑론을박을 벌이시는 걸 여러번 봤다.

솔직히 말하면, 강의하는 내내 속이 시원했다. 머신러닝은 개발자들이 배워서 적용하는 기술이 아니라, 대학원 수준까지 통계학을 배운 사람들이 자기 작업에 응용하면서 쓰는 도구 학문이라는 필자의 평소 철학이 맞다는 사실을 웅변적으로 보여주시는 장면이었으니까.

어차피 한달 압축 강의를 듣고 그걸로 커리어 전환을 하는건 불가능하다. 커리어 전환을 할 수 있다고 생각하는 것 자체가 데이터 사이언스를 프로그래밍 프로젝트라고 착각하고 있기 때문에 생기는 현상이고, 실체를 제대로 이해하고 나면 커리어 전환을 하기 위해서는 아예 학위를 하나 더 따는 수준으로 공부를 해야겠구나는 생각을 하게 될 것이라고 본다. 실제로 필자의 강의를 두번이나 찾아오셨던 개발자 분은 데이터 사이언스 관련 석사 프로그램을 가야겠다고 지원 준비를 하시는 경우도 봤고. 컴공 출신 학부생은 자기가 왜 통계학 안 했는지 후회한다면서 학위 더 쌓으려면 어떤 path로 가야되는지도 묻더라.

 

3. 솔직한 이야기들

회사 오너가 아무것도 모르는 사람이면 일반적으로 과거 직장 경력이나 학위, 단순히 눈에 보이는 타이틀과 눈에 보이는 결과물들을 기반으로 사람을 뽑는다. 그런데 내용을 잘 아는 사업가는 차라리 똑똑한 애들을 뽑아서 내가 가르친다는 생각으로 사람을 뽑고, 아무런 도움이 안 되는게 뻔히 보이는 수업 몇 개 들었다고 그 사람을 고용할리 없다. MOOC 강의들 듣고 데이터 사이언티스트 될 수 있냐는 Quora.com의 질문 글에 달린 답변 중에 가장 인상적인 답변은, 니가 math , stat 쪽으로 관련된 전공을 했으면 수업 한 두개만 들어도 쉽게 따라갈 수 있을테니 그걸 바탕으로 잡 서칭에 나갈 수는 있겠지만, 일반적인 소프트웨어 엔지니어 출신이거나 수학과 통계학 쪽 공부를 안 한 사람이면 MOOC수업을 많이 들어도 인터뷰 콜 받기 쉽지 않을 거다는 말이었다.

필자도 좀 쉽게 강의해보려고 여러가지 노력을 해 봤지만, 결국 데이터 사이언스를 하기 위해서는 기본적인 수학과 통계학을 잘 알아야한다는 냉정한 현실에 직면하고 있는 중이다. 강의 List에서 강조하는대로, 수학과 통계학이 교육 과정에 많이 들어가 있는 전공 출신이 아니면 수업을 알아듣고 따라오기 어렵다고 본다.

성형 수술 실패로 괴로워하는 사람들의 커뮤니티에 가면 의사들 욕을 하면서 다른 의사는 다 안 된다고 하는데 그 의사만 된다고 그래서 믿고 수술을 받았다는 글을 보는 경우가 있다. 다시 한번 팩트 폭격을 날리면, 안 된다고 솔직하게 말해주는 의사들 말은 안 믿고, 된다고 과장 광고한 의사 말을 믿은 자기 탓은 왜 안 할까? 저 위의 개발자 분 이메일에 보이듯이, 데이터 사이언스 강의 듣고 이직에 도움이 전혀 안 된다고 불평하는 글 쓰시는 분들에게도 똑같은 말을 하고 싶다. 데이터 사이언스가 코딩 프로젝트가 아니라 응용 통계학이라는 사실을 제대로 몰랐던 당신의 무지와, 석사 프로그램이 생길만큼 내공 쌓는데 긴 시간이 걸리는 내용을 한 달만에 완전히 마스터해서 이직까지 가능하다는 과장 광고에 속아 넘어간 당신의 단순한 판단을 되돌아 볼 생각은 없나?

 

나가며

이런 글 쓰고나면 필자의 강의에도 수강생이 다 떨어져나갈 것 같기는 한데, 여러 시도 끝에 얻은 결론을 솔직하게 말하는 것도 가르치는 사람이 갖춰야하는 기본 예의라고 생각한다. 오늘 Reinforcement learning 슬라이드 몇 장 업데이트하며 구글링을 좀 해보니, 최적 path 찾아가는 아주 단순한 그림만 그려서 수업한 경우도 있고, Markov Decision Process를 풀어내는 가장 유명한 방법인 Bellman equation을 이용하는 슬라이드도 있더라. (물론 후자쪽은 대부분 대학원 수업 교재였다.) 어차피 대중을 향한 강의를 하면서 Bellman equation을 풀어내는 강의를 하는 건 무리라고 생각한다. 다만, Markov Process라는게 불확실성이 섞여 있는 상태를 말하고, Dynamic updating 이라는게 모델 학습 과정에서 불확실성을 포함하는 방식의 모델링이라는거, 그래서 평소에 인간이 self-learning 하는 것과 유사한 방식의 모델링이라는 직관 만큼은 제대로 설명해야하지 않을까?

단순하게 팩맨이 최적 path를 찾아서 움직이는 모습을 보여주고, 그 코드를 그대로 따라서 치도록 만드는 수업을 하고 몇 백만원씩 받아가는 수업들을 보면서 어이가 없고, 그런 수업 듣고 난 다음에 왜 나는 데이터 사이언티스트로 취업 안 되냐고 불평하는 글들을 보니 또 황당하다. 그거 구글링하면 Python으로 구현해놓은 샘플 코드 있다. 하나도 아니고 여러개.

데이터 사이언티스트를 찾는 시장 수요는 넘쳐난다. (정작 그게 뭔지 몰라서, 모르는 사람들이 강의해서 문제지.) 그렇지만 그런 수업 하나 들은 “짝퉁” 데이터 사이언티스트를 뽑으려는 회사는 없다. 기분 나쁘다면 “불편한” 수업들 찾아가지말고, 제대로 공부할 생각부터 먼저 하시라고 권유드리고 싶다.

문득, 매주 강의가 끝나면 리뷰하는데도 몇 시간이 걸리는 자료들을 첨부하면서 “아직도 어렵다, 이해한게 맞는지 모르겠다.”고 확인하는 메일 보내주시던 그 철학자 풍 수강생 분이 떠오른다. 학위 하나 더 하는게 아니라면, 최소한 그 정도 시간과 노력과 열정을 쏟아부어야 제대로 배울 수 있지 않을까?

 

후속편: 작정하고 쓰는 머신러닝 강의 비판 (2)

후속편: 작정하고 쓰는 머신러닝 강의 수강생 비판 (feat. 꼰대)

 

You may also like...

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다