대학원 머신러닝 강의 수준

얼마전, 증권사에서 퀀트 팀 주니어로 일하신다는 분의 메일을 받았다.

글로벌 자산배분 업무라는 허울 좋은 일을 시작했는데, 현실은 매일 뉴스 체크하면서 직관에 의존한 배분만…

시장의 많은 데이터 속에서 유의미한 Implication을 뽑아내는 능력을 기르는….

이론적인 모델은 아니더라도 시장의 패턴을 이용해 (Portfolio를) 분산하는 모델을 여러가지 만들어내는…

메일을 읽자마자 10년쯤 전에 초짜 투자은행가로 첫 사회생활을 시작했던 무렵이 떠오르더라. 바로 위에 있던 형 하나랑 밤새 일하면서, 우리가 만드는 이런 허접한 Valuation 모델만 믿고 몇 조원을 지르겠다는 대기업 회장님들은 도대체 뭐냐고 낄낄거렸는데, 아마 저 분도 은행에서 자기네 펀드 사고 있는 사람들에게 비슷한 감정을 갖고 있을 것이다.

지적인 욕구와 스스로에 대한 자괴감이 스스로를 잡아먹는 걸 느끼고 런던행 비행기를 타던 그 무렵, 대학원을 가면 뭔가 뚝딱 대단한 모델을 배워서 한번에 쏴아아악~ 해결할 수 있을 줄 알았다 ㅋㅋㅋ

런던, 보스턴을 거치며 긴 대학원 시절 내내, 필자의 일상사는 그런 멋진 모델이 아니라 한 줄 따라가기도 벅찬 수식과의 지난한 싸움이었다. 처음에는 여느 경제학도처럼 “저런 단순한 수식으로 세상을 어떻게 설명하냐”는 회의감도 있었고, 모델 하나하나가 어떤 단순화로 세상의 특징을 잡아내는지 깨닫고 난 다음부터는 수식 속에 담긴 경제학적 함의를 찾아내기 위해 고민하기도 했고, 나중에 내 논문을 쓰면서는 모델의 수학적인 엄밀함을 위해 필요한 수학적인 내공에 좌절하기도 했다.

저 분도 자기가 꿈꾸는 모델을 만들고 세상에 검증해보고 싶다면 아마 필자같은 좌절스러운 몇 년을 보내면서 수학적으로 열심히 훈련을 받으셔야할 것이다. 시중에 돌아다니는 (초급용) 데이터 사이언스 관련 서적들 봐서는 답 없을 것이라고, 쓸데없는데 시간 쓰지 말고 대학원을 가셔야된다고 조언을 드릴 수 밖에 없었다. (책 쓰자는 연락이 벌써 몇 군데서나 왔냐….그렇다고 고난이도로 쓰면 아무도 안 사는 책이 될테니.. 쩝) 물론, 꼭 10년전에 학부 교수님이 필자를 뜯어 말리셨듯이, 저 분께 같은 길을 권유할 생각은 전혀 없다.

(Source: pinterest.com)

 

1. 대학원에서 만나는 머신러닝 수업 – Convex Optimization

필자의 수업을 듣고 가신 어느 개발자 분이 큰 맘을 먹고 모 대학 빅데이터 대학원 과정을 들어가셨다. 수업이 쉽다고 매번 불평하시는데, 아마 그 분 실력이 뛰어나서 직장인 대상 석사 프로그램 수준이 좀 부족하게 느껴졌을 수는 있겠다 싶더라.

그 분이 요즘 공부하는 내용이라고 링크를 하나 보내주셨는데, Convex Optimization이라는 수업이다. 자연과학과 공학 교육으로 유명한 카네기 멜론 대학 (CMU)의 통계학 & 머신러닝 전공 대학원 수업인데, 예상대로 수준낮은 MOOC 강의들 (ex. Coursera, Udemy 등)과는 현격한 차이가 있더라.

Convexity를 알아야하는 이유는 우리가 수식으로, 컴퓨터로 풀어내는 모든 계산이 함수의 convexity 또는 concavity를 이용한 최적화 (optimization) 작업이기 때문이다. 수식으로 못 풀어낼 때 머신러닝에서 가장 흔히 쓰이는 방법이 Gradient descent, 이 때 정확성과 계산 속도의 trade off를 겪으면서 쓰는 작업이 Stochastic gradient descent라고 한다. 요기까지가 필자가 일반인 대상으로 수업하는 내용이고, 아마 시중에 알려진 수학적인 도전(?)일 것이다.

대학원 수업에서는 함수 형태에 따라 항상 under-estimate하는 경우를 보정해주는 sub-gradient라는 내용도 다루고, 오차 투성이일 수 밖에없는 1차 함수 approximation을 탈피해서, 2차 이상의 함수로 gradient decent를 하는 proximal gradient descent라는 방법도 배운다. 왜? 이런거 배워서 어디 써먹냐고? 데이터 모델링은 언제나 오차에 노출되어 있는 작업이다. 당연히 인간이 할 수 있는 최대한의 보정작업은 본인의 수학 실력이 올라갈수록 레벨업이 될 수 밖에 없다. 

저 링크의 수업은 뒷 부분이 더 재미(?)있다. Duality를 다루는 부분에서는 Regularization에 들어가는 조건식이 사실상 constraint라는 관점에서 출발해서, 목적함수를 constraint에 맞춰서 값을 구하나, constraint를 목적함수에 맞춰서 구하나 결국에는 같은 종류의 최적화 작업이 돌아간다는 걸 보여준 다음에, 그 아이디어를 (블록체인 류의) 네트워크를 푸는데도 쓰고, (또 블록체인에 적용되는) 네트워크 + 게임이론 문제 푸는데도 쓴다. 굳이 블록체인에 국한될 것도 없는게, 모든 수학적인 문제 풀이는 다들 같은 선상에서 출발한다. (이걸 경제학과 파이낸스에서 배웠는데, 강의 노트가 하나도 새롭지 않다면 믿으시겠는가?)

