Skip to content

3부. 다시 셈으로 돌아가기: FQNM의 직관

도입: 왜 다시 셈으로 돌아가려 하는가

Section titled “도입: 왜 다시 셈으로 돌아가려 하는가”

앞의 두 장은 왜 컴퓨터가 계산기를 둘로 품게 되었는지, 그리고 부동소수점 오차가 왜 피할 수 없는 ‘구조적 비용’인지를 다루었다. 부동소수점 계산은 연속적인 수학의 언어를 기계 위에서 흉내 낼 수 있다는 강력한 혜택을 주지만, 그 근사표현과 누적 오차라는 대가를 지불해야 한다.

여기서 자연스럽게 하나의 질문이 떠오른다. 부동소수점(실수)을 더 정밀하게 흉내 내는 대신, 애초에 계산 규칙을 블록의 개수를 세는 방식(정수 연산)으로 다시 구현할 수는 없을까?

연속적인 값을 근사하는 계산기(FPU)가 필요하다는 사실과, 모든 물리적 변화를 끝까지 FPU 중심으로 계산해야 한다는 주장은 같은 말이 아니다. 컴퓨터가 가장 잘하는 방식인 ‘카운팅과 정수 이동’을 계산의 중심에 다시 세운다면, 어떤 종류의 계산은 연산 오차의 누적 없이 더 안정적으로 구현할 수 있다.

FQNM(Fast Quantised Numerical Method, 고속 양자화 수치 방법론)은 바로 이 지점을 파고드는 대안이다.

바람에 무너지는 모래성을 상상해보자. 0.01kg까지만 잴 수 있는 저울을 써서 1초마다 모래성의 무게 변화를 잰다고 해보자. 이 상황에서 우리는 매 순간 모래성이 어느 정도의 양으로 줄어드는지를 오차 없이 정확히 재고 예측하기 어렵다.

그렇다면, 모래성 대신 작은 블록들을 쌓는 것은 어떨까? 작은 블록들은 명확하게 개수를 ‘셀 수’ 있다. 하지만 바람에 무너져 내리는 과정은 어떻게 표현할 것인가? 우리는 위치마다 바람의 강도나 높이 차이 등에 따른 이동 규칙표를 만들 수 있다. 시간이 지남에 따라 각 위치에서 몇 개의 블록이 이웃 칸으로 굴러떨어질지를 기록하는 것이다.

여기서 중요한 것은, 바람이 날려보내는 모래의 흐름이라는 연속적인 현상을 참조표를 써서 명백한 ‘블록 개수의 변화 규칙’으로 표현했다는 점이다.

블록 언덕과 참조표를 이용한 전환형 비유

모래성을 블록으로 근사한다면? 가까이서는 블록과 참조표가 보이고, 멀리서는 하나의 모래성처럼 보이지만, 내부 계산은 끝까지 같은 참조 규칙으로 돌아간다는 점을 보여주기 위한 비유다.

이 GIF는 세 가지 시점을 한 번에 보여준다.

  1. 가까이서 보면, 언덕은 매끈한 곡면이 아니라 일정한 크기의 블록이 쌓인 계단으로 보인다.
  2. 바로 옆의 참조표는 “이번 턴에 블록 몇 개를 옆 칸으로 보낼지”를 정한다.
  3. 멀리서 보면, 그 딱딱한 블록들의 이동이 다시 하나의 부드러운 언덕의 변화처럼 인식된다.

이 비유에서 블록은 단순히 “연속된 값을 잘게 쪼갠 표현”을 뜻한다. 매끈한 높이를 실수로 계속 저장하는 대신, 알갱이 같은 블록 몇 개로 상태를 나타내는 것이다. 이를 **값의 양자화(Quantization of state)**라고 한다.

하지만 FQNM에서 더 중요한 것은 참조표 쪽이다. 여기서는 “현재 상태라면 이번 한 스텝에서 몇 개를 옮길까”를 표로 정한다. 즉, 변화 규칙 자체가 매번 실수의 미분을 계산하는 방식이 아니라, *낱개의 이동 규칙(정수 연산)*으로 바뀐다. 이를 **연산자의 양자화(Quantization of operator)**라고 한다.

