머신러닝은 데이터로부터 의미있는 정보를 자동으로 추출하는 알고리즘을 디자인하는 것으로 여기서 자동이라는 말에 집중해야 한다. 즉, 머신러닝은 의미있는 무언가를 생성하면서 많은 데이터셋에 적용할 수 있는 범용적인 방법론을 연구한다.
머신러닝에는 data, model, learning이라는 3가지 핵심 개념이 있다.
머신러닝은 본질적으로 데이터 기반이로 머신러닝의 목표는 데이터를 통해 의미있는 패턴을 추출하는 범용적 방법론을 설계하는 것이며, 이 목표를 달성하기 위해 데이터를 생성하는 모델을 설계합니다. 예를 들어, 회귀모델은 입력값을 받아 실제 값을 출력합니다.
목표는 아직 본 적이 없는 데이터들로 일반화를 잘시키는 좋은 모델을 찾는 것이며, 학습은 모델의 매개변수를 최적화하여 데이터에서 패턴과 구조를 자동으로 찾는 것을 의미한다.
머신러닝의 기본 원리를 이해하고 더 복잡한 모델을 설계하기 위해서는 수학적인 기초가 중요하다. 수학적 이해를 갖추면, 새로운 머신러닝 솔루션을 만들거나, 이미 존재하는 접근론을 이해하고 디버깅하거나 방법론의 본질적인 가정이나 제한들을 학습하는데 도움이 될 것이다.
1장에서는 기본적인 용어에 대해서 다룬다.
머신러닝에서 부딪히는 어려움 중 하나는 개념과 단어의 의미가 선명하지 않고, 머신러닝 시스템에서 특정 요소들이 다른 수학적 개념으로 추상화될 수 있다는 점이다.
예를 들어, 알고리즘이라는 단어는 머신러닝의 맥락에서 적어도 두 가지의 다른 의미로 사용되는데, 첫 번째 의미로의 알고리즘은 입력 데이터를 기반으로 예측하는 시스템을 의미한다. 여기서 이러한 알고리즘을 predictor라고 칭합니다. 다른 의미로는 ‘머신러닝 알고리즘’이라고 하는데, predictor 내부의 파라미터를 정하기 위한 시스템을 의미한다. 여기서는 알고리즘을 training system이라고 칭한다.
모든 데이터가 숫자는 아니지만 데이터를 숫자 형태로 간주하는 것은 유용하므로 이 책에서는 데이터가 이미 컴퓨터가 읽을 수 있는 수치형으로 변환되었다고 간주한다. 이러한 데이터를 벡터로 생각한다.
단어가 얼마나 모호한지 여기서 또 보여주는데, 관점에 따라 벡터라는 단어 자체로 크게 3가지 의미가 있다.
1. 숫자들의 배열 (컴퓨터 과학적 관점)
2. 방향과 크기가 있는 화살표 (물리학적 관점)
3.수학적 의미의 벡터 (수학적 관점)
모델은 일반적으로 데이터를 생성하는 과정을 설명하는 데 사용된다. 따라서, 좋은 모델은 실제 데이터 생성 프로세스의 단순화된 버전이라고 생각할 수 있으며, 데이터 모델링과 관련된 측면을 포착하고 이로부터 숨겨진 패턴을 추출합니다. 좋은 모델을 사용하면 실제 실험을 수행하지 않고도 어떤 일이 발생할 지 예측가능하다.
데이터셋과 적절한 모델이 주어졌다고 가정해보자. 모델을 학습시킨다는 것은 모델의 파라미터를 최적화할 수 있는 데이터를 사용하는 것을 의미합니다. 이때, 효용함수를 통해 학습 데이터를 얼마나 잘 예측하는지 평가합니다.
대부분의 학습 방법은 정상을 향해 언덕을 오르는 것에 비유할 수 있다. 여기서 정상은 원하는 성능 측정치의 최댓값에 해당한다. 하지만 실제로 우리는 우리가 모르는 데이터에 대해서도 잘 수행되도록 하는 것이 목적이므로 이미 알고 있는 데이터(학습 데이터)에 대해 잘 예측한다는 것이 단순히 이를 암기하는 좋은 방법을 찾은 것일 수도 있기 때문에, 새로운 데이터에는 일반화되지 않을 수 있으며, 실제로는 이전에 접하지 않은 상황에 노출시키는 것이 필요하다.
이 책에서 다루는 머신러닝의 주요 컨셉을 요약하면 다음과 같다.