왜 코딩하는 분들은 각 데이터마다 적합한 모델이 있다는걸 이해를 못하는걸까요?

Policy Korea

COM501 (Scientific Programming) 수업 3강이 끝나고 나온 질문이다.

왜 코딩하는 분들은 각 데이터마다 적합한 모델이 있다는걸 이해를 못하는걸까요?

참고로 Scientific Programming 수업은 개발자만 코딩하는게 아니라, NASA에서 화성 탐사선 쏘아올리는 과학자들도 코딩한다. 개발자들의 코딩은 IT시스템을 위한 코딩이고, NASA 과학자들의 코딩은 수학, 통계학 등의 자연과학 지식에 기반한 복잡한 계산일 뿐이다. 우리학교의 코딩 수업은 개발자를 만드는 수업이 아니라, “과학적”인 지식을 익히는 수업이기 때문에 수업 이름을 “Scientific” Programming이라고 붙였다고 미리 선언했었다.

굳이 따지자면 개발자들과 과학자들이 공통으로 알아야 되겠다 싶은 코딩은 Issues in Computer Programming이라는 이름의 0학점짜리 예비 수업으로, 우리회사 CTO분이 진행하신 바가 있다. 우리가 학원, 특히 사기치는 강남 IT학원도 아니고, 보통 정상적인 학위 과정을 가면 이정도 지식은 학점 배정하는 수업으로 안 넣는다. (다만 우리 CTO님이 욕심이 많으셔서 0학점 수업이라고 생각하기에는 너무 많은 내용을 커버해놓으셨다ㅋㅋㅋ)

아뭏튼, 컴퓨터 공학과 출신의 개발자인 학생이 “코딩하는 분”이라고 표현한 건 아마 자기와 비슷한 “개발자”들, 특히 “딥러닝이 만능인 줄 아는 개발자”들 일 것이라고 가정하고 아래의 답변을 드렸다.


(SIAI – Scientific Programming)

교내 게시판에 공유한 답변:

(멍청해서 모르는거다 ㅋㅋ) 식견이 부족해서 그런거라고 생각이 된다.

Deterministic modeling을 하는 분들은 데이터가 오차가 있는 경우에 활용하겠다는 생각을 하기보다, 버리겠다는 생각을 하거나, 혹은 실험을 잘못했다고 생각하는게 일반적이다. 개발자라면 2개의 Data table을 Join 함수로 결합할 때, 오차(Variance + Error)가 생겨서 Mean Squared Error (MSE)를 따져야겠다고 생각할 리 없고, 명령어 순서를 바꿔서, DB구성 방식을 바꿔서, DB용 프로그램을 바꿔서 Join 속도를 높이는데 초점을 맞추고 있고, 오차가 나오면 Query를 잘못 쳤다고 생각할 것이다.

자연과학 실험을 하는 분들도 바깥에서 소음이 생겨서, 실험실에 외부의 빛이 들어와서 문제가 생기면, 그렇게 오염된 데이터를 버리고 새롭게 실험해야 한다고 생각한다. 그런 외부 조건을 제거하는 훈련을 받지 않았고, 받았다고 해도 완벽하게 제거하기 힘든 상태라 Causality에 대한 공격을 피할 자신이 없고, 피할 수 있다고 해도 스스로 완벽한 실험이었다고 생각하지 않기 때문일 것이다.

반대로, Mean Squared Error (MSE)로 요약할 수 있는 오차가 항상 존재하고, 그 오차를 최소화하기 위해 수학 모델링 관점의 노력, 데이터 적합한 전처리 지식(ex. IV, 2SLS, FGLS…)을 배워야하는 노력이 당연한 리그인 Stochastic modeling을 하는 분야에 있는 사람들에게 각 데이터마다 적합한 모델이 있다는 것은 지극히 당연한 이야기다. 잘못된 처리, 부적절한 모델을 적용하면 결론이 산으로 가는 일이 허다하기 때문이다. (공개된 SIAI 기출문제들 참조)

단적으로, COM501 (Scientific Programming)에서 배운 Computational efficiency 라는 용어는 Computational cost와 MSE의 결합으로 표현되는데 (위의 강의노트 참조), Stochastic modeling을 기반으로 Computational Science라는 학문을 공부하는 분들에게 “계산 효율성”이라는 단어는 항상 비용(cost)과 오차(MSE)의 상충관계로 해석되는 반면, Deterministic modeling에서 멈춰도 상관없는 학문을 하는 분들에게는 MSE가 머리 속에 아예 없기 때문에, 오직 Computational cost만 있고, 그마저도 비용 감당할 자원이 있으면 뭐 하러 신경쓰나는 생각을 하게 된다.

