본문 바로가기
데이터 과학 수학

데이터의 그릇, 벡터와 행렬의 본질과 머신러닝 연산

by dexien 2026. 4. 5.

딥러닝 코드를 처음 봤을 때 torch.matmul이나 np.dot 같은 함수가 계속 나오는 게 신기했습니다. 왜 이렇게 행렬 곱셈이 많이 나오지? 싶었는데, 나중에 알고 보니 신경망의 모든 연산이 결국 행렬 곱셈이었습니다. 입력 데이터를 받아서 다음 층으로 넘기는 것도, 가중치를 업데이트하는 것도 전부 행렬 연산입니다.

벡터와 행렬은 선형대수학의 기초 개념이지만 머신러닝에서는 단순한 수학 도구가 아닙니다. 데이터를 담는 그릇이자 AI가 세상을 인식하는 방식 자체입니다. 이 글에서는 벡터와 행렬이 실제로 어떻게 작동하는지를 숫자로 직접 따라가 보겠습니다.

벡터와 행렬의 본질과 머신러닝 연산 구조
데이터의 그릇, 벡터와 행렬의 본질과 머신러닝 연산

벡터란 무엇인가

수학에서 벡터는 크기와 방향을 동시에 가진 양입니다. 근데 데이터 과학에서는 조금 더 단순하게 봅니다. 그냥 숫자들의 목록입니다.

예를 들어 어떤 사람의 키 175cm, 몸무게 70kg, 나이 30세를 벡터로 표현하면 [175, 70, 30]입니다. 이 벡터는 3차원 공간의 한 점을 나타냅니다. 다른 사람의 벡터가 [180, 75, 28]이라면 두 점 사이의 거리를 계산해서 두 사람이 얼마나 비슷한지 수치로 나타낼 수 있습니다. 이게 추천 알고리즘의 기본 원리입니다.

벡터끼리의 내적(dot product)도 중요합니다. 두 벡터 a = [1, 2, 3], b = [4, 5, 6]의 내적은 1 ×4 + 2 ×5 + 3 ×6 = 4 + 10 + 18 = 32입니다. 내적값이 클수록 두 벡터가 비슷한 방향을 가리킨다는 뜻이고, 이게 코사인 유사도의 기반입니다.


행렬이란 무엇인가

행렬은 벡터를 여러 개 쌓은 2차원 배열입니다. 행(가로줄)과 열(세로줄)로 이루어져 있고 m×n 행렬이라고 하면 m개의 행과 n개의 열을 가졌다는 뜻입니다.

데이터 분석에서 행렬은 전체 데이터셋을 담는 그릇입니다. 사람 1000명의 데이터가 있고 각각 키, 몸무게, 나이 3개의 특성이 있다면 1000 ×3 행렬이 됩니다. 행이 샘플, 열이 특성입니다.

선형대수학적으로 보면 행렬은 공간을 변형하는 도구이기도 합니다. 어떤 벡터에 행렬을 곱하면 그 벡터가 새로운 공간으로 이동합니다. 늘어나거나 회전하거나 방향이 바뀝니다. 신경망에서 데이터가 층을 통과할 때마다 이 변형이 일어납니다.


스칼라 벡터 행렬 텐서 한눈에 비교

구분 형태 예시 머신러닝에서 역할
스칼라 단일 숫자 3.14 학습률, 손실값
벡터 1차원 배열 [175, 70, 30] 데이터 한 샘플
행렬 2차원 배열 1000×3 데이터셋 전체 데이터셋, 가중치
텐서 3차원 이상 224×224×3 이미지 컬러 이미지, 영상 데이터

PyTorch나 TensorFlow에서 tensor라는 단어가 계속 나오는 이유가 여기에 있습니다. 모든 데이터를 텐서 형태로 다루기 때문입니다. 스칼라도 0차원 텐서, 벡터도 1차원 텐서로 봅니다.


피처 벡터: 데이터를 숫자로 바꾸는 방법

AI가 고양이 사진을 인식할 수 있는 건 이미지를 숫자로 변환하기 때문입니다. 28 ×28 픽셀 흑백 이미지라면 784개의 픽셀 밝기값(0~255)을 쭉 늘어놓은 784차원 벡터가 됩니다. 이게 피처 벡터입니다.

