직관을 위한 용어 정리

머신러닝 분야에서 우리가 빈번하게 마주하는 난관 중 하나는 개념과 용어가 다소 모호하다는 점(slippery), 그리고 머신러닝 시스템의 특정 구성 요소가 여러 가지 서로 다른 수학적 개념으로 추상화될 수 있다는 점이다. 예를 들어, ‘알고리즘(algorithm)’이라는 단어만 해도 머신러닝 문맥에서는 적어도 두 가지의 서로 다른 의미로 사용된다. 첫 번째 의미로, 우리는 입력 데이터를 바탕으로 예측을 수행하는 시스템 그 자체를 ‘머신러닝 알고리즘’이라 부른다. 우리는 이러한 종류의 알고리즘을 예측기(predictor)라고 칭한다. 두 번째 의미로, 우리는 ‘머신러닝 알고리즘’이라는 똑같은 표현을 사용하지만, 이번에는 미래에 마주할 미지의 입력 데이터(unseen input data)에 대해 좋은 성능을 내도록 예측기의 내부 파라미터(parameter)를 조정하는 시스템을 의미한다. 여기서 우리는 이러한 조정 과정을 시스템의 학습(training)이라고 부른다.
$\quad$ 물론 이 책이 이러한 용어의 모호성(ambiguity) 문제를 완벽하게 해결해 줄 수는 없다. 다만 우리가 시작 단계에서 분명히 짚고 넘어가고 싶은 점은, 문맥에 따라 동일한 표현이라도 전혀 다른 의미를 가질 수 있다는 사실이다. 그렇기에 우리는 독자가 혼란을 겪지 않도록 서술 과정에서 문맥을 최대한 명확히 하여 모호함을 줄이도록 노력할 것이다.
$\quad$ 이 책의 1부(Part I)에서는 머신러닝 시스템의 3대 핵심 요소인 데이터(data), 모델(model), 그리고 학습(learning)을 심도 있게 논의하는 데 필요한 수학적 개념과 기초를 소개한다. 여기서는 이 구성 요소들에 대해 간략하게 개요만 살펴볼 것이며, 앞서 언급한 수학적 개념들을 모두 학습하고 난 뒤인 8장에 가서야 이들을 다시 한번 본격적으로 다룰 예정이다.
$\quad$ 모든 데이터가 태생적으로 수치(숫자) 형태인 것은 아니지만, 데이터를 숫자 형태로 변환하여 다루는 것은 매우 유용하다. 이 책에서는 데이터가 컴퓨터 프로그램이 읽을 수 있는 적절한 수치 표현(numerical representation)으로 이미 변환되었다고 가정한다. 따라서 우리는 데이터를 벡터(vector)로 간주한다. 앞서 용어가 문맥에 따라 미묘하게 달라질 수 있다고 언급했듯이, ‘벡터’를 바라보는 관점 또한 (적어도) 세 가지로 나뉜다.

  1. 컴퓨터 공학적 관점: 숫자들이 나열된 배열(array).
  2. 물리학적 관점: 방향(direction)과 크기(magnitude)를 가진 화살표.
  3. 수학적 관점: 덧셈(addition)과 스칼라배(scaling) 연산 법칙을 따르는 객체.
    $\quad$ 모델(model)은 일반적으로 우리가 다루는 데이터셋과 유사한 데이터를 생성해내는 ‘과정(process)’을 기술하는 데 사용된다. 따라서 좋은 모델이란, 실제 존재하는(하지만 우리는 그 내부를 정확히 알 수 없는) ‘데이터 생성 과정’을 단순화한 버전이라고 생각할 수 있다. 이때 좋은 모델은 데이터를 설명하고 그 안에 숨겨진 패턴을 추출하는 데 필요한 핵심적인 특징들을 놓치지 않고 포착해야 한다. 이렇게 잘 만들어진 모델을 활용하면, 현실 세계에서 직접 비용이 드는 실험을 수행하지 않더라도 앞으로 어떤 일이 발생할지 예측하는 것이 가능하다.

$\to$ 왜 우리는 데이터가 생성되는 과정을 알 수 없을까. 가령, 자동차 충돌 테스트를 실제로 수천 번 하는 대신, 잘 학습된 시뮬레이션 모델(함수)을 돌려서 결과를 예측해볼 수 있다. 하지만 이도 역시 인간이 만들어낸 변수들의 인과관계로써 도출되는 결과이다.