이 차이가 핵심이다. 상태 값만 정수로 저장해놓고 실제 업데이트 계산은 여전히 부동소수점과 실수 미분으로 처리한다면, 기본적인 계산 철학은 달라지지 않는다. 반면에 FQNM이 겨냥하는 쪽은 상태뿐만 아니라 변화를 만드는 원천 규칙까지 정수 기반의 이동으로 옮기는 것이다. 그래서 이 이론을 직관적으로 이해하려면 “미분하여 값이 얼마만큼 변했는가”를 쫓기보다 **“이웃한 칸 사이에 블록이 몇 개나 이동하는가”**를 먼저 상상하는 편이 정확하다.

멀리서 보면 왜 다시 연속처럼 보이는가

Section titled “멀리서 보면 왜 다시 연속처럼 보이는가”

여기서 오해하면 안 되는 점이 하나 있다. 멀리서 매끄러운 언덕처럼 보인다고 해서, 내부의 계산 로직이 다시 연속 미분으로 슬그머니 돌아가는 것은 아니다. 내부는 끝까지 블록과 표가 지배하는 이산적인(discrete) 세계다. 다만 그 미시적인 이동 규칙을 충분히 큰 스케일에서 모아보면, 거시적으로는 연속적인 흐름으로 해석될 수 있다는 뜻이다.

이런 맥락에서 볼 때 FQNM에서 ‘미분’이나 ‘유속의 발산(flux-divergence)‘은 처음부터 주어지는 근본적인 재료가 아니다. 시스템의 토대를 이루는 진짜 실체는 정수 상태와 이웃 칸 사이의 이동 규칙이다. 미분처럼 보이는 부드러운 변화는 모든 알갱이들의 움직임을 모아 전체 윤곽을 복원했을 때 비로소 나타나는 거시적인 흐름이자, 계산이 끝난 뒤에 이끌어내는 해석일 뿐이다.

결국 이 장의 핵심은 수치 계산에서 미분을 단순히 버리겠다는 것이 아니라, 미분으로 대변되는 모든 변화를 가장 밑바닥의 정수 규칙에서부터 다시 세워보려는 시도에 있다. 어렵게 말하면, 특정한 종류의 보존 동역학에서는 인접한 칸 끼리의 이동 규칙을 정수 상태로 세우고, 나중에 그 거동을 연속적인 현상으로 해석하는 방식이 가능하다.

이제 다시 전산학의 질문으로 돌아가 보자. 현대 수치 계산은 오랫동안 연속적인 값을 근사하는 데 특화된 FPU를 중심에 놓고 발전해 왔다. “연속적인 세계를 더 정밀하게 흉내 내는 계산기”를 향해 달려온 것이다.

FQNM이 흥미로운 이유는 여기서 방향을 튼다는 데 있다. 애초에 컴퓨터 내부에 존재하는 더 빠르고 완벽하게 오차 없는 계산 장치, 즉 부동소수점의 근사나 오차 낭비 없이 개수를 세는 것에 완벽한 **ALU(산술 논리 장치)**의 세계로 물리 엔진의 일부를 끌고 오는 것이 사실 정답일수 있지 않을까?

  • FQNM의 본질은 “연속된 실수를 얼마나 더 정교하게 근사할 것인가”가 아니라, **“계산의 밑바닥 규칙 자체를 다시 셈법(카운팅)으로 교체할 수 있는가”**를 묻는 것이다.
  • 이를 위해 상태 값뿐만 아니라 **이웃 간의 이동 규칙(연산자)**까지 참조표 기반의 정수로 바꾼다.
  • 이 과정은 결국 복잡하고 오차에 시달리는 FPU 중심 시스템에서, 컴퓨터가 가장 잘하는 영역인 ALU 중심으로 계산 패러다임을 넓히려는 시도와 맞닿아 있다.