텍스트도 마찬가지입니다. "고양이가 귀엽다"라는 문장을 모델에 넣으려면 단어를 숫자 벡터로 바꿔야 합니다. Word2Vec이나 BERT 같은 임베딩 기법이 이 역할을 합니다. 비슷한 의미의 단어는 벡터 공간에서 가까운 위치에 배치됩니다. "고양이"와 "강아지"의 벡터가 "고양이"와 "자동차"의 벡터보다 가깝게 위치하는 식입니다.

결국 AI가 이미지를 보고 텍스트를 읽고 소리를 듣는 건 전부 그 정보를 벡터로 변환해서 행렬 연산을 수행하는 겁니다. 형태는 달라도 수학적 구조는 같습니다.


행렬 곱셈 직접 계산해 보기

행렬 곱셈이 어떻게 작동하는지 실제로 계산해 보겠습니다. 2 ×3 행렬 A와 3 ×2 행렬 B를 곱하면 2 ×2 행렬이 나옵니다.

A (2×3)
[1, 2, 3]
[4, 5, 6]

B (3×2)
[7, 8]
[9, 10]
[11, 12]

A × B (2×2)
[1×7 + 2×9 + 3×11, 1×8 + 2×10 + 3×12] = [58, 64]
[4×7 + 5×9 + 6×11, 4×8 + 5×10 + 6×12] = [139, 154]

결과 행렬의 각 원소는 A의 행과 B의 열을 내적 한 값입니다. A가 m×k, B가 k×n이면 결과는 m×n입니다. 안쪽 차원 k가 같아야 곱셈이 가능합니다. 딥러닝 코드에서 shape mismatch 에러가 나는 이유가 바로 이 차원이 안 맞아서입니다.


y = Wx + b: 신경망 한 층의 구조

신경망의 한 층은 y = Wx + b라는 수식으로 표현됩니다. x는 입력 벡터, W는 가중치 행렬, b는 편향(bias) 벡터, y는 출력 벡터입니다.

실제 숫자로 확인해 보겠습니다. 입력 x = [2, 3], 가중치 W = [[1, 0], [0, 1], [1, 1]], 편향 b = [1, 0, 1]이면 계산은 이렇습니다.

Wx 계산
[1×2 + 0×3] = [2]
[0×2 + 1×3] = [3]
[1×2 + 1×3] = [5]

Wx + b 계산
[2+1, 3+0, 5+1] = [3, 3, 6]

입력이 2차원 벡터였는데 출력은 3차원 벡터가 됐습니다. 행렬 곱셈으로 차원이 변환된 겁니다. 신경망의 각 층이 하는 일이 정확히 이겁니다. 데이터를 받아서 다른 차원으로 변환하고 다음 층으로 넘깁니다. 학습은 이 W 행렬의 숫자들을 조정하는 과정입니다.


GPU가 행렬 연산에 강한 이유

AI 학습에 GPU가 필요한 이유가 궁금했던 적 있으신가요. 행렬 곱셈의 구조를 보면 바로 이해됩니다. 결과 행렬의 각 원소는 서로 독립적으로 계산됩니다. 58을 계산하는 것과 64를 계산하는 것이 서로 전혀 관계없습니다. 동시에 계산해도 됩니다.

CPU는 코어가 몇 개 없어서 순서대로 처리합니다. GPU는 수천 개의 코어가 있어서 행렬 원소들을 전부 동시에 계산합니다. 1000 ×1000 행렬 곱셈이면 100만 번의 내적 계산이 필요한데, GPU는 이걸 거의 동시에 처리합니다. GPT-4 같은 모델을 학습시키려면 수천억 번의 행렬 곱셈이 필요한데 GPU 없이는 현실적으로 불가능합니다.

결국 딥러닝의 발전은 수학적으로는 행렬 연산의 발견, 하드웨어적으로는 GPU의 발전, 두 가지가 맞물려서 가능했습니다. 선형대수학이라는 수학 구조가 GPU의 병렬 처리 방식과 딱 맞아떨어진 덕분입니다.


소개 및 문의 · 개인정보처리방침 · 면책조항

© 2026 블로그 이름