소개 및 동기 부여
머신러닝이란 데이터 속에 숨겨진 가치 있는 정보를 자동으로 추출해내는 알고리즘을 설계하는 분야다. 여기서 방점은 바로 ‘자동(automatic)’에 찍힌다. 다시 말해 머신러닝은 특정한 데이터에만 국한되지 않고 다양한 데이터셋에 두루 적용 가능하면서도, 동시에 유의미한 결과를 도출해낼 수 있는 범용적인 방법론(general-purpose methodologies)을 연구한다. 이러한 머신러닝을 지탱하는 세 가지 핵심 개념은 바로 데이터(data), 모델(model), 그리고 학습(learning)이다.
$\to$ ‘automatic’의 의미는 머신러닝은 데이터가 주어지면 알고리즘이 스스로 규칙을 찾아냄에 있다. ‘범용성’은 데이터의 형태(이미지, 텍스트, 음성 등)는 제각각이지만, 이를 처리하는 수학적인 원리(선형대수, 확률론 등)는 공통적으로 적용되기 때문이다.
$\quad$ 머신러닝은 태생적으로 데이터 중심(data driven)이므로, 그 핵심에는 언제나 데이터(data)가 존재한다. 머신러닝의 목표는 특정 분야에 대한 깊은 전문 지식(domain-specific expertise)이 없더라도, 데이터 안에서 가치 있는 패턴을 추출해낼 수 있는 범용적인 방법론을 설계하는 것이다. 예를 들어, 도서관의 수많은 책처럼 방대한 문서 집합(corpus)이 주어졌을 때, 머신러닝 기법을 활용하면 문서들 사이에 공통적으로 흐르는 핵심 주제를 자동으로 찾아낼 수 있다(Hoffman et al., 2010).
$\to$ 물론 실제 현업에서는 도메인 지식이 여전히 중요하다.
이 목표를 달성하기 위해 우리는 모델(model)을 설계한다. 모델이란 보통 우리가 관찰한 데이터셋과 유사한 데이터를 만들어내는 ‘생성 과정(process)’과 연관되어 있다. 가령 회귀(regression) 문제라면, 모델은 입력값을 받아 실수형(real-valued) 결과값으로 대응(mapping)시키는 함수의 형태로 기술될 것이다. Mitchell(1997)의 정의를 빌려 표현하자면, 어떤 작업에 대한 모델의 성능이 데이터를 고려함으로써 향상되었을 때, 그 모델은 데이터로부터 ‘학습’했다고 말한다. 우리의 목표는 단순히 현재 데이터에만 맞는 모델이 아니라, 미래에 마주하게 될 미지의 데이터(unseen data)에 대해서도 성능을 잘 발휘하는, 즉 일반화(generalize)가 잘 되는 좋은 모델을 찾는 것이다. 마지막으로 학습(learning)이란, 모델의 파라미터(parameter)를 최적화함으로써 데이터 내부에 존재하는 패턴과 구조를 자동으로 찾아내는 과정으로 이해할 수 있다.
$\quad$ 머신러닝은 이미 수많은 성공 신화를 써 내려왔고, 누구나 강력하고 유연한 머신러닝 시스템을 설계하고 학습시킬 수 있는 소프트웨어를 손쉽게 구할 수 있는 시대가 되었다. 그럼에도 불구하고, 우리는 더욱 복잡한 머신러닝 시스템의 밑바탕이 되는 근본 원리를 이해하기 위해서는 ‘머신러닝의 수학적 기초’가 필수적이라고 믿는다. 이러한 원리를 제대로 이해한다면 단순히 도구를 사용하는 것을 넘어, 새로운 머신러닝 솔루션을 창안하거나 기존 알고리즘을 분석하고 문제점을 해결(debugging)하는 데 큰 도움이 된다. 나아가 우리가 다루는 방법론들이 본질적으로 어떤 가정(assumption) 위에서 작동하며 어떤 한계점을 지니는지 명확히 파악할 수 있게 해 준다.