아파트 가격은 평수, 위치, 층수뿐만 아니라, 그날의 경제 뉴스, 구매자의 기분, 옆집의 소음, 전 집주인의 관리 상태 등 무한한 변수가 얽혀서 결정된다. 이것이 실제 데이터의 생성 과정이다. 반면, 우리는 고작 평수, 위치, 층수 정도의 숫자만 가지고 있다. 이를 제외한 나머지 변수들이 어떻게 작용했는지 우리는 알 수 없고, 만약 나머지 변수를 안다 하더라도 변수들간에 관계가 너무나 비선형적이고 복잡하기 때문에 완벽한 수학 공식을 세우는 것은 불가능하다. 진짜 만약에 그 복잡한 관계까지 전부 알고 있다 하더라도, 무작위성이나 측정 오차가 존재한다. 가령, 동전을 던지는 힘과 각도를 나노 단위까지 정확히 알아도, 공기의 미세한 흐름이나 바닥의 요철 때문에 결과 달라질 수 있다. 이 알 수 없는 오차때문에 우리는 데이터 생성 과정을 결정론적으로 기술할 수 없다. 이것이 근사(Approximation)나 추정(Estimation)이라는 단어를 쓰는 이유이다.

$\quad$ 이제 문제의 핵심인 머신러닝의 학습(learning) 요소에 대해 다룬다. 우리에게 데이터셋과 적절한 모델이 주어졌다고 가정해보자. 모델을 학습(training) 시킨다는 것은, 모델이 학습 데이터를 얼마나 잘 예측하는지 평가하는 효용 함수(utility function)를 기준으로 삼아, 가지고 있는 데이터를 활용해 모델의 파라미터를 최적화하는 것을 의미한다. 대부분의 학습 방법론은 산 정상에 도달하기 위해 언덕을 오르는 과정에 비유할 수 있다. 이 비유에서 산 정상은 우리가 원하는 성능 지표의 최댓값에 해당한다. 하지만 실제 상황에서 우리의 관심사는 모델이 미지의 데이터(unseen data)에 대해서도 잘 작동하는 것이다. 이미 본 데이터(학습 데이터)에서 성능이 좋다는 것은 단순히 데이터를 달달 암기(memorize)하는 좋은 방법을 찾았다는 의미일 수도 있다. 하지만 암기는 미지의 데이터에 대한 일반화(generalization) 성능을 보장하지 않으며, 실제 애플리케이션에서는 머신러닝 시스템이 이전에 겪어보지 못한 상황에 노출되어야 하는 경우가 빈번하다.
$\quad$ 이 책에서 다루는 머신러닝의 주요 개념을 요약하면 다음과 같다.

  • 우리는 데이터를 벡터(vector)로 표현한다.
  • 우리는 확률론적(probabilistic) 관점이나 최적화(optimization) 관점을 사용하여 적절한 모델을 선택한다.
  • 우리는 학습에 사용되지 않은 데이터에서도 모델이 잘 작동하도록 하는 것을 목표로, 수치 최적화(numerical optimization) 방법론을 사용해 가용 데이터로부터 학습한다.

$\to$ LLM은 방대한 데이터를 학습하여 일반화를 흉내내지만, 그 수준이 너무 높아 실질적인 일반화와 구분하기 어려운 고도의 과적합 모델이며, 이는 내삽에 가깝다. 왜냐하면 LLM은 가장 그럴듯한 다음 단어를 예측하도록 학습하기 때문이다. $E=mc^2$ 가 발견되기 전의 데이터로 학습한 LLM에게 에너지와 질량의 관계를 물으면 당시의 상식으로 둘은 별개라고 답할 확률이 높다. 패러다임의 전환은 확률적 패턴 매칭으로 도달하기 어렵기 때문이다. 아인슈타인은 텍스트를 많이 읽어서 상대성 이론을 만든 게 아니다. ‘빛의 속도로 달리면 거울 속의 내 얼굴이 보일까?’라는 사고실험(외삽)과 물리적 직관을 통해 이론을 도출했다.

$\to$ LLM은 ‘사과’라는 단어와 ‘떨어진다’라는 단어가 자주 같이 나온다는 통계적 관계는 알지만, 실제 중력의 물리적 느낌이나 인과관계를 경험한 적이 없다. 이를 그라운딩 문제라고 한다. AI가 이러한 문제를 해결하기 위해서는 확률적 답변보다 단순 호기심에서 나오는 창의적인 가설들에 집중해야 한다고 생각이 든다. 아이가 눈앞에 세상을 바라보며 모든 것을 배우는 것처럼 말이다.