같은 비용을 써도 어떤 모델이 어떤 데이터에서 더 MSE가 줄어드는지가 제각각 다르고, 무조건 딥러닝의 MSE가 최소가 아닌데, 심지어 딥러닝은 비용이 제일 비싼 모델 중 하나다. 그러니 딥러닝이 정말로 MSE를 획기적으로 줄여줄 수 있는 몇몇 데이터 셋을 제외하면 Computational efficiency라는 관점에서는 최악의 선택인데, 특정 데이터 셋 (이미지, 언어 등)에서만 비싼 계산 비용을 지불하면 MSE를 최소화 할 수 있다는 이유로, 모든 데이터에서 MSE가 최소일 것이라는 착각을 하는 것이다. 거기다 평소에는 MSE를 고려조차 하지 않는 Deterministic modeling만 하고 있으니 시야가 더 좁을 수 밖에.

챗봇 만들려고 자연어 처리를 고민하는 Computer Scientist 분들께 이상한 Psycho path의 대화 내용은 필요없는 데이터, 제거해야 하는 데이터에 불과하지만, 다양한 인간 군상의 심리 분석을 통해 한 사람 한 사람의 행동 패턴을, 특히 이상 행동 패턴을 짐작해야 하는 심리학자들에게는 모든 인간의 다양한 반응 데이터 전체가 필수적인 데이터가 된다. 즉, Computer Scientist들은 Deterministic modeling을 통해 일반 반응을 보여주는 챗봇을 만들면 되는 반면, 심리학자들은 Stochastic modeling을 통해 가능한 모든 경우의 수를 따져보는 모델을 만들어야 한다.

Stochastic modeling을 하는 사람들 관점에서 보면 “딥러닝 마니악”들은 식견이 부족한, 그냥 코드 카피하는 것 밖에 모르는 바보들로 보일 수 밖에. 아주 특이한 경우가 아니라면 Stochastic modeling이 더 큰 집합이니까. 아마 자연어 처리, 음성 인식, 이미지 인식 등등의, random sample과 population간 차이에서 발생하는 error의 크기에 대한 두려움이 없는 리그에서만 쓰이는 몇몇 계산법들의 정확도가 더 높다는 이유로, 모든 데이터 들에서 무조건 그런 계산법을 써도 된다는 어이없는 결론을 경계해야하는 이유에 대한 설명이 되리라 생각한다.


(SIAI – Scientific Programming)

나처럼 Stochastic modeling이 지극히 당연한 Economics, Finance 출신으로 “계산과학 (Computational Science)”을 뒤늦게 공부한 사람들 입장에서, 좀 미안한 말이지만 Deterministic modeling은 “공부 못 하는 애들”이 중간에 포기했을 때 타협하는 지점에 불과하다. Econ이나 Finance에서 100% Matching을 만들어내는 Data Fitting은 학부 저학년들 대상 샘플 컨텐츠에 불과하기 때문이다. 하물며 계량경제학보다 더 컴퓨터를 써서 Fitting을 고민해야하는 계산과학 분야로 오면 Deterministic은 더더욱 “Simple exercise” 수준 밖에 안 된다.

숙제를 내 줄 때도 좀 쉽게 내줄려면 Variance를 빼고, Random 때문에 발생하는 오차를 제거해서, 쉽게 딱딱 떨어지는 식으로 던져준다. 우리 리그에 있는 학생들은 (제대로 배우는 학생들 그룹에 한정하면) 그런 문제가 나왔을 때 이번주 숙제는 널럴했다고 생각한다.

고교 수학 정석 책으로 치면 난 챕터별 연습문제 풀고 있는데, 유제 푼 친구가, 아니 유제 답안지 베껴 쓴 친구가 자기가 수학 천재라고 주장하는 꼴을 보고 있는 기분이라고 생각하면 된다.

Deterministic modeling을 하는 분들에게 Random이라는 뜻은, 1백만개의 Log값이 기록된 DB에서 1,000개를 뽑아내는 작업이라, 5천만 인구 중에 1,000명을 뽑아 여론 조사를 해서 대통령 후보를 예측하는 작업과의 차이를 이해하질 못한다. DB에서 뽑아낸 Log값들이나 여론조사 데이터나 전체를 대변한다는 측면에서는 동일하기 때문이다. 그러나, 통계학이라는 지식을 제대로 공부한 사람들은 여론조사는 최소한 +- 2.5%의 신뢰구간 이라는 “오차(Error)”가 있을 수 있다는 것을 배웠고, 심지어 “Random sampling”이 잘못 되었을 경우에는 아예 여론조사 자체를 신뢰할 수 없다는 것도 안다. (이건 심지어 고교 수준 아닌가?)

