콘텐츠로 이동

P2-2.1 변수(variable), 함수(function), 식(expression) 다시 읽기

Section ID: P2-2.1 Version: v2026.07.20

P2-1.2에서는 수식(formula), 코드(code), 데이터(data)가 같은 계산을 서로 다른 방식으로 보여 준다는 관점을 잡았습니다. 이제 수식을 읽을 때 가장 먼저 만나는 기본 표기를 복구합니다.

\[ x \]
\[ y = f(x) \]
\[ \mathrm{loss} = f(\mathrm{prediction}, \mathrm{target}) \]

이런 표기는 오래전에 배운 수학에서는 너무 기본이라 지나쳤을 수 있습니다. 하지만 AI 문서에서는 변수(variable), 함수(function), 식(expression)을 읽지 못하면 모델(model), 입력(input), 출력(output), 손실(loss), 파라미터(parameter)의 위치를 잡기 어렵습니다.

여기서는 수식 안의 기호가 “어떤 값”, “어떤 관계”, “어떤 계산”을 가리키는지 읽는 습관을 만드는 데 초점을 둡니다.

여기서는 변수(variable), 함수(function), 식(expression), 입력(input), 출력(output)을 다시 정리합니다. 1.2에서 수식, 코드, 데이터가 같은 계산의 다른 얼굴이라는 감각을 잡았다면, 그 계산을 읽는 최소 기호 문법을 정리합니다.

핵심 기준: 변수(variable), 함수(function), 식(expression) 다시 읽기

  • 변수(variable)를 값이나 데이터에 붙인 이름으로 읽을 수 있습니다.
  • 함수(function)를 입력을 출력으로 바꾸는 관계로 읽을 수 있습니다.
  • 식(expression)을 계산 가능한 관계나 절차의 압축 표현으로 볼 수 있습니다.
  • y = f(x)를 모델 실행(inference)의 가장 단순한 형태로 해석할 수 있습니다.
  • 코드의 변수와 수학 표기의 변수를 혼동하지 않고 연결할 수 있습니다.

세 가지 기준

본문을 읽을 때 기준이 되는 세 가지 관점은 다음과 같습니다.

기준 왜 중요한가 이 절에서 필요한 이해 수준
변수는 값 자체가 아니라 값을 가리키는 이름이라는 점 기호를 실체와 바로 혼동하지 않게 해 줍니다. 변수는 값을 담는 이름이라고 이해합니다.
함수는 입력을 출력으로 바꾸는 관계라는 점 모델과 규칙을 같은 구조 안에서 읽게 해 줍니다. y = f(x)를 입력-변환-출력 구조로 읽는다고 이해합니다.
식은 계산이나 관계를 짧게 적은 표현이라는 점 손실, 예측, 오차 수식이 무엇을 하는지 해석하는 출발점이 됩니다. 식은 계산 절차의 압축 표현이라고 이해합니다.

변수는 값을 가리키는 이름이다

변수(variable)는 값을 가리키는 이름입니다. 수학에서는 보통 x, y, n, w처럼 짧은 기호를 씁니다.

\[ x = 3,\quad y = 2,\quad n = 4 \]

여기서 x, y, n은 값 자체가 아니라 값을 가리키는 이름입니다. AI 문서에서는 변수 이름이 더 많은 의미를 품습니다. 예를 들어 x는 입력 데이터(input data), y는 정답 또는 목표값(target), w는 가중치(weight), b는 편향(bias), ŷ는 모델이 만든 예측값(prediction), L은 손실(loss)로 자주 쓰입니다.

기호는 문서마다 달라질 수 있습니다. 그래서 수식을 볼 때는 “이 글에서 이 기호를 무엇으로 정의했는가?”를 먼저 찾아야 합니다. 같은 x라도 어떤 문서에서는 하나의 값이고, 어떤 문서에서는 벡터(vector)이며, 어떤 문서에서는 데이터셋(dataset) 전체일 수 있습니다.

코드의 변수와 수학의 변수

Python 코드에서도 변수를 씁니다.

