brunch

You can make anything
by writing

C.S.Lewis

by Sungho Kim Aug 23. 2016

머신러닝에 도움이 된 기초과목

Andrew Ng 수업을 마치며

머신러닝이 뭔지 모르고 누가 가볍게 Andrew Ng 수업을 들어보라고 하길래 그냥 들었다. 하지만 이 수업, 가볍지 않다. '심심해서' 시작해 볼 만한 과정은 결코 아니다.


는 경제학 석사과정에서 금융공학 연구를 하던 중 8퍼센트에서 일을 하게 되어 머신러닝 전공자는 아니다. 비전공자로서 Andrew Ng 수업에서 다루는 내용들과 도움이 된 기초지식들을 이해한 대로 정리해보겠다.


수업 개괄

Coursera에서 무료로 제공하는 Andrew Ng의 Machine Learning 강의는 세 부분으로 구성되어 있다.


첫째 부분은 기본적인 개념에 대한 강의로서 상당히 쉬운 배경지식까지도 친절하게 설명해준다. 수업 앞부분에서 고등학교 문과 수학 수준의 vector, matrix의 개념과 기초 연산에 대해 가르치는 대목에서 수료를 쉽게 낙관하기 마련이지만 사실 쉽지 않다.


째 부분은 매 수업 이후에 있는 퀴즈로서 수업을 잘 들었는지를 확인하는 단계이다. 수업만 잘 듣는다면 쉽게 맞출 수 있는 수준이다.


마지막으로는 Matlab(혹은 Octave) 과제로서 직접 머신러닝 알고리즘의 (극히) 일부를 만들어보는 실습과정이다. 이 프로그래밍 과제가 과정의 백미라고 할 수 있다. 전체는 11주 과정이며, 잠깐 정신이 혼미해지면 Coursera가 꾸준히 보내는 메일을 받으면서 부채감이 쌓이게 된다.


끝까지 수료하는 학생의 비율이 상당히 낮다고 하는데 아무래도 강의 시작 부분과 끝 부분의 난이도 차이가 큰 것을 반영하는 것이라고 생각한다.


머신러닝 수료에 도움이 되는 기초과목

1. 경제수학(Mathematics for Economics)

요즘 고등학교 문과 수학 교과과정은 미적분을 다루지만, 경제수학은 미적분을 제외한 고등학교 수학을 전제로 하고 선형대수와 미적분학을 한 학기 동안 배우는 수업이다. 수학적 배경지식이 전무하다면 경제수학으로 시작하는 것이 바람직하다. 경제학에 필요한 최소한의 수학 수업으로서 난도가 높지는 않다. 그래도 선형대수(Linear Algebra)에서는 vector, matrix, eigen value/eigen vector의 기본적인 내용을 배울 수 있고 미적분(Calculus)에서는 기초적인 미적분에 더해 Lagrangian 등의 내용을 다룬다.


머신러닝 과제에서는 vectorization의 이해가 필수적이기 때문에 vector/matrix에 대한 개념에 익숙해질 필요가 있다. Dimensionality reduction에서는 eigen value/eigen vector의 이해를 요구한다. 미적분은 cost function, gradient 등 여러 부분에서 반복적으로 나오기 때문에 수식의 목적이나 전개과정을 이해하기 위해서는 필수적이다. 머신러닝 공부를 Andrew Ng의 수업으로 마친다면 경제수학만으로도 괜찮아 보인다.


경제수학은 Simon & Blume이 쓴 Mathematics for Economists 책이 많이 읽힌다. 굉장히 쉽고 자세하게 서술되어 있지만 분량이 많아 필요한 부분만 발췌해 읽는 것이 좋을 수 있다. 한국어로 된 교재들은 대체로 설명이 간결해 심리적 부담이 적은 편이다. 학교마다 담당 교수님이 집필하신 책을 쓰는 것 같다.


2. 미적분 1, 2(Calculus I, II)

수학에 두려움이 없고 시간적 여유가 있다면 이과대(혹은 수학과) 학생들이 배우는 미적분을 배우면 좋다. 경제수학에서 가볍게 넘어가거나 다루지 않은 내용들을 차근차근 증명하면서 여러 가지 테크닉들을 배운다. 통계학과에서도 미적분학이 개설되는데 이과대 과정이 더욱 자세하고 친절해 좋다. 이왕 공부를 하는 김에 epsilon-delta를 포함해 증명 하나하나 꼼꼼히 공부해두면 나중에 도움이 된다.


Andrew Ng의 수업은 기초적인 내용이기 때문에 복잡한 미적분 테크닉을 요구하지는 않는다. 하지만 수리통계학이나 그 이상의 과정에서는 복잡한 미적분(polar coordinate 등)도 사용되기 때문에 자신감이 생길 때까지 미적분을 공부해두면 좋다.


Thomas의 책이나 Stewart의 책이 전 세계적으로 읽힌다. Stewart만 보았는데, 평생 공부한 수학 교재 중에 단연코 가장 좋았다. Thomas도 그만큼 좋다고 한다. 연습문제의 난이도가 단계적으로 있으면서 질도 굉장히 좋고 내용도 방대해 홀수번만 다 풀어도 충분한 실력을 쌓을 수 있다.


