P2-3.1 스칼라(scalar), 벡터(vector), 행렬(matrix)¶
Section ID:
P2-3.1Version:v2026.07.20
Part 2 Chapter 2에서는 수식 표기를 다시 읽었습니다. 변수(variable), 함수(function), 식(expression), 시그마(sigma), 극한(limit)은 “수식이 무엇을 말하는가”를 읽기 위한 기본 문법이었습니다. 이제부터는 AI 데이터가 계산 가능한 모양으로 바뀔 때 자주 만나는 선형대수(linear algebra)의 기본 표현을 봅니다.
- 숫자 하나를 봅니다.
- 값의 목록을 봅니다.
- 행과 열을 가진 표를 봅니다.
이 세 가지는 각각 스칼라(scalar), 벡터(vector), 행렬(matrix)로 이어집니다. 여기서는 AI 문서에서 데이터가 숫자 하나, 목록, 표 형태로 표현될 때 무엇을 보고 있는지 읽는 감각에 집중합니다.
여기서는 스칼라(scalar), 벡터(vector), 행렬(matrix), shape, 배열(array)을 다시 정리합니다. Chapter 2에서 수식 한 줄의 문법과 반복 표기를 읽었다면, 이제 그 수식이 실제 데이터 모양으로 펼쳐질 때 무엇을 보고 있는지 정리합니다.
여기서는 수학 이론 전체보다 AI 데이터의 기본 모양을 읽는 데 집중합니다. 스칼라, 벡터, 행렬, shape을 구분해 두면, 뒤에서 입력 X의 모양이 무엇인가, 샘플이 몇 행인가, 특징이 몇 열인가 같은 질문을 훨씬 덜 막히고 읽을 수 있습니다.
| 지금 이 절에서 잡을 것 | 바로 다음에 이어질 질문 | 이후 다시 쓰이는 위치 |
|---|---|---|
| 스칼라, 벡터, 행렬의 기본 구분 | P2-3.2에서 벡터를 왜 위치처럼 읽는지 봅니다. | Part 3에서 특징 벡터와 입력 행렬을, Part 5와 Part 6에서 임베딩 벡터와 점수 벡터를 읽을 때 다시 씁니다. |
| shape이 계산 규칙을 바꾼다는 감각 | P2-3.3에서 행렬 곱과 차원 맞춤을 봅니다. | Part 3에서 입력 행렬 X, 타깃 y, train/test 분할 결과의 모양을 확인할 때 다시 씁니다. |
| 표 데이터를 숫자 배열로 보는 시선 | P2-3.6에서 NumPy 배열 계산으로 이어집니다. | Part 3에서 데이터프레임을 모델 입력용 배열로 바꾸는 흐름을 읽을 때 다시 씁니다. |
핵심 기준: 스칼라(scalar), 벡터(vector), 행렬(matrix)¶
- 스칼라(scalar)를 숫자 하나로 설명할 수 있습니다.
- 벡터(vector)를 순서가 있는 값의 목록으로 설명할 수 있습니다.
- 행렬(matrix)을 행(row)과 열(column)을 가진 숫자 배열로 설명할 수 있습니다.
- 데이터의 모양(shape)이 계산 방식에 영향을 준다는 점을 이해할 수 있습니다.
- 텍스트, 이미지, 표 데이터가 계산 가능한 숫자 배열로 바뀌는 이유를 설명할 수 있습니다.
- 스칼라, 벡터, 행렬이 이후 임베딩(embedding), 특징(feature), 배치(batch), 모델 계산에서 다시 등장하는 이유를 말할 수 있습니다.
- 스칼라, 벡터, 행렬의 기본 수학 연산이 왜 shape을 필요로 하는지 설명할 수 있습니다.
세 가지 기준¶
| 기준 | 왜 중요한가 | 이 절에서 필요한 이해 수준 |
|---|---|---|
| 스칼라는 숫자 하나다 | 손실, 확률, 학습률처럼 단일 값을 읽는 기본 단위가 되기 때문입니다. | 숫자 하나가 하나의 계산 결과나 설정값을 나타낸다고 이해합니다. |
| 벡터는 순서 있는 값의 목록이다 | 한 대상을 여러 특징으로 표현할 때 가장 자주 쓰이는 모양이기 때문입니다. | 값의 순서가 의미를 바꾸며, 여러 숫자를 한 묶음으로 읽는다고 이해합니다. |
| 행렬은 여러 벡터를 함께 담는 표다 | 여러 샘플과 여러 특징을 한꺼번에 계산할 때 행과 열 구조가 필요하기 때문입니다. | 행은 대상, 열은 특징처럼 읽으며 shape가 계산 규칙을 정한다고 이해합니다. |
왜 선형대수를 먼저 보는가¶
AI 모델은 현실의 문장, 이미지, 소리, 표를 그대로 계산하지 않습니다. 대부분 숫자로 바꾸고, 그 숫자를 배열(array) 형태로 다룹니다.
- 문장은 토큰을 거쳐 숫자 ID와 벡터로 바뀝니다.
- 이미지는 픽셀 값을 담은 배열로 바뀝니다.
- 표 데이터는 행과 열 구조를 가진 행렬 또는 데이터프레임으로 읽힙니다.
선형대수는 이 숫자 배열을 읽는 기본 언어입니다. 깊은 증명보다 먼저 필요한 것은 다음 감각입니다.
- 값이 하나인가?
- 값이 한 줄로 모였는가?
- 값이 행과 열로 배치되었는가?
- 여러 데이터가 한꺼번에 묶였는가?
이 질문은 실제 코드에서도 그대로 중요합니다. AI 코드에서 오류가 나는 이유 중 하나는 값의 의미보다 모양(shape)을 잘못 이해했기 때문입니다.
숫자 하나에서 공간으로 이어지는 사고¶
스칼라, 벡터, 행렬, 위치는 따로 떨어진 개념처럼 보이지만, AI 계산에서는 하나의 흐름으로 이어집니다.
- 스칼라는 하나의 값을 표현합니다.
- 벡터는 여러 값을 순서 있게 묶은 표현입니다.
- 행렬은 여러 벡터를 행과 열로 모은 표현입니다.
- 위치는 벡터를 같은 공간 안의 좌표처럼 비교하는 관점입니다.
예를 들어 한 사람의 나이 하나만 보면 스칼라입니다.
나이, 키, 방문 횟수를 함께 보면 벡터입니다.
여러 사람의 벡터를 모으면 행렬입니다.
그리고 각 사람의 벡터를 같은 공간 안의 위치로 보면, 사람들 사이의 가까움과 멂을 생각할 수 있습니다.
- 값 하나를 봅니다.
- 여러 값을 묶어 한 대상을 표현합니다.
- 여러 대상을 한꺼번에 모읍니다.
- 대상들을 같은 공간에서 비교합니다.
이 흐름이 선형대수가 AI에서 자주 등장하는 이유입니다. 선형대수는 단순히 행렬 계산법을 배우는 과목이 아니라, 데이터를 계산 가능한 표현으로 만들고 그 표현들 사이의 관계를 비교하게 해 주는 언어입니다.
스칼라는 숫자 하나다¶
스칼라(scalar)는 숫자 하나입니다. 예를 들면 다음 값들은 모두 스칼라로 볼 수 있습니다.
AI 문맥에서는 스칼라가 여러 곳에서 등장합니다.
- 하나의 온도 값
- 하나의 확률(probability)
- 하나의 손실(loss)
- 하나의 정확도(accuracy)
- 하나의 학습률(learning rate)
예를 들어 어떤 모델의 평균 손실이 0.25라고 하면, 그 값 자체는 스칼라입니다.
스칼라는 작아 보이지만 중요합니다. 모델을 평가할 때 많은 계산 결과를 하나의 숫자로 요약하는 일이 많기 때문입니다. 다만 하나의 숫자는 많은 정보를 압축합니다. 손실이 0.25라는 말만으로 어떤 데이터에서 잘했는지, 어떤 데이터에서 틀렸는지는 알 수 없습니다.
수학적으로는 무엇이 달라지는가¶
스칼라, 벡터, 행렬은 단순히 모양만 다른 것이 아닙니다. 수학적으로는 “어떤 계산을 할 수 있는가”가 달라집니다.
스칼라는 숫자 하나이므로 보통의 사칙연산을 바로 생각할 수 있습니다.
벡터는 같은 위치의 값끼리 더할 수 있습니다.
스칼라를 벡터에 곱하면 벡터의 각 값에 같은 숫자를 곱합니다.
행렬도 같은 모양(shape)이면 위치별로 더할 수 있습니다.
이 계산들은 복잡한 선형대수라기보다 “같은 위치끼리 계산한다”는 규칙에 가깝습니다. 여기서 shape이 중요해집니다. 길이가 다른 벡터나 행과 열의 수가 다른 행렬은 위치별 계산을 바로 할 수 없습니다.
- 같은 모양이면 위치별 계산이 가능합니다.
- 모양이 다르면 어떤 값끼리 계산할지 먼저 정해야 합니다.
여기서는 행렬 곱(matrix multiplication)을 아직 다루지 않습니다. 행렬 곱은 단순한 위치별 곱이 아니라, 행과 열을 조합해 새 값을 만드는 계산입니다. 그 내용은 P2-3.3에서 별도로 봅니다.
여기서는 데이터 모양을 읽는 기준을 먼저 잡고, 벡터 공간의 공리나 행렬 곱 계산법의 본격적인 전개는 다루지 않습니다. 위치 직관은 P2-3.2에서, 행렬 곱과 선형 변환은 P2-3.3에서 다시 좁혀 봅니다.
벡터는 값의 목록이다¶
벡터(vector)는 순서가 있는 값의 목록으로 볼 수 있습니다.
여기서 \(\mathbf{x}\)는 값 3개를 가진 벡터입니다. 여기서는 벡터를 “방향과 크기를 가진 수학적 대상”으로 깊게 설명하지 않습니다. 먼저 AI 데이터 관점에서 “여러 숫자를 한 묶음으로 담은 것”으로 읽습니다.
예를 들어 한 사람을 나이: 30, 키: 172, 월 방문 횟수: 5라는 세 값으로 표현한다고 해 봅니다.
이 값을 벡터로 쓰면 다음처럼 볼 수 있습니다.
이 벡터는 한 사람의 특징(feature)을 숫자 목록으로 표현한 것입니다. 머신러닝에서는 이렇게 여러 특징을 모아 하나의 입력(input)으로 사용하는 일이 많습니다.
벡터에서 순서는 중요합니다. 첫 번째 값이 나이인지, 키인지, 방문 횟수인지 정해져 있어야 합니다.
순서가 바뀌면 같은 숫자라도 의미가 달라집니다.
따라서 벡터는 단순한 숫자 묶음이 아니라, 각 위치가 의미를 갖는 숫자 묶음입니다.
행렬은 행과 열을 가진 숫자 배열이다¶
행렬(matrix)은 숫자를 행(row)과 열(column)로 배치한 구조입니다.
이 행렬은 2개의 행과 3개의 열을 가집니다. 보통 \(2 \times 3\) 행렬이라고 말합니다. 여기서 행(row)은 가로 방향의 한 줄이고, 열(column)은 세로 방향의 한 줄이며, shape은 행과 열의 개수입니다.
AI 데이터에서는 한 행(row)을 하나의 데이터 샘플(sample)로, 한 열(column)을 하나의 특징(feature)으로 읽을 수 있습니다.
예를 들어 사람 3명의 데이터를 나이, 키, 방문 횟수로 표현하면 다음과 같습니다.
이 경우 행은 3개이고, 열은 3개입니다. 즉 행 3개는 사람 3명, 열 3개는 나이, 키, 월 방문 횟수를 뜻합니다.
이 관점은 머신러닝의 데이터셋(dataset)을 읽을 때 매우 중요합니다. 많은 입문 자료에서 \(X\)는 입력 데이터 전체를 뜻하고, \(y\)는 각 행에 대응하는 목표값(target)이나 라벨(label)을 뜻합니다.
shape은 계산의 조건이다¶
shape은 데이터의 모양입니다. 값이 하나인지, 값의 목록인지, 행과 열을 가진 배열인지 확인하는 정보입니다.
문제 상황: 스칼라, 벡터, 행렬이 코드에서 어떤 모양으로 보이는지 한 번에 비교하고 싶습니다. 입력(input): 스칼라 배열, 1차원 벡터 배열, 2차원 행렬 배열입니다. 기대 출력(output): 각각의 shape가 순서대로 출력됩니다. 확인할 개념: shape은 데이터가 숫자 하나인지, 목록인지, 행과 열 구조인지 구분하는 기본 정보라는 점을 봅니다.
이 코드는 세 값의 모양을 확인합니다. 결과는 스칼라 (), 벡터 (3,), 행렬 (2, 3)처럼 읽힙니다.
라이브러리나 설정에 따라 스칼라의 표현은 조금 다르게 보일 수 있지만, 핵심은 같습니다. 스칼라는 숫자 하나이고, 벡터는 숫자 목록이며, 행렬은 행과 열을 가진 숫자 배열입니다.
shape이 중요한 이유는 계산 가능 여부가 shape에 따라 달라지기 때문입니다. 예를 들어 길이가 다른 벡터끼리는 위치별로 더하기 어렵습니다.
이 식은 어느 값끼리 더해야 하는지 맞지 않습니다. 코드에서도 shape이 맞지 않으면 오류가 나거나, 의도하지 않은 방식으로 계산될 수 있습니다.
행과 열의 의미는 문제에서 정해진다¶
행렬은 숫자 배열이지만, 그 숫자의 의미는 문제 정의에서 정해집니다. 같은 \(3 \times 3\) 행렬이라도 문맥에 따라 표 데이터에서는 행이 사람이고 열이 특징일 수 있고, 이미지 일부에서는 행과 열이 픽셀 위치일 수 있으며, 문장 데이터에서는 행이 토큰이고 열이 임베딩 차원일 수 있고, 배치 데이터에서는 행이 샘플이고 열이 특징일 수 있습니다.
따라서 행렬을 볼 때는 숫자 모양만 보지 말고, 이 행은 무엇을 나타내는지, 이 열은 무엇을 나타내는지, 각 값의 단위는 무엇인지, 행과 열의 순서는 고정되어 있는지를 확인해야 합니다.
AI 문서에서 “입력 행렬”, “특징 행렬”, “임베딩 행렬” 같은 표현을 만나면, 먼저 행과 열의 의미를 확인합니다.
사례 및 예시¶
사례 1. 고객 한 명은 벡터가 되고 여러 명은 행렬이 된다¶
학습자가 고객 데이터 표를 볼 때는 보통 이름, 나이, 방문 횟수처럼 사람 중심으로 읽습니다. 하지만 모델 입력으로 바꾸려면 한 사람의 여러 속성이 하나의 벡터(vector)가 되고, 여러 사람의 벡터가 쌓여 하나의 행렬(matrix)처럼 읽히기 시작합니다.
예를 들어 한 고객을 나이, 월 방문 횟수, 평균 구매 금액 세 숫자로 표현하면 그것은 길이 3의 벡터가 됩니다. 같은 방식으로 고객 다섯 명을 모으면 5 x 3 모양의 행렬이 됩니다. 이때 행(row)은 고객 한 명, 열(column)은 같은 종류의 특징을 뜻합니다.
이 사례는 왜 스칼라, 벡터, 행렬을 따로 배우는지를 보여 줍니다. 숫자 하나만 볼 때는 스칼라면 충분하지만, 한 대상을 여러 값으로 표현하면 벡터가 필요하고, 여러 대상을 한꺼번에 계산하려면 행렬이 필요해집니다.
즉 선형대수 입문은 추상 기호 암기보다 현실 데이터를 계산 가능한 모양으로 어떻게 접는가를 배우는 과정에 가깝습니다. 이 감각이 있어야 뒤에서 특징 행렬, 배치 입력, 임베딩도 같은 언어로 읽을 수 있습니다.
스칼라, 벡터, 행렬은 어디에서 다시 등장하는가¶
스칼라, 벡터, 행렬은 이후 거의 모든 AI 계산 설명에서 다시 등장합니다.
- 임베딩(embedding): 텍스트나 항목을 벡터로 표현합니다.
- 특징(feature): 하나의 데이터 샘플을 여러 값의 벡터로 표현합니다.
- 배치(batch): 여러 샘플을 행렬 또는 더 높은 차원의 배열로 묶습니다.
- 손실(loss): 여러 계산 결과를 하나의 스칼라로 요약하기도 합니다.
- 모델 파라미터(parameter): 가중치(weight)가 벡터나 행렬 형태를 가질 수 있습니다.
- 행렬 곱(matrix multiplication): 여러 입력과 가중치를 한꺼번에 계산하는 기본 도구가 됩니다.
여기서는 아직 행렬 곱을 계산하지 않습니다. 다만 “AI 데이터는 숫자 하나, 숫자 목록, 숫자 표로 자주 표현된다”는 감각을 잡습니다.
간단한 읽기 예시¶
다음 데이터가 있다고 해 봅니다.
이 행렬을 행(row)은 학생, 열(column)은 [공부 시간, 퀴즈 점수]로 해석한다고 가정합니다.
그러면 이 행렬은 첫 번째 학생이 공부 시간 2, 퀴즈 점수 8이고, 두 번째 학생이 공부 시간 4, 퀴즈 점수 6이며, 세 번째 학생이 공부 시간 5, 퀴즈 점수 9라는 의미를 가집니다.
여기서 한 학생의 데이터는 벡터입니다.
세 학생의 데이터를 모두 모으면 행렬입니다.
이 예시에서 중요한 것은 계산보다 읽는 방식입니다. 값 하나는 스칼라이고, 한 학생의 특징 묶음은 벡터이며, 여러 학생의 특징 묶음은 행렬입니다.
체크리스트¶
- 스칼라(scalar)를 숫자 하나로 설명할 수 있다.
- 벡터(vector)를 순서가 있는 값의 목록으로 설명할 수 있다.
- 행렬(matrix)을 행(row)과 열(column)을 가진 숫자 배열로 설명할 수 있다.
- shape이 계산 가능 여부와 오류에 영향을 줄 수 있음을 설명할 수 있다.
- 행과 열의 의미는 문제 정의에 따라 달라진다는 점을 설명할 수 있다.
- 하나의 샘플(sample)을 벡터로, 여러 샘플을 행렬로 읽을 수 있다.
- 스칼라, 벡터, 행렬이 임베딩, 특징, 배치, 손실, 파라미터에서 다시 등장하는 이유를 설명할 수 있다.
- 같은 shape의 벡터와 행렬은 위치별 덧셈을 할 수 있고, 스칼라배는 각 값에 같은 숫자를 곱하는 계산임을 설명할 수 있다.
- 스칼라에서 벡터, 행렬, 위치 비교로 사고가 확장되는 흐름을 설명할 수 있다.
- 스칼라, 벡터, 행렬을 선형대수 용어이자 데이터 모양을 읽는 언어로 함께 설명할 수 있다.
X의 모양, 샘플 수, 특징 수가 섞일 때 shape 감각으로 다시 구분할 수 있다.
출처와 참고 자료¶
- 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으로 읽는 관례를 확인하는 참고 자료입니다.