문제 상황: 수학의 변수와 코드의 변수가 어떻게 대응되는지 가장 단순한 예제로 확인합니다. 입력(input): 정수 값 두 개와 그 합을 담는 변수들입니다. 기대 출력(output): 출력은 없지만 변수 이름이 실제 값을 가리키는 구조가 만들어집니다. 확인할 개념: 코드의 변수도 값을 가리키는 이름이지만, 실행 중 재할당 가능한 구체적 저장 대상을 다룬다는 점을 봅니다.

1
2
3
4
5
6
# x와 y는 계산에 이름을 붙인 값입니다.
x = 3
y = 2

# total은 두 값을 더한 식의 결과입니다.
total = x + y

실행 결과 예시:

x는 3, y는 2, total은 5를 가리킨다.

수학의 변수와 코드의 변수는 닮았습니다. 둘 다 어떤 값을 이름으로 가리킵니다. 하지만 완전히 같지는 않습니다.

관점 수학의 변수 코드의 변수
주된 역할 관계를 간결하게 표현 값을 저장하고 실행 중 참조
값의 변화 문맥에 따라 고정 또는 변화 실행 흐름에서 재할당 가능
자료형 보통 문맥으로 추정 정수, 실수, 문자열, 배열 등 구체적 타입(type)이 있음
오류 정의가 모호하면 해석이 어려움 타입, shape, 이름 오류가 실행 중 발생

이 차이는 중요합니다. 수식에서는 x가 벡터라고만 설명해도 충분할 수 있지만, 코드에서는 x가 실제로 어떤 shape인지, 어떤 타입인지, 비어 있지는 않은지 확인해야 합니다.

문제 상황: 수학의 x를 코드 안의 실제 배열 값으로 바꾸어 shape과 타입까지 확인합니다. 입력(input): 값 세 개를 담은 NumPy 배열 x입니다. 기대 출력(output): 배열 값, shape, dtype이 출력됩니다. 확인할 개념: 코드의 변수는 이름만이 아니라 실제 값의 모양과 타입까지 함께 확인해야 한다는 점을 봅니다.

# 변수, 함수, 배열 속성을 통해 입력값과 계산 결과의 의미를 확인하는 예제입니다.
import numpy as np

# x는 여러 숫자를 담은 배열 변수입니다.
x = np.array([1, 2, 3])

print(x)

# shape와 dtype은 배열의 모양과 값 종류를 확인하는 관찰 포인트입니다.
print(x.shape)
print(x.dtype)

실행 결과 예시:

1
2
3
[1 2 3]
(3,)
int64

이 예시는 수학 표기의 x를 코드에서 확인 가능한 값으로 바꾸는 최소 예시입니다. 독자가 여기서 바로 봐야 할 것은 이름 x만으로는 충분하지 않고, 값 자체와 shape, dtype까지 함께 읽어야 한다는 점입니다.

함수는 입력을 출력으로 바꾸는 관계다

함수(function)는 입력(input)을 받아 출력(output)을 만드는 관계입니다.

\[ y = f(x) \]

이 식은 x가 들어가고, f라는 관계 또는 규칙을 지나, y가 나온다고 읽습니다.

AI 문맥에서는 f가 사람이 직접 만든 규칙일 수도 있고, 학습된 모델(model)일 수도 있습니다. 예를 들어 규칙 기반 함수라면 나이가 19 이상이면 성인으로 분류한다고 읽을 수 있고, 학습된 모델이라면 입력 특징을 바탕으로 구매 가능성을 예측한다고 읽을 수 있습니다.

코드에서는 둘 다 함수처럼 호출될 수 있습니다.

문제 상황: 규칙 기반 판단도 코드에서는 함수 호출 형태로 표현될 수 있음을 확인합니다. 입력(input): 나이를 받아 성인 여부를 반환하는 함수 is_adult와 입력 20입니다. 기대 출력(output): True가 출력됩니다. 확인할 개념: 함수는 입력을 받아 출력을 만드는 관계라는 점을 가장 단순한 규칙 예제로 봅니다.

1
2
3
4
5
6
# 변수, 함수, 배열 속성을 통해 입력값과 계산 결과의 의미를 확인하는 예제입니다.
def is_adult(age):
    # age는 판단할 입력값이고, True/False가 함수의 출력입니다.
    return age >= 19