3. 선형대수(Linear Algebra)

경제수학에서의 선형대수는 사실 계산 방법만 익히고 끝날 공산이 크다. 선형대수는 훨씬 더 공간에 대한 고민을 많이 할 수 있는 과목이다. 수학과에 열리지만 통계학과의 수업이 더 가벼운 것 같다. Matrix로 표현된 증명이나 수식의 이해를 위해 들어두면 도움이 많이 된다.


표지에 원숭이가 그려진 Howard & Anton의 Contemporary linear algebra로 공부하였는데, 어렵지 않고 적절한 분량인 것 같다. 아쉽게도 완독 하지는 못했다.


4. 수리통계학(Mathematical Statistics)

통계의 기초적인 개념들을 배우는 과목이다. 분포(distribution)에 대한 이해나 모수(parameter)에 대한 추정 등을 할 때 필요한 기초를 다룬다. Andrew Ng의 강의에서는 정규분포(Gaussian distribution)나 Gaussian kernel의 배경을 이해하는 데 도움이 된다. 나중에 머신러닝을 깊이 있게 공부하게 되면 최적화(optimization) 알고리즘이나 베이즈 통계(Bayesian statistics)와 연결이 되는 것 같은데, 이를 위해서 수리통계학은 정말 꼭 배워야만 하는 필수과목이다.


개략적인 내용은 Hogg, McKean, and Craig의 Introduction to Mathematical Statistics를 보았지만 PDF로 된 공부자료들이 많이 있어서 책을 많이 읽진 않았다. Wikipedia에도 대부분의 내용이 아주 친절하게 설명되어 있다.


5. 회귀분석(Regression Analysis) 혹은 계량경제학 1(Econometrics I)

두 과목이 유사한데, 머신러닝의 기초가 되는 선형 회귀분석(linear regression analysis)을 배우는 과목이다. 선형 회귀를 위한 기본적인 가정, 그 이후의 증명, 모형에서의 문제점 등을 공부할 수 있다. Cost function의 error square minization을 유도하는 것을 주로 배우고, vectorization이나 sigmoid function 등을 이해하는데 도움이 된다. Multicolinearity 등 결과를 해석할 때 나타날 수 있는 문제점들도 다룬다. 대학원 수업에서는 vecotization을 통한 일반적인 증명과 더 풍부한 이론들을 다룬다.


머신러닝에서는 사실 OLS(Ordinary Least Square)를 사용하지 않고 최적화(optimization)를 통해서 반복(iteration)적으로 해를 찾는다. 계산량에 있어서 훨씬 불리할 텐데도 이런 접근을 하는 이유는 아마도 Polynomial Regression, Neural Network나 더욱 복잡한 알고리즘을 사용하기 위해 OLS에서 사용하는 모형에 대한 제약(가정)을 없애고 베이즈적 접근(Bayesian approach)을 하기 위함이지 않을까 싶다. 이 대목은 머신러닝이 구분되는 특징인 것 같다.


계량경제학은 학부과정에서는 Gujarati의 Basic Econometrics, 대학원에서는 Greene의 Econometrics Analysis가 가장 유명하다. 친절한 설명과 높은 수준의 연습문제가 있는데 아쉽게도 완독 하지는 못했다.


6. 컴퓨터 자료처리(Computer Programming) 혹은 계량경제학 2(Econometrics II)

지금까지 배운 내용들을 실습을 하는 과목. 손으로 열심히 배웠던 수식과 선형대수적 개념들을 프로그래밍으로 다루면서 그동안 복잡한 수학, 통계학을 왜 배웠는지 깨닫게 된다. 수업에 따라 R, E-views, Gauss, Matlab 등의 언어를 쓴다. 아무래도 Python이나 R을 배우는 게 좋을 것 같지만 다양한 언어들을 다루어 본 경험도 큰 도움이 되는 것 같다. 언어 자체보다는 vectorization에 대한 이해와 연산에 대한 고민을 해보는 게 더 중요하지 않을까 싶다. 나는 가장 자신 있는 게 Matlab인데, 추천할만하진 않은 것 같다. 실력이 쌓일수록 추가 결제를 계속하고 싶어 지고 다른 컴퓨터에서 쓰기 어렵기 때문이다.


비루한 인증샷. 수업을 열심히 듣지않아 퀴즈를 많이 틀렸다. 증서는 못샀다.

나는 다독(多讀)을 하는 스타일은 아니어서 참고문헌을 다양하게 읽지는 않았다. 막상 정리를 하고 보니 공부가 더욱 일천하게 느껴진다. 더 다양한 분야를 열심히 공부했어야 했다는 아쉬움도 남는다. 당연히 절대적으로 받아들이는 것은 곤란하다. 개략적으로만 파악하고 교수님이나 숙련된 조교에게 상담받는 것이 좋겠다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari