P2-1.2 수식, 코드, 데이터가 만나는 자리¶
Section ID:
P2-1.2Version:v2026.07.20
P2-1.1에서는 수학을 AI 계산을 읽는 언어로 봤습니다. 이제 그 언어가 실제 학습에서 어디에 놓이는지 봅니다. AI를 공부할 때 수식(formula), 코드(code), 데이터(data)는 따로 떨어진 것이 아닙니다. 같은 계산을 서로 다른 방식으로 보여 주는 세 얼굴에 가깝습니다.
- 수식은 계산 구조를 압축합니다.
- 코드는 계산 절차를 실행합니다.
- 데이터는 계산 대상과 결과를 제공합니다.
여기서는 수식과 코드와 데이터가 같은 계산을 가리킨다는 구조를 보여 줍니다.
뒤에서 평균, 벡터, 손실, 그래디언트 수식을 보더라도 이 식이 어떤 데이터에 적용되고, 코드에서는 어디서 실행되는가를 함께 읽을 수 있어야 합니다.
여기서는 수식(formula), 코드(code), 데이터(data), 출력(output), shape를 함께 정리합니다. 1.1에서 수학을 계산 언어로 보는 이유를 먼저 잡았다면, 그 계산 언어가 문서, 코드 셀, 실제 값 안에서 어떻게 같은 계산을 가리키는지 정리합니다.
먼저 붙잡을 공통 장면¶
앞 절에서 본 작은 표를 그대로 가져옵니다.
| 학생 | 공부 시간 x | 퀴즈 점수 y |
|---|---|---|
| A | 1시간 | 55점 |
| B | 2시간 | 65점 |
| C | 3시간 | 80점 |
| D | 4시간 | 90점 |
이 표는 Chapter 1에서 수식, 코드, 데이터가 만나는 가장 작은 장면으로 쓸 수 있습니다.
- 데이터로 보면
x와y라는 두 열이 있는 작은 표입니다. - 수식으로 보면 평균(mean), 함수(function), 오차(error)를 적어 볼 수 있는 재료입니다.
- 코드로 보면 리스트(list), 배열(array), 변수(variable)로 옮겨 계산할 수 있는 입력입니다.
독자가 여기서 놓치기 쉬운 점은 표, 수식, 코드가 각자 다른 공부 주제처럼 보인다는 것입니다. 하지만 실제로는 같은 장면을 다른 표면에서 읽고 있을 뿐입니다. 이 절은 그 대응 관계를 고정하는 데 목적이 있습니다.
핵심 기준: 수식, 코드, 데이터가 만나는 자리¶
- 수식(formula)을 계산의 압축 표현으로 읽을 수 있습니다.
- 코드(code)를 수식을 실행 가능한 절차로 옮긴 것으로 볼 수 있습니다.
- 데이터(data)를 계산에 들어가는 값과 계산 뒤 확인할 결과로 볼 수 있습니다.
- 작은 평균 계산을 수식, 코드, 데이터 관점으로 나누어 설명할 수 있습니다.
- 이후 Section에서 수식 표기와 Python 실습을 오갈 준비를 합니다.
세 가지 기준¶
여기서는 수학과 프로그래밍이 만나는 지점을 보여 줍니다. 본문을 읽을 때 기준이 되는 세 가지 관점은 다음과 같습니다.
| 기준 | 왜 중요한가 | 이 절에서 필요한 이해 수준 |
|---|---|---|
같은 계산도 수식, 코드, 데이터로 다르게 보일 수 있다는 점 | 그래야 표현이 달라도 같은 내용을 읽고 있다는 감각이 생깁니다. | 평균 하나를 세 방식으로 설명할 수 있다고 이해합니다. |
수식은 계산 구조를 압축하고 코드는 실행 순서를 펼친다는 점 | 문서와 예제 코드가 왜 서로 다르게 생기는지 이해하게 해 줍니다. | 무엇을 더하고 나누는지, 코드에서 어떤 순서로 실행하는지 읽는다고 이해합니다. |
결과는 숫자만 보는 것이 아니라 문맥에서 다시 해석해야 한다는 점 | 머신러닝 지표와 손실을 읽을 때 바로 연결됩니다. | 평균 2.5가 무엇을 뜻하는지 한 문장으로 설명할 수 있다고 이해합니다. |
같은 계산을 세 방식으로 본다¶
가장 단순한 예로 평균(mean)을 봅니다. 평균은 여러 값을 더한 뒤 개수로 나누는 계산입니다.
앞의 표에서 점수 열만 꺼내면 데이터는 55, 65, 80, 90입니다.
수식으로 쓰면 다음과 같습니다.
코드로 쓰면 다음과 같습니다.
문제 상황:
- 같은 평균 계산도 수식에서 코드로 옮기면 어떤 실행 순서로 펼쳐지는지 바로 연결되지 않을 수 있다
입력(input):
- 값 목록
scores = [55, 65, 80, 90]
기대 출력(output):
- 평균값
72.5
확인할 개념:
- 코드의
sum(scores) / len(scores)는 평균 수식을 실행 순서로 풀어 쓴 표현이다 - 수식, 코드, 데이터는 모양이 달라도 같은 계산을 가리킬 수 있다
실행 결과 예시:
세 표현은 서로 다르게 보이지만 같은 일을 합니다.
- 데이터(data):
55, 65, 80, 90라는 점수 묶음입니다. - 수식(formula): 값을 더하고 개수로 나누는 구조를 압축합니다.
- 코드(code): 실제 계산 순서를 컴퓨터가 실행하게 합니다.
- 결과(output): 계산이 끝난 뒤 확인하는 값입니다.
이 관점이 중요합니다. AI 문서에서 수식만 보면 추상적으로 보이고, 코드만 보면 라이브러리 사용법처럼 보이고, 데이터만 보면 숫자 목록처럼 보입니다. 세 가지를 연결해야 “무엇을 계산하고 있는가”가 보입니다.
이 예시가 좋은 이유는 뒤에서 같은 표를 다른 질문으로 다시 읽을 수 있기 때문입니다. 평균 점수는 하나의 요약값이고, x와 y의 관계는 함수와 예측의 문제이고, 예측값과 실제값의 차이는 손실의 문제입니다. 즉 하나의 데이터 장면이 Chapter 1의 여러 설명을 묶는 기준점이 됩니다.
수식은 이름을 붙이고 관계를 줄인다¶
수식에서 가장 먼저 볼 것은 기호의 정확한 모양이 아니라 이름과 관계입니다.
이 식은 복잡해 보이지 않지만 AI 문서에서 매우 중요한 기본 구조입니다.
x: 입력(input)입니다.f: 입력을 출력으로 바꾸는 함수(function) 또는 모델(model)입니다.y: 출력(output)입니다.
머신러닝 문맥에서는 입력 데이터 x가 모델 f를 지나 출력 y가 된다고 읽을 수 있습니다.
앞의 표에 바로 붙이면 x는 공부 시간, y는 점수입니다. 아직 복잡한 모델이 없어도 공부 시간을 넣으면 점수를 예측하는 함수라는 생각 실험만으로 입력-변환-출력 구조를 잡을 수 있습니다.
코드로는 다음처럼 나타날 수 있습니다.
문제 상황:
- 수식
y = f(x)를 읽어도 실제 코드에서 어떤 형태로 보이는지 감이 바로 오지 않을 수 있다
입력(input):
- 입력값
x - 입력을 출력으로 바꾸는 모델 또는 함수
model
출력(output):
- 모델 실행 결과
y
확인할 개념:
- 수식의 입력-변환-출력 관계는 코드에서도 같은 구조로 표현된다
- 이 예제는 계산 자체보다 관계 표현을 읽는 연습에 목적이 있다
여기서 수식과 코드는 완전히 같은 문법은 아닙니다. 하지만 둘 다 “입력이 어떤 변환을 거쳐 출력이 된다”는 관계를 보여 줍니다. 이 관계를 읽을 수 있으면, 이후에 등장하는 모델(model), 예측(prediction), 손실(loss), 학습(learning)의 위치를 잡기 쉬워집니다.
데이터는 계산 가능한 모양으로 들어간다¶
현실의 데이터는 보통 바로 계산되지 않습니다. 문장, 이미지, 표, 로그는 먼저 계산 가능한 값으로 바뀝니다.
예를 들어 문장 "AI를 다시 공부한다"는 토큰(token), 숫자 ID, 벡터(vector)로 바뀔 수 있습니다. 이미지는 픽셀(pixel), 숫자 배열(array), 텐서(tensor)로 이어지고, 표 데이터는 행(row)과 열(column)을 기준으로 배열(array), 행렬(matrix), 데이터프레임(DataFrame) 형태로 들어갑니다.
이때 데이터의 모양(shape)이 중요해집니다. 값이 하나인지, 값의 목록인지, 행과 열을 가진 표인지, 여러 축(axis)을 가진 배열인지에 따라 코드와 수식이 달라집니다.
문제 상황:
- 숫자가 같아 보여도 값 하나, 벡터, 행렬은 계산에서 서로 다른 모양으로 다뤄진다
입력(input):
- 스칼라에 가까운 배열
one_value - 1차원 배열
vector - 2차원 배열
matrix
기대 출력(output):
- 각 배열의
shape값
확인할 개념:
- 데이터의 모양(shape)은 계산 가능한 구조를 구분하는 기본 정보다
- NumPy는 같은 숫자라도 축과 차원이 다른 배열을 구분해 보여 준다
실행 결과 예시:
이 예시는 깊은 NumPy 사용법을 배우기 위한 것이 아닙니다. 같은 숫자라도 어떤 모양으로 담느냐에 따라 계산의 의미가 달라진다는 점을 확인하기 위한 예시입니다.
앞의 공부 시간-점수 표도 마찬가지입니다. 점수 열 하나만 보면 1차원 벡터처럼 다룰 수 있지만, x와 y를 함께 보면 두 열을 가진 표 구조가 됩니다. 나중에 X와 y를 분리하거나 shape를 확인하는 이유도 결국 어떤 질문을 하려는 데이터인가를 계산 가능한 모양으로 바꾸기 위해서입니다.
코드는 수식을 실행 가능한 절차로 바꾼다¶
수식은 계산 구조를 짧게 보여 주지만, 실제 실행을 하려면 코드가 필요합니다. 예를 들어 평균을 수식으로 쓰면 간단합니다.
하지만 코드에서는 데이터가 어디에 있는지, 몇 개인지, 어떤 함수로 더할지, 결과를 어디에 저장할지 결정해야 합니다.
문제 상황:
- 시그마가 들어간 평균 수식은 짧지만, 코드에서는 계산 단계를 더 잘게 나눠 적어야 할 수 있다
입력(input):
- 점수 목록
scores = [55, 65, 80, 90]
출력(output):
- 개수
n - 전체 합
total - 평균
mean
확인할 개념:
- 코드에서는 수식의 한 줄이 여러 중간 변수와 실행 단계로 펼쳐질 수 있다
- 계산 결과뿐 아니라 중간 변수도 수식 해석을 돕는 관찰 지점이 된다
실행 결과 예시:
코드는 수식보다 길어질 수 있습니다. 대신 코드에는 실행 순서가 드러납니다. 즉 값을 준비하고, 개수를 세고, 합을 구한 뒤, 합을 개수로 나누고, 마지막으로 결과를 저장하는 순서입니다. 여기서 4, 290, 72.5를 차례대로 보면, 시그마가 들어간 한 줄 수식이 코드에서는 어떤 중간 단계로 펼쳐지는지 바로 확인할 수 있습니다.
같은 장면을 더 밀어 보면, 나중에는 study_hours = [1, 2, 3, 4], quiz_scores = [55, 65, 80, 90]처럼 입력과 출력을 나눠 저장하게 됩니다. 그때부터 평균 계산만이 아니라 관계를 설명하는 모델 계산으로 자연스럽게 넘어갑니다.
AI 학습에서도 같은 일이 일어납니다. 논문이나 교재에는 손실 함수(loss function)가 짧은 수식으로 나오지만, 실제 코드에서는 데이터 로딩, 전처리(preprocessing), 모델 실행, 손실 계산, 파라미터 업데이트가 여러 줄로 펼쳐집니다.
결과는 다시 해석해야 한다¶
계산이 끝났다고 이해가 끝나는 것은 아닙니다. 결과(output)는 다시 문제 문맥에서 해석해야 합니다.
평균이 72.5라면, 네 학생 점수의 중심이 대략 72.5점 근처에 있다는 뜻입니다.
머신러닝에서도 마찬가지입니다.
손실이 0.2라면, 모델 출력과 기준 사이의 차이를 어떤 방식으로 계산했을 때 0.2가 나왔다는 뜻입니다.
정확도가 90%라면 평가 데이터 중 90%를 맞혔다는 뜻입니다. 다만 어떤 데이터를 틀렸는지는 별도로 봐야 합니다.
숫자 결과는 자동으로 의미가 되지 않습니다. 결과가 어떤 데이터에서 나왔는지, 어떤 수식으로 계산되었는지, 어떤 코드가 실행되었는지 함께 확인해야 합니다.
작은 학습 흐름으로 연결하기¶
AI 학습을 아주 작게 줄이면 데이터를 준비하고, 모델에 입력하고, 출력을 얻고, 기준과 비교해 손실을 계산한 뒤, 파라미터를 조정하고, 이 과정을 반복하는 흐름으로 볼 수 있습니다.
이 흐름은 수식, 코드, 데이터가 모두 들어가는 자리입니다.
- 데이터는 입력(input)과 기준(target)을 제공합니다.
- 수식은 모델 출력, 손실, 업데이트 방향을 표현합니다.
- 코드는 이 계산을 실제 순서로 실행합니다.
- 결과는 성능(metric), 손실(loss), 예측(prediction)으로 확인됩니다.
Part 2에서 수학과 Python을 함께 다루는 이유가 여기에 있습니다. 수식만 보면 실행이 보이지 않고, 코드만 보면 계산의 의도가 흐려질 수 있습니다. 데이터만 보면 모델이 무엇을 배우는지 보이지 않습니다.
사례 및 예시¶
사례 1. 평균 계산 하나도 수식, 코드, 데이터가 따로 놀 수 있다¶
학습자가 평균(mean) 계산을 볼 때 수식은 이해한 것 같은데, 코드 셀로 옮기면 왜 sum(scores) / len(scores)가 나오는지 바로 연결되지 않을 수 있습니다. 반대로 코드만 보면 계산은 되지만, 왜 그 순서로 더하고 나누는지 놓치기 쉽습니다.
이때 데이터 55, 65, 80, 90를 실제로 놓고 보면 세 표현이 한 자리에 모입니다. 데이터는 계산 대상이고, 수식은 모두 더하고 개수로 나눈다는 구조를 압축하며, 코드는 그 구조를 실제 실행 순서로 펼칩니다. 출력 72.5는 다시 원래 점수들의 중심이 어디쯤인지 해석하게 합니다.
이 사례는 왜 Part 2에서 수식과 Python을 분리하지 않는지를 보여 줍니다. 같은 계산을 세 방식으로 오가 볼 수 있어야, 뒤에서 나오는 벡터, 행렬, 손실, 확률 계산도 표현이 다를 뿐 같은 구조라는 감각으로 읽을 수 있습니다.
즉 평균 예제는 단순한 산수 연습이 아니라, AI 학습 전체를 읽는 기본 틀의 축소판입니다. 수식은 계산 구조를, 코드는 실행 절차를, 데이터는 계산의 재료와 해석 대상을 담당합니다. 이 자리 구분은 뒤 장의 벡터, 행렬, 손실, 확률 계산으로 그대로 이어집니다.
체크리스트¶
- 수식(formula), 코드(code), 데이터(data)가 같은 계산을 서로 다른 방식으로 표현할 수 있음을 설명할 수 있다.
y = f(x)를 입력(input), 함수(function), 출력(output)의 관계로 읽을 수 있다.- 데이터의 모양(shape)이 계산 방식에 영향을 준다는 점을 설명할 수 있다.
- 코드가 수식을 실행 가능한 절차로 바꾼다는 점을 설명할 수 있다.
- 계산 결과(output)는 데이터, 수식, 코드, 문제 문맥과 함께 해석해야 함을 설명할 수 있다.
- 수학은 코드로 확인하고, 코드는 데이터로 검증하며, 결과는 다시 수식과 문제 정의로 돌아가 해석한다는 흐름을 설명할 수 있다.
- 수식, 코드, 데이터가 분리되어 보일 때 같은 계산의 다른 표현으로 다시 묶어 읽을 수 있다.
출처와 참고 자료¶
- Marc Peter Deisenroth, A. Aldo Faisal, Cheng Soon Ong, Mathematics for Machine Learning, Cambridge University Press, 2020, 확인 날짜: 2026-07-19.
- Ian Goodfellow, Yoshua Bengio, Aaron Courville, Deep Learning, MIT Press, 2016, 확인 날짜: 2026-07-19.
- Charles R. Harris et al., Array Programming with NumPy, Nature, 2020, 확인 날짜: 2026-07-19.
- NumPy Developers, numpy.ndarray.shape, NumPy User Guide, 확인 날짜: 2026-07-19.
shape를 배열 차원과 길이 정보로 설명하는 부분의 직접 참고 자료입니다. - scikit-learn developers, Glossary of Common Terms and API Elements, scikit-learn User Guide, 확인 날짜: 2026-07-19.
X를 입력 데이터,y를 target으로 읽는 관례를 확인하는 참고 자료입니다.