실험실이나 다름없는 Deterministic 데이터를 다루는 사람들이 “Random”이라는 주제를 Stochastic modeler들처럼 쓸 일이 없으니, A1~A5 같은 Gauss-Markov 가정을 이해해서 여러 변수가 들어간 Regression이라는 계산법을 배우고, 그 계산법의 문제가 있을 때 어떻게 대응해야하는지, 그래서 Instrumental variable이나 2SLS 같은 계산법을 언제 써야하는지 등등을 배워야 할 리가 없다. 그 친구들은 모든 데이터 컨트롤한 상태에서 1-variable regression 같은 고교수준 통계학 지식으로 가능한 “실험”을 하고 있지, 학부 고학년 이상의 고급 통계학을 이용한 “통계적 추론”을 하고 있지 않기 때문이다.

그들 대부분들이 통계학을 활용하는 학문들 (ex. 머신러닝, 딥러닝, 강화학습 등등의 계산과학 포함)을 매우 기초적인 수준에서 밖에 못 쓰고 있는 이유도 같은 이유다.

지식의 깊이가 없기 때문이다.

그냥, 모르기 때문이다.

그러니 집 값 예측하는 모델 만들려면 집 값 관련 데이터 다 모은 다음 딥러닝 모델이 우겨넣으면 된다, 주가 예측할려면 주가 관련된 데이터 다 모아서 딥러닝 모델에 우겨넣으면 된다, 이것저것 다 돌려보면 필요한 변수가 뭔지 찾아낼 수 있다, 모르겠으면 실험해보면 된다 같은 코웃음이 나오는 주장들을 하는 것이다. 랜덤 오차가 계속 생겨나서 30, 40% Fitting만 되어도 대박인 리그에, Psychopath의 대화 같은 Outlier 제거하고 일단 때려맞춰보던 방식으로 접근하니 제대로 된 결과가 나올리도 없고, 그냥 과거 데이터에 억지 Fitting 맞추는 “자위”만 하는 꼴이 되는 것이다. “실험”할 필요조차 없는, 이미 수십년간 학문적 성과가 있고, 쉽게 번역해서 학부 교육과정으로 넣어놓은 내용마저 무시하고 무조건 기계에 넣으면 100%를 맞춰줄 것이다, “실험”을 해봐야 안다 같은 한심한 지적 수준에 뭐라고 해야하나? 이런 내용들이 왜 틀렸는지 아주 구체적으로 조목조목 지적한 수 많은 블로그 글들을 이해 못하는 것도 역시 “모르기 때문“인 것은 매한가지고.

아마 위의 장문의 설명도 “모르기 때문“에 이해 못하겠지.

그간 무시하는 표현들이 누군가에게는 심하게 언짢았을지 모르겠지만, 내 입장에서는 겨우 사칙연산 할 줄 아는 초딩이 미적분 할 줄 아는 고교생 옆에 놔두고 자기가 수학 천재라고 사람들 앞에서 열심히 떠들고 다니는데, 사칙연산을 겨우겨우 이해하는 일반인들이 미적분이 뭔지를 모르니까 그냥 그 초딩을 천재라고 부르고 있어서 어이가 없고, 그 초딩급 인간들 때문에 내 전문성(?)이 오해 받는 현실이 어이가 없었기 때문이다. (목이 터져라 or 손이 부서져라 설명해줘도 여전히 “모르기 때문”에 이해 못하니 더 어이가 없었고.)

위의 Determinstic / Stochastic의 논지로 바꿔쓰면, Deterministic이라는 기초 수준 지식 밖에 없는 인간들이 (심지어 그 지식도 없이 베껴쓰는 인간들이) Stochastic 리그에 가면 초보 수준이라 겸손 떨고 사는 사람의 역린을 건드렸다고 생각해주시면 되겠다.


SIAI 교육은?

우리 학교 교육은 Stochastic modeling 지식을 배우면서 (당연하겠지만) Deterministic 지식을 함께 배우는 방식으로 운영된다. 어차피 Stochastic을 가르치기 위해 일단은 Deterministic을 가르쳐야 하고, 그 이해를 확장할 수 있는 소수의 인재들만 Stochastic으로 사고의 영역을 확장해서 보다 도전적인 주제를 다룰 수 있기 때문이다.