print(is_adult(20))

실행 결과 예시:

True

모델도 넓게 보면 입력을 받아 출력을 만드는 함수처럼 다룰 수 있습니다.

문제 상황: 모델 호출도 함수 호출처럼 읽는 최소 형태를 봅니다. 입력(input): input_data를 받아 예측을 만드는 model(...) 호출식입니다. 기대 출력(output): 출력은 없지만 예측값을 변수 prediction에 담는 구조를 보여 줍니다. 확인할 개념: AI 문맥의 모델도 입력을 출력으로 바꾸는 함수처럼 읽을 수 있다는 점을 봅니다.

# input_data는 모델에 넣는 입력이고, prediction은 모델이 돌려주는 예측값입니다.
prediction = model(input_data)

다만 머신러닝 모델은 단순한 규칙 함수와 다릅니다. 모델 내부에는 학습된 파라미터(parameter)가 있고, 같은 함수 구조라도 학습 후 파라미터 값에 따라 출력이 달라집니다.

식은 계산 관계를 표현한다

식(expression)은 값, 변수, 연산자(operator), 함수가 모여 계산 관계를 표현한 것입니다.

\[ x + y \]
\[ 2x + 1 \]
\[ f(x) \]
\[ (\mathrm{prediction} - \mathrm{target})^2 \]

수학 문서에서는 식이 짧게 나오지만, 그 안에는 계산 순서가 들어 있습니다.

\[ (\mathrm{prediction} - \mathrm{target})^2 \]

이 식은 예측값에서 목표값을 빼고, 그 차이를 제곱해, 오차의 크기를 양수로 만든다고 읽을 수 있습니다.

코드로는 다음처럼 쓸 수 있습니다.

문제 상황: 수식 (prediction - target)^2를 코드 절차로 풀어 써서 계산합니다. 입력(input): 예측값 2.8, 목표값 3.0입니다. 기대 출력(output): 제곱 오차 값이 출력됩니다. 확인할 개념: 식은 추상 기호가 아니라 실제 계산 순서로 풀어 쓸 수 있는 표현이라는 점을 봅니다.

1
2
3
4
5
6
7
8
9
# prediction은 모델의 예측값, target은 비교할 실제값입니다.
prediction = 2.8
target = 3.0

# error와 squared_error는 예측이 실제값에서 얼마나 벗어났는지 보는 값입니다.
error = prediction - target
squared_error = error ** 2

print(squared_error)

실행 결과 예시:

0.04000000000000007

여기서 중요한 것은 식이 단순한 기호 놀이가 아니라는 점입니다. 식은 어떤 값을 비교하고, 어떤 값을 크게 보거나 작게 보며, 어떤 결과를 만들지 정합니다.

AI에서 자주 만나는 기본 관계

AI 문서에서 자주 만나는 관계를 아주 단순화하면 다음과 같습니다.

1
2
3
prediction = model(input)
loss = compare(prediction, target)
updated_parameters = update(parameters, loss)

이 표현은 실제 학습 알고리즘을 정확히 적은 것이 아닙니다. 그러나 변수, 함수, 식의 위치를 잡는 데는 도움이 됩니다.

  • input: 모델에 들어가는 데이터입니다.
  • model: 입력을 출력으로 바꾸는 함수 또는 시스템입니다.
  • prediction: 모델이 만든 출력입니다.
  • target: 비교 기준이 되는 값입니다.
  • loss: prediction과 target의 차이를 숫자로 표현한 값입니다.
  • parameters: 학습 과정에서 조정되는 값입니다.
  • update: loss를 줄이도록 parameters를 바꾸는 절차입니다.

이 구조를 알면 뒤에서 만나는 수식이 조금 덜 낯설어집니다. 복잡한 수식도 결국 어떤 값에 이름을 붙이고, 어떤 관계로 변환하고, 어떤 계산 결과를 비교하는 방식으로 읽을 수 있습니다.

이름은 이해를 돕지만 보장하지 않는다