참고로 저 Duality가 필자의 수업 시간에 SVM 설명하면서 왜 SVM은 Regularization을 반대로 하고 있는지에 대한 수학적인 설명이기도 하다.

강의 후반엔 Newton method라고, 최적값을 trial-and-error로 찾아가는 작업이 활용되는 방식을 위에 설명한 sub-gradient, proximal gradient, duality 모델들에서 활용하는 걸 보여주는데, 굳이 따지자면 이 부분이 계산 통계학 (Computational Statistics)과 머신러닝이 만나는 지점이 아닐까 싶다. Logistic regression을 풀 때 손으로 풀 수가 없기 때문에 Newton method로 solution을 찾아가는 것도 잘 안 가르쳐줄 일반인용 강좌만 보던 분께 계산 통계학의 근간인 Newton method와 그 방법을 빌려서 머신러닝의 계산비용을 절감시키는 컴퓨터 사이언스의 만남은 무척 낯설지도 모른다.

 

2. 대학원에서 만나는 머신러닝 수업 – Statistical Machine Learning

몇 달전에 어느 대학 통계학과 4학년 학생한테 데이터 마이닝 수업을 하나 듣고 났더니 이제 다 알게 된 것 같다는 식으로 좀 자뻑하는 메일을 받은 적이 있다. 어이가 없어서 ISLR 수준에서 벗어나고 그런 주장을 해야되지 않겠냐고 강한 어조로 타일렀는데, 얼마나 알아들었을라나?

대학원에서 위의 수업을 듣고 나면 좀 더 레벨업된 통계학 + 머신러닝 융합 수업을 들을 수 있다. 같은 교수가 강의하는 Statistical Machine Learning 이다. 주제는 학부생들용 ISLR과 비슷할지도 모른다. Linear, non-linear, non-parametric regression을 배운 다음에, Clustering과 Ridge, Lasso의 개념, Graph theory에서 나오는 Tree model, network model을 배우는 수업이니까. 당연하겠지만 내용의 깊이는 현격하게 차이가 난다. 제대로된 대학원 수업이니까.

네트워크 이론 설명하면서 잠깐 다뤘던 Centrality, complexity를 Clustering에 적용하면서 수학적으로 범위가 주어질 수 밖에 없고, 이걸 바탕으로 Clustering 작업시 계산 비용을 최적화할 수 있는 컨셉이 여기에 잘 설명되어 있다. 물론 같은 아이디어를 Network에 적용할 수도 있고, 그건 수업 후반부인 여기에서 다루더라.

수식을 제쳐놓고 간단하게 아이디어만 정리하면, 저런 수학적으로 제한될 수 밖에 없는 최소값, 최대값 없이 단순하게 Centrality와 complexity를 cluster나 network에서 계산한다면 모든 가능성을 다 뒤져야한다. 데이터가 많지 않다면 큰 문제가 안 되겠지만, 우리가 다루는 데이터들은 “빅데이터”들이다.

이런 종류의 inequality로 통계량의 범위를 예측하는 작업을 처음했던게 학부 2학년 경제통계에서 Chebyshev’s inequality를 썼던 건데, 그 땐 정말 왜 저런거 공부하나, 도대체 어디에 써먹나는 생각을 했던게 사실이다. 머리에 지식이 더 들어오고 나서야 비로소 저런 지식이 내 계산의 효율을 끌어올려주고, 내 모델을 업그레이드 해 주고, 내 몸 값을 올려준다는 사실을 깨닫게 되었다.

(Source: Beauty of Maths)

 

나가며 – 깊이란?

서울 시내 모처에서 교수로 재직중인 선배들과 사업 이야기를 한 적이 있다. 형님들이 너무 Valuation을 낮게 잡고 시작하시는 것 같길래, 좀 더 스스로를 띄우시라고 시장에 있는 다른 “스타트업”이라는 곳들이 얼마나 수준 낮은 “기술”을 들고 있는지를 농담삼아 던졌었다. 형님들이 웃으면서 그러시더라.

학부생들이 한다는 기술이라는게 다 그렇지 뭐

누군가는 기분 나쁘게, 또 누군가는 씁쓸하게, 또 다른 누군가는 속이 시원하게 들을 멘트라고 생각한다.

예전에 어느 헤지펀드 면접을 보는데, 상황을 하나 던져주고, 어떤 Trading algorithm을 만들 수 있는지 논리를 쌓아보라는 질문을 받은 적이 있다. 가볍게 데이터 셋의 분포를 보고 regression 타입을 정하는 작업을 한참 설명했더니, 이렇게 질문하더라.

Is it deep enough?

듣기 좀 속 쓰린 코멘트였는데, 면접 끝나고 집에 오면서 생각해보니 너무 Shallow한 모델이었다는 사실을 인정할 수 밖에 없었다. 학부생들 기술이라는게 다 그렇다는 저 코멘트에 분명 누군가는 기분이 나쁘겠겠지만, Not-so-deep-enough라는 팩트마저 부인하긴 어렵지 않을까? 링크 걸린 수업의 강의 노트 한번 보시고, 내 모델은, 내 지식은 얼마나 deep enough인지 한번 고민해보시길 바란다. 참고로, deep enough라는 칭찬 받기 참 힘들다.

X