Machine Learning Term paper
글 후반부에 우리학교 Machine Learning 과목의 이번학기 Term paper를 공유해 놨는데,
저 문제를 만들 때 했던 생각들 썰풀이로 시작해보자.
신생 대학교에 대한 여러 질문에 대한 답변 드리려고 잠깐동안 단톡방을 운영한 적이 있었다.
분탕이 엄청 몰려들었었는데, 그 중 음해 세력인지 아닌지 확신은 없지만 어느 CS 전공자로 보이는 분이 한 말이 있다.
DNN이 틀렸다는걸 증명해서 보여주면 되지 않을까요?
우선, 이미 DNN이 만능 솔루션이 아니라는걸 수십번도 더 블로그를 통해서 보여줬고, 아니 몇 년간 그걸 증명하는 블로그를 운영해왔고,
내가 아니더라도 다른 수 많은 똑똑하신 분들이 DNN이라는 계산방식이 언제 더 낫고, 언제 더 나쁜 계산법이라는걸 설명해놓은 컨텐츠가 널려있다.
일반 회귀분석이 Linear modeling에만 초점을 맞추고 있는데, 데이터에 대한 특이한 가정이 있어서 그렇고, (정규분포…)
ML 하는 분들이 DNN이라고 불리는 Non-linear 모델을 위한 컴퓨터 의존형 계산을 하는 것도 데이터에 대한 독특한 가정이 있어서라는걸,
굳이 여기를 오지 않더라도 많이들 봤을 것이다.
(혹시나 못 봤다면 통계 문맹 + DNN마니악만 있는 YouTube와 개발자 커뮤니티만 돌아다닌거 아니냐고 반문하고 싶다.)
아마 단톡방의 그 CS 전공자도 이런 지식들을 일절 외면하고 살고 있기 때문에, 어쩌면 통계 문맹이라 이해를 못했기 때문에 했던 말일 것이다.
그러니 일도양단으로 “틀렸다”는 표현이 나오겠지. 언제 어떻게 쓸 때는 맞고, 아닐 때는 틀렸다가 아니라.
(Source: The Newsroom)
많은 컨텐츠가 있음에도 불구하고 외면하는 분들께,
Proof is useless unless it’s proof of something people already want to believe. And I’m afraid no one wants to believe this
라는, The Newsroom이라는 어느 미드의 인상적인 Quote 하나를 공유한다.
미국이 왜 No.1인지에 대해서 알려달라는 어느 Sorority girl (약간 좀 맹~해 보이고 별 생각없이 SNS에 사진 올려서 Like나 받으려고 하는…)느낌의 여학생에게
미국이 No.1인 부분은 천사가 실제로 존재한다고 믿는 사람들 같은 부끄러운 수치 밖에 없고,
다른 나라들이 훨씬 더 대단한 부분이 많은데 미국인들이 현실을 직시 못하고 있다는 좀 냉혹한 코멘트를 하는 중에 나온 말이다.
나 역시도 어느 시점부터 그런 분들께 굳이 Proof를 들이 미는걸 포기하고 산다.
아무리 이야기를 해 줘도 자기들이 주장하는 것과 조금이라도 비슷해 보이는 이야기를 어디선가 갖고 와서,
이래도 생각을 안 바꾸냐고 고집들을 피우는데, 그 분들도 날 고집 피운다고 생각하겠지.
영원히 평행선을 달릴 뿐이다.
주변 지인들이나 대학 선배님들 같은 분을 만나서, 내가 대학교를 만들어서 BSc, MSc, MBA 같은 프로그램을 운영한다고 밝히면,
처음에는 진짜 대학교 맞냐고 의구심을 보이다가,
오죽하면 그 고생까지하며 아예 대학을 만들었냐ㅋㅋ 너도 진짜 속이 터지는가보다
라는 반응들을 듣는다.
응? 속이 터지나?? 요즘와서 가만 생각해보면, 속이 터지는 부분은 좀 내려놓은 시점이 된 것 같다.
내가 자원봉사자도 아니고, 듣고 싶은 사람, 정말 제대로 하고 싶은 사람들을 끌고 가기도 너무 바쁜데, 굳이 왜…
나와 비슷한 생각을 가진, 연배 좀 지긋하신 교수, 연구원 등의 학자 분들을 몇 분 만난 적이 있었는데,
쟤네들은 이 나이에도 힘이 있는지 약이 올라서 저렇게 바꾸려고 하는데, 난 이제 좀 내려놨어. 어차피 안 바뀌고 안 듣잖아. 그냥 내 밥벌이나 하고 있음 나중에 자기들이 바뀌어 있더라고.
딱 이렇게 바뀐 것 같다.
그래서 그냥 평소 생각하던 내용들을 정리해서 문제를 만들었다.
학교 밖 사람들 중에 능력자들은 알아서 풀겠지.
위의 문제는 우리 SIAI의 MBA AI/BigData 과정 중 Machine Learning 수업 기말 텀 페이퍼다.
(마지막 문제는 MSc Data Science 학생들이 듣고 있는 Regression Analysis III의 Time series 관련 주제다.)
언뜻보면 Finance 문제처럼 생겼지만, Finance에 대한 기본 지식이 굳이 없어도 되는,
Machine learning에서 배운 내용을 어떻게 활용할 수 있는지를 묻는 평범한(?) 문제라고 생각한다.
강의노트들을 주르르 화면에 띄워놓고, 저 위에 길게 나열해놓은 생각들을 머리 속에서 되뇌어가며 만든 문제들이다.
너무 어렵게 만들면 이해를 못할까봐 문제들에 배경설명을 한참 읊어놨다. 이 정도면 쉽게 풀 수 있겠지? ^^
욕심나는거 많았는데 나중에 MSc AI의 Advanced Machine Learning 수업에서 좀 더 풀어내기로 했다.
외부인 들에게는, 논리 자체가 이해 안 되더라도, 국내에서 흔히보는 여러 계산법 다 돌려보고 그 중에 제일 잘 맞는거 골라서 보고해라는 수준의,
학문에 대한 모욕 수준으로까지 쉬운 문제는 아니라고만 이해해주면 내 입장에선 문제 공개의 목적을 충분히 달성한 것 같다.
마지막 수업일에 문제 전체 구조를 설명하는데만 2시간 남짓을 썼는데,
핵심은 Gaussianity가 있는 구간과 깨진 구간을 구분할 수 있는 “데이터 전처리” 작업을 통해 (단순 N/A 메워넣기 아니다ㅠㅠ)
Non-linearity가 필요한, 즉 ML 모델링이 필요한 구간을 구분해 내고, 그 구간에 Factor Analysis 기반의 여러 계산법들,
예를 들면 기초 교과서에 자주 등장하는 PCA 같은 계산법들을 어떻게 적절하게 활용해서 문제를 풀어나가는지 고민을 풀어내면 된다.
Gaussianity가 살아있는 구간에는 굳이 그런 계산비용을 지불하는 “오버”를 할 필요가 없다는 걸 배웠으니, 잘 응용만하면 수준 높은 답안을 만들어 낼 수 있을 것이다.
다음 Term에 본격적으로 Deep Artificial Neural Network (속칭 DNN) 모델의 용법을 다루기 전에,
DNN이 Factor Analysis의 Graph 모델이라는걸 강조하려고 마지막에 Artificial Neural Network의 기본을 가르쳤는데,
해당 내용을 바탕으로 NN 모델이 DGP가 어떨 때 조금이라도 더 의미가 있는지 제대로 이해해야 풀 수 있는 문제를 마지막에 넣었다.
제대로 이해하고나면 다음 Term에 Deep Learning을 배우면서 Hyperparameter tuning만 잘하면 장땡이라는 직업학교 수준의 착각을 하진 않겠지.
아마 NN 모델링을 할 때 Initial weight를 단순히 random으로만 넣으면 Convergence가 깨진다며 여러가지 옵션을 배울텐데
위에 제시한 방법이 사후적으로 계산비용이 가장 줄어들 확률이 높은 Autoencoder 방식의 일반구조에 해당한다.
(반대로 사전적으로는 많은 비용을 지불해야 한다.)
좀 더 Bayesian stat 과 MCMC 관련 경험치가 쌓이는 다음 학기에 Boltzmann machine을 배우면서 다시 Autoencoder 혹은 Factor analysis를 만나게 될 것이다.
MSc 전용 문제는 저게 VAR을 쓰는 합리적인 계산법이어서는 아니고, Non-linearity를 구현해내는 방법이라는 관점에서만 국한할때,
무조건 SVM이나 Tree계열 모델들 (Neural Net 포함)만 있는게 아니라,
Linear regression들을 위의 문제 스타일로 엮기만해도 common error term과 시계열 구조 때문에 Non-linearity를 어느정도 대체할 수 있다는걸 느끼라는 문제다.
Multi-task learning과 굉장히 유사한 구조이지만 각각의 독립적인 Error term과 시계열 구조를 가지기 때문에 또 다른 Non-linearity에 대한 대응이 가능하거든.
VAR의 SUR 버전을 이상하게 쓰도록 만든 문제라 아직도 찜찜한데, 강의 부담이 너무 많아 좀 타협을 했다. 학생들도 잘 못 따라오는 것 같아서 쉽게 양보…라고 사족 변명도 붙여본다ㅎㅎ
앞으로 1년간 고민을 더 담아 다음 Cycle 정도에는 좀 더 세련된 형태로 문제를 바꿀 수 있으면 좋겠다.
빠듯한 시간 제약 속에 마음에 쏙 드는 문제를 만들질 못해서 아쉬움이 많지만,
적어도 우리 MBA 학생들이 배운 Factor Analysis 기반의 Machine Learning을
제대로 이해하고 현실 데이터에 활용하기 위해서는 그렇게 나쁘지 않은 문제라고 생각한다.
좀 더 마음에 드는, 수학적으로 복잡한 도전이 숨어있는 문제들은 나중에 MSc AI/DS 과정 후반에 제대로 해보자 ^^
나가며 – 증명이 안 됐다고? 믿고 싶지 않은 거겠지.
날 더러 DNN이 더 안 좋은 모델이라는걸 증명도 못한다는 투의 비난을 이미 수십번도 더 들었는데,
그 분들이 내가 DNN이 언제, 어떤 조건에서만 효과가 있다는걸 몇 년동안 설명한 이 블로그 글들을 얼마나 이해했을려나 모르겠다.
내가 한 이야기만 담은 것도 아니고, 그래프도 보여주고, 수식으로 설명도 하고, 심지어 코드를 공유한 적도 있었고,
나아가 Stanford, NYU 같은 명문대학 교수진들의 논문이나 인터뷰 글도 몇 개나 소개했었나.
저 위의 문제를 풀어낸 우리 학생들의 답안지를 보면서, 비전공 출신에 반년도 공부 안 했는데 이런 이해가 잡히는 걸 보면서,
“unless it’s proof of something people already want to believe” 가 아닌 증명을 블로그에 열심히 남길 필요가 없겠다 싶더라.
그 분들은 내가 못 하는거라고 설명한 내용을 누가 DNN으로 해 냈다고 우기는 컨텐츠를 올리면 “DNN으로도 되네!!!”는 식으로
학문적 논리를 이해하기는 커녕, 내가 쌓아올린 학문적 논리를 깎아내리기만 바쁜 사람, 내가 던지는 메세지에 귀를 철저하게 막고 사는 사람들이라는걸 깨달았으니까.
논리를 이해할 수 있는 훈련은 안 받고, 랜덤 노이즈가 잔뜩 있는 데이터를 놓고 실험을 해 보면 된다는, 특정 기간에 실험해보니 되니 다른 기간에도 다 될 것 같은데, 너가 뭘 안다고 안 된다고 하냐며 화를 내는 분께 굳이 내가 왜…?
학문적 지식에 종교적 신념(or 위의 Sorority girl 급의 이해도)을 가진 분들에게 굳이 내가 왜…?
그 선배님 말씀대로,
난 이제 좀 내려놨어. 어차피 안 바뀌고 안 듣잖아. 그냥 내 밥벌이나 하고 있음 나중에 자기들이 바뀌어 있더라고.