이번 글에서 다룰 내용
이 글에서는 행렬 (matrix)을 표(table)가 아니라 변환(transformation)의 관점에서 소개합니다.
- 행렬을 숫자 배열로만 보면 놓치기 쉬운 점을 설명합니다.
- 행과 열이 어떤 정보를 담는지 정리합니다.
- 행렬이 벡터를 새로운 공간으로 보내는 규칙이라는 관점을 익힙니다.
- 그래픽스, 신경망, 데이터 변환 예시로 연결합니다.
이번 글에서 새로 나오는 용어
- 행렬 (matrix): 숫자 배열이면서 동시에 변환 규칙의 표현입니다.
- 벡터 (vector): 행렬이 입력받고 출력하는 기본 대상입니다.
- 선형변환 (linear transformation): 행렬이 표현하는 핵심 규칙입니다.
핵심 아이디어
처음 행렬을 배우면 많은 사람이 "숫자가 직사각형으로 배열된 표"라고 기억합니다. 이 설명이 틀린 것은 아닙니다. 하지만 그 설명만으로는 왜 행렬곱(matrix multiplication)이 그런 형태를 가지는지, 왜 행렬이 선형대수의 중심인지 이해하기 어렵습니다.
프로그래머 관점에서 더 중요한 설명은 이것입니다.
여기서 변환(transformation)은 입력을 받아 출력을 내놓는 규칙, 즉 함수(function)처럼 생각하면 됩니다. 행렬은 그런 변환 중에서도 덧셈과 스칼라배를 보존하는 선형변환을 표현합니다.
행렬(matrix) = 벡터를 다른 벡터로 보내는 [[linear-transformation|선형변환]] 규칙의 표현
즉 행렬은 데이터를 저장한 표이기도 하지만, 더 본질적으로는 입력 벡터를 출력 벡터로 바꾸는 장치입니다.
예를 들어 2차원 평면에서 점을 회전시키는 변환, 이미지를 특정 방향으로 늘리는 변환, 신경망에서 입력 특성(feature)을 새로운 특성 공간으로 바꾸는 선형층이 모두 행렬로 표현될 수 있습니다.
왜 열(column)을 중요하게 봐야 하는가
행렬 A가 있고 입력 벡터 x가 있을 때, Ax라는 계산은 단순 규칙처럼 보일 수 있습니다. 하지만 이 계산을 제대로 이해하려면 행렬의 열(column)을 봐야 합니다.
행렬의 각 열은 표준기저(standard basis) 벡터가 변환 후 어디로 가는지를 보여 줍니다. 예를 들어 2x2 행렬 A의 첫 번째 열은 A(1, 0)의 결과이고, 두 번째 열은 A(0, 1)의 결과입니다. 즉 행렬을 알면, 기본 축들이 어떻게 움직이는지를 알 수 있고, 그 조합으로 임의의 벡터가 어떻게 바뀌는지도 알 수 있습니다.
이 관점이 생기면 행렬은 더 이상 낯선 숫자 표가 아니라, "공간을 바꾸는 규칙"으로 읽힙니다.
좌표계와 기저가 바뀌면 표현도 바뀐다
조금 더 엄밀하게 말하면, 행렬은 선형변환 자체라기보다 선형변환을 특정 좌표계와 기저에서 적어 놓은 표현입니다. 같은 선형변환이라도 기저를 바꾸면 행렬 모양이 달라질 수 있습니다.
초심자 단계에서는 "행렬은 선형변환의 표현"이라고 이해해도 충분합니다. 다만 나중에 대각화(diagonalization)나 고유벡터를 배울 때는 이 점이 매우 중요해집니다.
단계별 예시
예시 1) 2차원 확대 변환
다음 행렬을 보겠습니다.
A = [2 0
0 3]
이 행렬은 x축 방향은 2배, y축 방향은 3배로 늘립니다. 표준기저 벡터 e1 = (1, 0), e2 = (0, 1)에 적용하면
Ae1 = (2, 0)
Ae2 = (0, 3)
이 됩니다. 즉 각 열은 기본 축이 어디로 가는지를 보여 줍니다. 그리고 (1, 1) = 1e1 + 1e2이므로, 변환 후에는 1(2, 0) + 1(0, 3) = (2, 3)이 됩니다. 이렇게 열을 이해하면 행렬-벡터 곱의 의미도 함께 보입니다.
예시 2) 신경망의 선형층
입력 벡터가 세 개 특성으로 이루어져 있고, 출력이 두 개 특성이라면 가중치 행렬은 2 x 3 크기, 즉 행이 2개이고 열이 3개인 행렬이 될 수 있습니다. 이 행렬은 3차원 입력 벡터를 받아 2차원 출력 벡터로 보내는 역할을 합니다.
딥러닝 코드에서 y = Wx + b를 자주 보는데, 여기서 W는 특성 공간(feature space)을 바꾸는 선형 규칙입니다. 다만 + b까지 붙으면 엄밀하게는 순수한 선형변환(linear transformation)이라기보다 아핀 변환(affine transformation)에 가깝습니다. 즉 f(x + y) = f(x) + f(y) 같은 선형성 성질을 그대로 만족하지는 않습니다. 이 글에서는 핵심 뼈대인 W 부분에 집중합니다.
예시 3) 이미지와 그래픽스 변환
컴퓨터 그래픽스에서는 점 좌표에 행렬을 곱해 회전(rotation), 확대(scale), 대칭(reflection) 같은 변환을 적용합니다. 같은 점 집합이라도 어떤 행렬을 곱하느냐에 따라 전혀 다른 모습으로 바뀔 수 있습니다.
여기서 중요한 것은, 행렬이 개별 점 하나를 바꾸는 동시에 공간 전체의 구조를 바꾼다는 점입니다. 이 때문에 행렬은 "점 하나의 계산"이 아니라 "공간 전체의 규칙"으로 읽는 편이 더 정확합니다.
수학 주석
- 행렬(matrix)은 선형변환 (linear transformation)을 좌표계 안에서 표현한 것입니다.
- 좌표계를 정하면 선형변환은 행렬 하나로 표현할 수 있고, 반대로 행렬 하나는 하나의 선형변환으로 해석할 수 있습니다.
- 행렬의 크기(shape)는 입력 차원과 출력 차원을 말해 줍니다.
- 이 글에서는 벡터를 열벡터(column vector)로 봅니다. 따라서
m x n행렬은 행이m개, 열이n개이며,n차원 입력 벡터를 받아m차원 출력 벡터로 보내는 변환으로 볼 수 있습니다.
그래서 행렬 크기를 읽는 감각은 실무 코드에서도 매우 중요합니다.
자주 하는 오해
행렬을 표 데이터와 같은 것으로만 보기
표 데이터도 행렬처럼 생길 수 있지만, 선형대수에서 행렬은 계산 대상이자 변환 표현입니다. 저장 형식과 수학적 역할을 구분해서 보는 것이 중요합니다.
행과 열을 단순 위치 정보로만 보기
행(row)과 열(column)은 단순 배치가 아니라, 입력과 출력 구조를 읽는 단서입니다. 특히 각 열은 입력 공간의 한 축이 출력 공간 어디로 가는지를 보여 주므로, 행렬-벡터 곱을 이해하려면 열(column) 해석이 매우 중요합니다.
y = Wx + b 전체를 선형이라고 부르기
실무 코드에서는 편의상 선형층(linear layer)이라고 부르지만, 엄밀하게는 + b가 들어간 순간 순수 선형변환이 아니라 아핀 변환(affine transformation)입니다. 다만 핵심 선형대수 구조는 여전히 W에 담겨 있습니다.
행렬은 2차원에서만 직관적으로 이해할 수 있다고 생각하기
2차원과 3차원 예시가 직관적이긴 하지만, 고차원 특성 공간(feature space)에서도 같은 원리가 그대로 적용됩니다. 신경망의 선형층도 결국 같은 이야기입니다.
연습 또는 확장
아래 질문에 답해 보세요.
2 x 3행렬은 몇 차원 입력을 몇 차원 출력으로 보내는가?- 대각행렬(diagonal matrix)은 각 축을 어떻게 바꾸는가?
- 열(column)이 기본 축의 이동 결과라는 말은 무엇을 뜻하는가?
y = Wx + b에서 어느 부분이 선형 구조의 핵심인가?
가능하다면 간단한 넘파이(NumPy) 코드로 작은 행렬과 벡터를 곱해 보고, 입력 하나가 어떻게 출력으로 바뀌는지도 확인해 보세요.
마무리
이번 글에서는 행렬 (matrix)을 변환(transformation)의 관점에서 읽었습니다.
- 행렬은 단순 숫자 표가 아닙니다.
- 행렬은 벡터를 다른 벡터로 보내는 선형 규칙의 표현입니다.
- 각 열은 기본 축이 어디로 가는지를 보여 줍니다.
- 그래픽스, 신경망, 데이터 변환 모두 이 관점으로 이해할 수 있습니다.
다음 글에서는 행렬과 벡터의 곱 Ax가 실제로 무엇을 하는지, 열벡터(column vector) 관점으로 더 구체적으로 설명하겠습니다.
💬 댓글
이 글에 대한 의견을 남겨주세요