본 챕터 분석은 가이드북의 집필 스타일 가이드인 **Basecamp (직관적 비유) → Architect's Challenge (엔지니어링 트레이드오프) → Math Debugging (수학적 진단) → Schema (구현 및 시각화)**의 흐름을 엄격히 따르며, 각 단계마다 외부 연구 자료를 통합하여 논의를 확장한다.
"수는 인류가 발명한 최초의 손실 압축(Lossy Compression) 알고리즘이다."
인류의 지적 역사에서 수의 발명은 불의 발견만큼이나 혁명적인 사건이었다. 가이드북은 이를 "사과 2개"에서 "2"를 떼어내는 과정으로 설명한다. 이를 인지과학적 관점에서 조금 더 깊이 들여다보자.
원시 인류가 숲에서 사과 두 개와 토끼 두 마리를 보았을 때, 이 두 그룹은 감각적으로 완전히 다른 경험이다. 사과는 붉고, 둥글고, 달콤한 향기가 나며 움직이지 않는다. 반면 토끼는 털이 있고, 따뜻하며, 빠르게 움직인다. 초기 인류의 뇌는 이들을 별개의 감각 데이터로 처리했다. 그러나 어느 순간, 누군가가 이 서로 다른 두 대상 사이에 **'양(Quantity)'**이라는 공통된 추상적 속성이 있음을 깨닫는다.
이 순간 **추상화(Abstraction)**가 일어난다. 추상(Abstract)의 어원은 라틴어 abstrahere로, "먼 곳으로 끌어내다(to draw away)"라는 뜻을 가진다.2 즉, 대상이 가진 구체적인 성질(색깔, 모양, 생명 유무)을 버리고(Information Loss), 오직 '개수'라는 하나의 속성만을 추출해 낸 것이다. 이것은 뇌의 정보 처리 부하를 획기적으로 줄여주는 압축 기술이다. 우리가 "사과 2개, 토끼 2마리" 대신 "2"라는 기호를 사용하는 순간, 뇌는 더 이상 사과의 붉은색이나 토끼의 귀 모양을 기억할 필요 없이, "2"라는 단 하나의 심볼만 저장하면 된다. 이는 튜링 머신(Turing Machine)으로서의 인간이 외부 정보를 효율적으로 처리하기 위해 고안한 최초의 소프트웨어적 진화라 할 수 있다.5
현대 사회의 마트 계산대는 이러한 수의 추상화 능력이 극대화된 현장이다. 장바구니 속에는 우유(액체), 배추(식물), 냄비(금속) 등 물리적으로 전혀 섞일 수 없는 이질적인 물체들이 담겨 있다. 현실 세계에서 우유와 냄비를 '더하는' 것은 불가능하다. 하지만 계산대(System)를 통과하는 순간, 바코드 리더기는 물건의 물리적 속성을 모두 제거하고 오직 **가격(Price)**이라는 수치 데이터만을 읽어낸다.
이제 이질적인 두 대상은 **수(Number)**라는 동일한 차원의 데이터로 변환되었으므로, 덧셈 연산()이 가능하다. 수는 세상을 계산 가능한(Computable) 상태로 만든다. 이 과정에서 '맛'이나 '용도' 같은 정보는 소실되지만, '경제적 가치 합산'이라는 목적은 완벽하게 달성된다. 이것이 바로 엔지니어링에서 말하는 **목적 지향적 압축(Task-oriented Compression)**이다.
이 비유는 현대 AI 모델이 이미지를 처리하는 방식과 정확히 일치한다. 컨볼루션 신경망(CNN)이 고양이 사진을 볼 때, 모델은 고양이의 귀여움이나 털의 부드러움을 느끼지 않는다. 모델은 이미지를 RGB 픽셀 값(0~255 사이의 숫자)의 배열로 변환한다. 즉, AI에게 세상은 거대한 숫자의 행렬이다. 가이드북의 1장은 독자에게 "우리가 당연하게 여기는 숫자 '2'가 사실은 현실을 엄청나게 압축하고 걸러낸 결과물"이라는 사실을 상기시키며, AI 아키텍처 설계의 첫 단추인 **데이터 전처리(Preprocessing)와 특징 추출(Feature Extraction)**의 철학적 배경을 제공한다.
"현실을 하나의 숫자로 요약할 때, 우리는 무엇을 잃어버리는가? - 스칼라의 유혹과 함정"
Basecamp에서 수의 압축 능력을 찬양했다면, Architect's Challenge에서는 현업 엔지니어가 겪는 그 압축의 부작용, 즉 **트레이드오프(Trade-off)**를 냉철하게 분석한다.
시스템 아키텍처를 설계할 때, 엔지니어는 데이터를 어떻게 표현할지 결정해야 한다. 가장 간단한 형태는 스칼라(Scalar), 즉 단일 수치다.
사례: 영화 추천 시스템의 평점(Rating)
당신이 넷플릭스와 같은 영화 추천 시스템을 만든다고 가정하자. 영화에 대한 사용자의 반응을 저장해야 한다. 가장 쉬운 방법은 1점에서 5점 사이의 **별점(Scalar)**을 받는 것이다.
이 스칼라 표현은 시스템적으로 매우 효율적이다.
그러나 이 '극단적인 압축'은 치명적인 단점을 내포한다. 바로 맥락(Context)의 소실이다.
스칼라 값 '4.5'는 이 두 사용자의 의도를 전혀 구별하지 못한다. 두 평가는 수치적으로 동일(Identical)하게 취급되며, 이는 정교한 취향 분석이나 추천을 불가능하게 만든다. 이를 **"스칼라 붕괴(Scalar Collapse)"**라고 부를 수 있다. 복잡한 다차원의 정보를 1차원으로 강제 투영(Projection)하면서 정보의 해상도가 뭉개지는 현상이다.7
연구 자료 7에 따르면, 기상 예측 모델이나 복잡한 물리 시스템을 모델링할 때 고차원 예측 변수()를 단일 스칼라 변수()로 투영하는 기법들이 사용된다. 이는 모델의 해석 가능성(Interpretability)을 높이고 계산 비용을 줄여주지만, 필연적으로 "설명할 수 없는 잔차(Residual)"를 남긴다. 즉, 스칼라 모델은 전체 현상의 일부 특징(Feature)만을 포착할 뿐이며, 때로는 이러한 단순화가 모델의 성능 한계(Ceiling)로 작용한다.
아키텍트는 여기서 **"압축률(Compression Rate) vs 정보 보존(Information Retention)"**의 트레이드오프를 결정해야 한다.
AI 아키텍처 설계란 결국 이 스펙트럼 위에서 현재 하드웨어 자원과 서비스 목표에 맞는 최적의 지점을 찾는 과정이다.8
현대 거대 언어 모델(LLM) 시대에 접어들며, 이 스칼라 표현의 문제는 **양자화(Quantization)**라는 이슈로 더욱 심화된다. 모델의 크기가 너무 커지자, 엔지니어들은 스칼라의 정밀도(Precision)를 줄여 용량을 압축하기 시작했다.9
자료 9에 따르면, 스칼라 양자화(Scalar Quantization)는 정보 보존율이 98~100%에 달할 정도로 효율적이지만, 더 극단적인 이진 양자화(Binary Quantization)로 가면 탐색 깊이와 정확도 간의 트레이드오프가 뚜렷해진다. 아키텍트는 "어느 정도의 정확도 손실을 감수하고 비용(메모리, 속도)을 절감할 것인가?"라는 질문에 대해 수학적 근거를 가지고 답해야 한다. 이것이 Chapter 1이 던지는 현장의 도전 과제다.
"1 + 1 = 2가 아닐 수 있는 세계 - 시스템적 오류의 진단"
Architect's Challenge에서 제기된 문제를 해결하기 위해, 이제 수학의 눈으로 시스템 버그를 진단(Debug)한다.
순수 수학에서 수(Number)는 단위가 없는 추상적인 존재다. 는 언제나 참이다. 그러나 엔지니어링의 세계에서 모든 수는 물리적 차원(Dimension)을 내포한다.
코딩 상에서 a = 2, b = 2로 저장된 두 변수는 컴퓨터 입장에서 동일한 int 타입이므로 a + b 연산이 가능하다. 결과는 4가 나온다. 하지만 물리적으로 "2미터 + 2초"는 정의될 수 없는 연산이며, 그 결과값 4는 현실 세계에서 아무런 의미를 갖지 못하는 Garbage Data가 된다.
머신러닝 모델이 다양한 피처(키, 몸무게, 나이, 소득)를 입력받을 때, 이들의 단위와 스케일(Scale)이 제각각이라면 모델은 "키 180cm"가 "나이 30세"보다 6배 더 중요하다고 잘못 판단할 수 있다. 이는 단순한 수치 비교가 불러오는 오류다.
진단 솔루션: 정규화(Normalization)
이 문제를 해결하기 위해 우리는 정규화 과정을 거친다.11
모든 데이터를 0과 1 사이, 혹은 평균 0, 분산 1인 분포로 강제 변환함으로써 물리적 단위를 제거(De-dimensioning)하고, 순수한 수학적 비율(Ratio)로 환원시키는 것이다. 이를 통해 서로 다른 차원의 데이터들이 공정한 기준 위에서 비교되고 연산될 수 있게 된다. 이것이 딥러닝의 Batch Normalization이나 Layer Norm이 존재하는 근본적인 수학적 이유다.
수학의 실수(Real Number) 체계는 연속적(Continuous)이다. 0과 1 사이에는 무한한 수가 존재한다. 하지만 컴퓨터의 메모리는 유한하므로, 컴퓨터는 실수를 **부동소수점(Floating Point)**이라는 근사값으로 저장한다. 이는 본질적으로 이산적(Discrete)이다.
이로 인해 미세한 오차가 발생한다.
단일 연산에서는 무시할 수 있는 수준이지만, 딥러닝 모델처럼 수십 억 번의 연산(행렬 곱)이 누적될 경우 이 오차는 나비 효과(Butterfly Effect)를 일으켜 모델 학습을 발산(NaN 발현)시킬 수 있다.
또한, 자료 10에서 언급된 바와 같이 Binary Quantization 등을 사용할 경우, 미분 가능한 부드러운 곡면이 계단식으로 변형되면서 경사하강법(Gradient Descent)이 제대로 작동하지 않을 수 있다.
아키텍트는 이러한 **수치적 불안정성(Numerical Instability)**을 진단하고, 적절한 정밀도(fp32, fp16, bf16)를 선택하거나 Epsilon 값을 추가하여 0으로 나누는 오류를 방지하는 등의 방어적 설계를 해야 한다.
정보 이론의 관점에서, 수를 통한 압축은 손실 압축이다. 원본 데이터 를 스칼라 로 변환할 때, 상호 정보량(Mutual Information) 는 필연적으로 감소한다.
만약 의 엔트로피가 너무 낮으면(즉, 너무 심하게 압축하면), 모델은 를 복원하거나 에 기반한 추론을 할 수 없다. 이를 "Underfitting(과소적합)" 상태로 진단할 수 있다. 반대로 압축을 거의 하지 않으면(Raw Data 그대로 사용), 노이즈까지 모델링하게 되어 **"Overfitting(과중적합)"**과 차원의 저주에 빠진다.12 적절한 스칼라 표현(Feature Engineering)은 이 둘 사이의 균형점(Sweet Spot)을 찾는 수학적 최적화 과정이다.
"추상을 구체로: PyTorch Code와 텐서의 실체"
개념과 진단을 거쳐, 이제 실제로 코드로 구현되는 수의 모습을 확인한다. 가이드북은 독자가 직접 실행해 볼 수 있는 PyTorch 코드를 제공하여 추상적 개념을 구체적 경험으로 연결한다.
현실의 사물이 AI 모델의 입력 데이터(텐서)가 되기까지의 과정을 도식화한다.
** 현실에서 텐서로의 압축 파이프라인**
| 단계 (Stage) | 데이터 형태 (Data Type) | 예시 (Example) | 정보량 (Information) | 비고 |
| 1. 현실 (Reality) | 물리적 실체 (Object) | 🍎 사과 실물 | 무한대 () | 맛, 향, 원자 구조 포함 |
| 2. 인지 (Perception) | 감각 데이터 (Raw Data) | 이미지 (JPEG) | 고용량 (MB) | 픽셀들의 집합 |
| 3. 추상화 (Abstraction) | 특징 (Feature) | "빨갛다", "2개" | 저용량 (Bytes) | 불필요한 정보 제거 |
| 4. 수치화 (Digitization) | 스칼라/벡터 (Tensor) | torch.tensor(2.0) | 최소화 (32 bits) | 기계 연산 가능 형태 |
이 표는 Chapter 1의 핵심 메시지인 **"수 = 압축"**을 구조적으로 보여준다. 아래로 내려갈수록 정보량은 줄어들지만, 계산 효율성과 보편성은 증대된다.
많은 입문자가 PyTorch에서 스칼라를 다룰 때 혼란을 겪는다. 파이썬의 숫자와 텐서 스칼라는 메모리 구조와 동작 방식이 다르기 때문이다.4
Python
import torch
# --- 1. 스칼라 텐서 (0-d Tensor) 생성 ---
# 스칼라는 방향(축)이 없고 크기만 있는 점 데이터다.
scalar_tensor = torch.tensor(2.0)
print(f"값: {scalar_tensor}") # tensor(2.)
print(f"차원(ndim): {scalar_tensor.ndim}") # 0 (축이 없음)
print(f"모양(shape): {scalar_tensor.shape}") # torch.Size() (빈 리스트)
# --- 2. 스칼라 vs 1차원 벡터의 차이 ---
# [2.0]은 길이가 1인 벡터다. 스칼라와 엄연히 다르다.
vector_tensor = torch.tensor([2.0])
print(f"벡터 차원: {vector_tensor.ndim}") # 1 (축이 1개)
print(f"벡터 모양: {vector_tensor.shape}") # torch.Size()
# --- 3. 값 추출 (De-abstraction) ---
# 텐서라는 껍질(Wrapper)을 벗기고 Python Native 숫자로 돌아오기
#.item()은 오직 스칼라 텐서에서만 작동한다.[15]
py_val = scalar_tensor.item()
print(f"Python 값: {py_val}, 타입: {type(py_val)}") # <class 'float'>
# --- 4. 브로드캐스팅 (Broadcasting): 일반화의 힘 ---
# 스칼라는 차원이 없으므로, 어떤 차원의 텐서와도 연산이 가능하다.
# 이것이 '변수'가 일반화되는 원리다.
matrix = torch.tensor([, ]) # (2, 2) 행렬
result = matrix + scalar_tensor # (2, 2) + (0,) -> (2, 2)
# 스칼라 2가 행렬의 모든 요소에 더해진다.
print(f"브로드캐스팅 결과:\n{result}")
# [[3., 4.],
# [5., 6.]]
코드 분석 및 인사이트:
더 깊이 들어가면, 이 스칼라 텐서는 GPU 메모리 상에서 어떻게 존재할까? 스칼라 텐서는 비록 논리적으로는 0차원이지만, 실제로는 메모리 블록을 할당받고 메타데이터(Stride, Shape)를 가진다.17
반면 Python의 int 객체는 오버헤드가 크다. 따라서 수백만 개의 숫자를 처리할 때는 Python 리스트 대신 PyTorch 텐서나 NumPy 배열을 사용해야 **메모리 인접성(Locality)**과 SIMD(Single Instruction, Multiple Data) 병렬 연산의 이점을 누릴 수 있다. 이는 "수"를 다루는 방식이 소프트웨어 아키텍처의 성능을 좌우함을 보여준다.18
지금까지 우리는 *'00 AI 초등수학 가이드북'*의 Section 1과 Chapter 1을 가이드라인에 맞춰 상세히 분석했다. 이제 보고서의 깊이를 더하기 위해, 논의된 개념들이 현대 AI 연구 및 산업 현장에서 갖는 확장된 함의(Implications)를 2차, 3차 수준으로 심화해 본다.
최신 LLM(GPT-4 등)은 텍스트를 처리할 때 이를 **토큰(Token)**이라는 정수로 변환한다. 예를 들어 "Apple"은 12345라는 숫자가 된다. 이는 Chapter 1에서 다룬 "수 = 압축"의 원리가 텍스트 도메인에 적용된 것이다.
그러나 흥미로운 점은, LLM이 수학 연산에 취약하다는 사실이다. LLM에게 123 * 456을 물어보면 종종 틀린다. 그 이유는 LLM이 수를 **수량(Quantity)**이 아닌 **언어적 패턴(Pattern)**으로 학습하기 때문이다. 인간의 뇌가 수를 처리하는 영역(두정엽)과 언어를 처리하는 영역(측두엽)이 분리되어 있듯 2, AI 아키텍처에서도 '언어적 임베딩'과 '수리적 연산 모듈'을 결합하려는 시도(예: Toolformer, Wolfram Alpha 플러그인)가 진행 중이다. 이는 "수를 어떻게 추상화할 것인가?"에 대한 논의가 여전히 현재진행형임을 시사한다.
과거의 데이터베이스(RDBMS)는 스칼라 값(숫자, 문자열)의 정확한 일치(Exact Match)를 검색했다. (WHERE price = 2500)
그러나 현대의 **벡터 데이터베이스(Vector DB)**는 의미적 유사성(Semantic Similarity)을 검색한다. 여기서 데이터의 기본 단위는 스칼라가 아니라 고차원 벡터다.
수를 통한 추상화는 윤리적 문제를 야기하기도 한다. 복잡한 인간을 "신용점수 750점"이라는 하나의 스칼라로 압축할 때, 그 사람의 성실함이나 잠재력 같은 맥락은 소거된다. 이 스칼라 점수가 대출 승인 여부를 결정하는 알고리즘에 입력되면, 시스템은 인간을 차별할 수 있다.
자료 19은 이를 "다국어의 저주(Curse of Multilinguality)" 또는 데이터 불균형 문제와 연결 짓는다. 소수 집단의 데이터가 충분하지 않을 때, 모델은 다수 집단의 패턴으로 일반화(Generalization)해 버린다. 즉, "평균(Mean)"이라는 스칼라 통계량은 소수자(Outlier)를 지워버리는 폭력적인 압축이 될 수 있다. 따라서 AI 아키텍트는 데이터를 수치화할 때 발생하는 윤리적 정보 손실에 대해 끊임없이 경계해야 한다.
Chapter 1을 통해 우리는 다음을 배웠다.
진정한 AI 아키텍트는 복잡한 수식을 외우는 사람이 아니라, **"어떤 정보를 버리고 어떤 정보를 숫자로 남길 것인가?"**를 결정할 수 있는 사람이다. 이 결정이 모델의 성능, 효율성, 그리고 윤리성까지 좌우하기 때문이다. *'00 AI 초등수학 가이드북'*의 여정은 바로 이 통찰력을 기르는 과정이며, Section 1은 그 첫 번째 관문으로서 독자에게 '수를 보는 새로운 눈'을 선사한다.