변수 이름은 이해를 돕습니다. x, y보다 input_data, target, prediction 같은 이름이 더 읽기 쉽습니다. 하지만 이름만 믿으면 안 됩니다.

문제 상황: 변수 이름이 그럴듯해 보여도 값의 의미와 구조를 따로 확인해야 하는 경우를 봅니다. 입력(input): 예측과 정답처럼 보이는 두 리스트입니다. 기대 출력(output): 출력은 없지만 이름만으로는 값의 타입과 의미를 모두 알 수 없는 상태를 보여 줍니다. 확인할 개념: 변수 이름은 단서일 뿐이며, 실제 값의 shape과 의미를 추가로 확인해야 한다는 점을 봅니다.

1
2
3
# prediction과 target은 여러 샘플의 예측값과 실제값을 나란히 비교하기 위한 목록입니다.
prediction = [0, 1, 1, 0]
target = [0, 1, 0, 0]

이 코드는 이름만 보면 prediction과 target이 무엇인지 알 것 같습니다. 그러나 실제로는 각 값이 클래스 번호인지, 확률인지, 참/거짓인지, 데이터 개수가 같은지, 순서가 맞는지를 더 확인해야 합니다.

AI에서 오류는 수식보다 데이터와 코드의 연결 지점에서 자주 생깁니다. 변수 이름이 그럴듯해도, 값의 모양(shape), 타입(type), 의미(meaning), 단위(unit)를 확인해야 합니다.

사례 및 예시

사례 1. y = f(x)가 추상식이 아니라 모델 실행으로 읽히는 순간

학습자가 y = f(x)를 보면 오래전 수학 시간의 함수 문제처럼 느낄 수 있습니다. 하지만 AI 문서에서는 이 식이 입력 x를 모델 f에 넣어 출력 y를 얻는다는 가장 기본적인 계산 구조로 자주 나타납니다.

예를 들어 고객 정보가 입력이고, 모델이 구매 가능성을 출력한다고 해 보겠습니다. 이때 x는 고객 특징 묶음, f는 학습된 모델, y는 예측 점수나 분류 결과로 읽을 수 있습니다. 즉 기호 셋이 각각 데이터, 모델, 출력의 자리를 차지합니다.

이 사례는 변수와 함수가 왜 단순한 수학 용어가 아닌지를 보여 줍니다. x, y를 값 이름으로만 보지 않고, 입력, 정답, 예측, 가중치 같은 문맥과 연결해야 AI 수식을 읽을 수 있습니다.

결국 중요한 것은 기호 자체보다 역할입니다. 이 식이 무엇을 넣고 무엇을 꺼내는지 읽을 수 있어야, 뒤에서 손실과 파라미터가 추가되어도 같은 구조 위에서 해석할 수 있습니다.

체크리스트

  • 변수(variable)를 값이나 데이터에 붙인 이름으로 설명할 수 있다.
  • 함수(function)를 입력(input)을 출력(output)으로 바꾸는 관계로 설명할 수 있다.
  • 식(expression)을 계산 가능한 관계의 압축 표현으로 설명할 수 있다.
  • y = f(x)를 AI 모델 실행의 기본 구조로 읽을 수 있다.
  • 코드의 변수와 수학의 변수가 닮았지만 타입(type), shape, 재할당 같은 차이가 있음을 설명할 수 있다.
  • 변수 이름만 믿지 않고 값의 의미, 타입, shape을 확인해야 함을 설명할 수 있다.
  • 변수, 함수, 식을 읽을 때 값의 의미, 입력과 출력, 타입과 shape를 함께 확인할 수 있다.
  • y = f(x)를 오래전 함수 문제 대신 AI 모델 실행의 기본 구조로 다시 읽을 수 있다.

출처와 참고 자료

  • 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.
  • Python Software Foundation, Assignment statements, Python Language Reference, 확인 날짜: 2026-07-19. 코드 변수와 재할당 설명을 확인하는 직접 참고 자료입니다.
  • NumPy Developers, numpy.ndarray, NumPy User Guide, 확인 날짜: 2026-07-19. 배열 변수의 shapedtype 확인 예제를 뒷받침하는 공식 참고 자료입니다.