물론, 졸업생의 상위 x% 정도만 Stochastic을 다룰 수 있는 인재가 되는 훈련을 무사히 받고 졸업할 것이고, 거의 대부분은 Deterministic 마저도 겨우겨우 이해하고 졸업하는 수준이 되는게 현실적인 예측이라는 것도 알고 있다. 똑똑하다는 소리를 지겹도록 듣고 살아온 나 역시 그 괴로운 터널을 뚫는데 오랜 시간을 쏟아 부어야하는 지극히 평범한 인재임을 학위 중에 깨달았었고, 지금도 Stochastic modeling을 하는 지구 최상위 0.0001% 인재들과는 넘사벽의 격차가 있음을 느끼기 때문이다.

그럼에도 불구하고, 학생들에게 MBA in AI/BigData (Neither MSc in Data Science nor MSc in Artificial Intelligence) 졸업하면 한국 상위 1%의 인재가 될 거라고 그랬었는데, 요즘 교육을 하면서 숫자를 좀 수정해야할 필요성을 느낀다.

한국 상위 0.1% ~ 0.01% 정도의 인재로 졸업하게 될 것이다. (MSc들은 0.001% ~ 0.0001% 정도 될 듯) 말을 바꾸면, 시장에서 심하게 오버 스펙으로 졸업하게 될 확률이 높다. 아마 우리학교 하위권 인재가 국내 기준 상위 1%가 되겠지. (졸업 못한 학생들은 모르겠다…)

이번 2nd term에 이렇게 Scientific programming 수업에서 각 Computational method별 적절한 데이터 셋이 뭔지에 대한 훈련을 받고 나면, Computational efficiency라는 개념이 뿌리깊게 머리 속에 박히겠지? (제발 좀 박혔으면 좋겠다.) 다음학기부터 Machine Learning, Deep Learning 같은 수업에서 어떤 계산법이 어떤 데이터에 적합한 데이터라는 걸 좀 더 깊이 있게 이해하고, 무조건 딥러닝만 좋아하는 바보들의 어리석음을 논리적으로 따박따박 지적할 수 있는 능력자로 성장할 것이라고 믿는다.

그럼 우리나라에서 회사 생활하기 진짜 힘들어질텐데 ㅋㅋㅋ 걱정이다.

자연어 처리, 음성 처리 같은 Deterministic 데이터들, 컴퓨터 공학과 애들이나 다룰만한 특화된 데이터 다루는데 최적 계산법들도 학위 후반부에 쉬엄쉬엄 갈 때쯤해서 가르쳐 줄 테니까 (그게 제일 쉬운거라는걸 무사히 깨닫고 졸업하겠지? ㅋㅋ), 바보 보스 만나서 딥러닝 노래 부르면 맞춰주면서 사는 방법은 너네가 알아서 익히자 ㅋㅋ 난 바보들 입 맛 맞춰 주는건 사기 치는거 같아서 도저히 못 하겠더라고ㅠㅠ


 

오늘도 잠을 잊고 늦은 밤 시간을 아껴 이렇게 열심히 설명을 해 놨지만, 역시 이해하는 사람은 거의 없을 것이다. 내가 배우던 시절보다 수십배는 더 난이도를 낮추고 (당장 수학 안 쓰고 Variance = 0 으로 가르치잖아?) 예제를 들어가며 설명했지만, 우리 학생들도 제대로 이해 못했는지 학교 게시판에 정리해라고 하니 다들 머뭇머뭇 거리더라. 라이브 강의를 들은 학생들이 그정도면 교육 안 받고 이 글을 그냥 읽기만 한 사람들, 특히 아무것도 모르지만 다 안다고 착각하는 개발자들은 더 심각한 상태겠지ㅋ 그저 성격 나쁜 사람이 이상하게 꼬여서 개발자들 욕한다고 비난만 하겠지. 아니, 봐 주기만해도 고마워해야 할 판국일 듯.

Backlog에 쌓아놓은 글 열 대여섯 편만 내년 초까지 내보내고, AI(?) 교육 관련해서는 SIAI의 퀄리티를 홍보하는 영어 컨텐츠만 학교 홈페이지 블로그에 꾸준히 쓰는 걸로 운영 방침을 바꿀까 한다. 어차피 온라인 교육 공급하는 스위스 국제학교인데, 뭐하러 한국 시장에 컨텐츠 공급하냐 에효. 한국은 그저 반면교사 컨텐츠 만들어내는 시장으로나 써야지. 이 나라는 안 되는 나라라는거에 이제 “샘플 많이 봐서 수렴”했다.

Similar Posts