- 이 글은 Mathematics for Machine Learning(Cambridge Univ. Marc Peter Deisenroth 외 2)- 머신러닝을 위한 수학-의 내용을 재해석해서 작성한 글입니다. 위 책의 내용에 이해를 돕는 글을 추가로 첨부하였으며 완전한 번역본이 아님을 알려드립니다. -
이번 글에서는 책의 Chapter 1의 내용을 간단히 요약하고, 머신 러닝에 주로 사용되는 용어를 간단하게 소개합니다. 다음 글부터는 수학의 내용들을 설명하는 유튜브 강의가 함께 실릴 예정입니다.
머신 러닝의 3가지 중요한 요소 : 데이터, 모델, 학습
머신 러닝(Machine Learning, 기계학습)은 데이터로부터 유용한 정보와 패턴을 '자동적'으로 추출하도록 만든 알고리즘입니다. 여기서 '자동적'이라는 것이 중요한데요, 만약 자동적으로 추출하지 않는다면 데이터가 변하거나 추가될 때마다 사람이 일일이 처리를 해줘야 하겠죠. 반면 컴퓨터에 좋은 처리 방법 하나를 프로그램으로 잘 만들어놓으면 어떨까요? 이 후 데이터만 입력해주면 입력된 방법에 따라 컴퓨터가 알아서 처리를 해줍니다. (야근 탈출! ㅠ)
어떤 문제를 처리하는 방법이나 절차를 '알고리즘'이라고 하는데, 인공지능도 하나의 알고리즘입니다. 다만, 머신 러닝은 '다양'하고 '많은' 데이터에 '보편적'으로 적용할 수 있는 알고리즘을 만든다는 점에서 기존의 여러 알고리즘과 차이가 있습니다.
머신 러닝에는 3가지의 중요한 요소가 있습니다. 바로바로..데이터와 모델, 그리고 학습입니다!
먼저 데이터부터 살펴볼까요? 머신 러닝은 데이터로부터 학습을 통해 일반적인 속성을 찾고, 이 후 그 결과물인 '모델'을 만들어 문제를 해결합니다. 따라서 데이터는 결과를 좌지우지하는 가장 중요한 요소입니다. 마치 엉망인 식재료로 좋은 음식이 탄생할 수 없고, 잡음이 많은 곳에서 좋은 음악을 녹음할 수 없는 것과 마찬가지죠.
우선 좋은 데이터가 확보되었다고 한다면 머신러닝은 데이터 속에 있는 다양한 속성 간, 혹은 데이터 내부에 잠재된 패턴을 파악합니다. 때로는 정답에 해당하는 속성에 미치는 속성을 찾거나 데이터의 특성을 파악하는 '학습 과정'을 거칩니다. 학습 방법도 다양합니다. 마치 레시피가 다양하듯 말이죠. 이 레시피도 재료의 종류와 조리 환경에 따라 달라지듯, 학습에 사용되는 알고리즘도 데이터의 유형과 학습 환경에 따라 달라질 수 있습니다.
좋은 재료를 적절한 요리과정을 거치면 '음식'이 나오죠? 마찬가지로 머신 러닝에서도 데이터를 잘 학습시키면 음식과 같은 결과물인 모델을만들어냅니다. 모델은 새로운 입력데이터의 값을 예측, 분류하거나 데이터에서 파악된 특성 중 어떤 것과 가까운지 파악하는 등의 역할을 합니다.
'모델'이라는 말이 생소할 수도 있지만 사실 '수학적 모델' 혹은 '통계 모델'에서 이미 많이 사용하고 있는 용어입니다. 코로나19가 한창이던 때 감염자의 수를 바탕으로 '예측 모델'을 만들어 앞으로 일주일 후면 감염자가 이만큼 증가 혹은 감소한다는 예측을 내어놓죠. 이 예측 모델은 현재 확보된 데이터를 바탕으로 만들어낸 결과입니다. 이 모델을 통해 앞으로 일어날 일을 예측하고 추이를 관찰하죠. 머신러닝의 모델도 이런 예측 모델과 비슷합니다. 비록 다가오는 미래의 결과를 100% 다 맞출 수는 없지만, 미래를 예측할 수 있는 좋은 도구를 만든다고 생각하면 됩니다.
모델에도 좋은 모델과 나쁜 모델이 있는데, 좋은 모델은 이전의 데이터에서 전체적이고 일반적인 특성을 추출합니다.반면 나쁜 모델은 너무 연습용 데이터에만 최적화되어서 실전에 무용지물이 되거나 불필요한 일부 데이터를 너무 반영하기도 합니다. 좋은 모델이 되기 위해서는 '학습' 및 최적화를 통해 기존의 모델을 보완해 나갑니다.
모델의 예를 하나 살펴볼까요?예전 2015년 통계청 수기 공모전에서 최우수상을 받은 '통계로 튀기는 치킨' 수기입니다.
이 수기에서 데이터는 기존에 판매되고 있는 치킨의 판매량입니다. 판매량 데이터를 분석한 결과 계절 / 날씨 / 요일 / 이벤트라는 속성을 찾고, 속성 사이의 관계를 분석하여 판매량에 미치는 속성을 찾습니다. 그리고 속성에 판매에 미치는 적절한 가중치를 적용해 하나의 모델을 만들어냅니다. 그 모델이 기존에 판매된 수량을 제법 비슷하게 맞추면 좋은 모델이 됩니다. 만약 좋은 모델을 만들었다면 가까운 미래의 치킨의 판매량을 예측할 수 있게 됩니다. 그 예측값과 실제 판매량 사이를 비교해보고 가중치를 조절하거나 불필요한 속성을 제거하고, 필요한 속성을 추가하는 과정을 거쳐가며 계속 모델을 발전시켜 나갑니다. 이러한 과정이 머신 러닝의 기본적인 작동 방법입니다.
머신 러닝에서 수학이 중요한 이유는 무엇일까요? 머신 러닝의 복잡한 원리에 숨어있는 수학을 이해하게 되면 더욱 새로운 머신 러닝을 개발할 수도 있고, 기존 머신 러닝의 문제점도 발견하고 보완해나갈 수 있습니다. 또한 머신러닝이 가지고 있는 한계, 머신 러닝에서 가정하고 있는 내용도 파악할 수 있으므로 보다 정확하게 머신러닝을 사용할 수 있습니다.
책의 Part-1. 머신러닝의 기초가 되는 수학
이 책에서는 머신 러닝의 기반이 되는 수학을 다음과 같이 나누어서 설명합니다. 아래의 내용들을 차근 차근 살펴보는 것이 이 매거진의 목표입니다. 내용을 간단하게 요약해두었지만 사실 하나의 주제가 거의 한 학기 전공 과목일만큼 만만치 않는 내용들입니다. 대략 한 챕터당 10개 정도의 글로 유튜브 강의 + 글로 작성을 해볼 예정입니다.
우선 각각의 내용을 '매우' 간략하게 보면 아래와 같습니다.
- Linear Algebra (선형 대수학)
수치 데이터를 벡터로 표현하고, 표는 행렬로 표현을 주로 합니다. 수학에서 이러한 벡터 공간과 행렬에 대해서 다루는 분야가 바로 선형대수학입니다.
아래 analytic gepmetry와 matrix decomposition까지가 선형 대수학의 내용입니다.
- Analytic Geometry (해석 기하)
만약 2개의 행렬이 실제 세계의 2개의 비슷한 대상을 나타낸다고 해봅시다. 그러면 두 개의 행렬이 머신 러닝을 통해서 나온 결과도 비슷해야 하지 않을까요? 그러면 두 벡터가 과연 얼마나 비슷한지는 어떻게 수학적으로 표현해야 할까요?
이러한 두 벡터 사이의 유사함(similarity)을 결과를 마치 '거리'로 표현할 수 있습니다. 예를 들어서 한국의 고등학생 세 명의 국수영탐 내신 등급을 (1, 2, 1, 3), (1,5, 1, 4), (3,7,5,2)로 나타냈다고 합시다. (이런 형태가 벡터죠) 그러면 앞의 두 학생은 맨 뒤의 학생과 비슷하다는 생각이 들죠? 그러면 두 벡터 사이의 거리 (metric이라고 합니다. metric으로 하려면 몇 가지 조건을 만족해야 합니다.)를 잘 정의하면 두 벡터 사이의 유사함을 이야기할 수 있습니다. 이러한 역할을 하는 분야가 바로 Analytic Geometry입니다.
- Matrix Decompositon (행렬 분할)
주어진 다양한 벡터를 어떻게 하면 쉽게 표현할 수 있을까요? 예를 들어서 수학 시간에 xy 평면의 경우 우리는 간단하게 x좌표와 y좌표를 통해서 나타냅니다. 기본적으로 (x,y)=(x,0)+(y,0)=x(1,0)+y(0,1)으로 표현할 수 있고 (span) 그리고 (1,0)과 (0,1) 라는 벡터 앞에 적당하게 숫자를 곱해서 나타낼 수 있습니다. 이렇게 기초적인 벡터(basis)를 통해서 벡터를 다 표현할 수 있죠. 이러한 내용을 배우는 파트가 Matrix Decompostion이며 이는 Linear Algebra에 다 포함되는 내용입니다.
- Probability Theory (확률론)
데이터를 관측하다 보면 잡음 같은 데이터가 섞여있는 것을 볼 수 있습니다. 머신 러닝에서 이러한 잡음과 같은 noisy observation을 제거 하고 싶을 때는 어떻게 해야 할까요? 이를 위해서는 noise의 의미와 구분할 수 있는 정의를 알려주어야 합니다. 또한 평소와는 다른 불확실성을 표현해야 할 때도 있는데 이러한 것을 다루는 파트가 바로 확률론입니다.
- Vector Calculus and Optimization (벡터 미적분학, 최적화)
머신 러닝에서는 데이터가 가지고 있는 다양한 속성을 측정하는데, 그 측정을 최대화시키는 변수를 찾아야 합니다. 많은 최적화 방법들은 해법 (solution)을 가장 빨리 찾는 방향을 의미하는 gradient의 개념을 필요로 합니다. 이 gradient의 개념은 Ch5의 Vector Calculus (벡터 미적분)에서 다룰 예정이며 뒤이어 최적화 내용에서 함수의 maxima, minima를 찾는 최적화를 다룹니다.
책의 Part-2. 머신러닝의 4가지 기둥
이 책에서는 part-2에서 머신러닝의 중요한 4가지 내용을 다루고 있습니다. 하지만 아마 Part-1만 하더라도 기초를 하나하나 짚고 공부하기에 양이 무척 많고, 아직 저도 Part2에는 저도 생소하거나 내용을 충분히 숙지하지 못한 내용들이 좀 나오더라고요..
그래서 아마도 브런치와 유튜브에서는 part-1에 해당되는 내용만 다룰 것 같습니다. 그것만 하더라도 내용이 꽤 어마어마하게 많을 것 같아요.. 일단 무슨 내용이 나오는지만 간략하게 정리해봅니다.
- Regression (회귀분석)
머신 러닝의 가장 기본적인 예측 모델인 선형 회귀분석을 배웁니다. 주어진 입력값들이 있을 때, 예측값 y들로 보내는 함수를 찾을 예정입니다. (이러한 y를 x의 레이블이라고 부릅니다) 또한 모델 피팅도 다룹니다.
- 차원 축소 (Dimensionary Reduction)
이 내용에서는 복잡한 차원의 데이터를 좀 더 분석을 쉽게 하기 위한 차원 축소법을 배웁니다. 예를 들어 학생의 학업 역량을 파악하기 위해서는 모든 성적을 보기보다는 주요 과목이라고 할 수 있는 내용을 보는 게 훨씬 효과적이고 다루기가 쉽습니다. 이 내용은 입력값과 함숫값을 모두 살펴보는 회귀분석과는 달리 입력값만을 살펴봅니다.
- 밀도 추정 (Density Estimation)
주어진 데이터 셋을 설명하는 확률 분포를 찾는 것이 밀도 추정의 목적입니다. 이를 위해 혼합 가우시안(Gaussian Mixture)을 좀 더 다룰 예정입니다. 차원 축소에서처럼 라벨을 다루지는 않으며, 데이터를 묘사하기 위해 차원 축소가 아닌 분포를 살펴볼 것입니다.
- 분류 (Classification)
말 그대로 분류입니다. 회귀분석에서는 함수에 의해 만들어지는 y의 값을 다루지만 분류에서는 실제 값을 다루게 됩니다.