이번 글에서 다룰 내용
이 글에서는 행렬과 벡터의 곱(matrix-vector multiplication)을 다룹니다.
Ax가 어떤 계산인지 성분 수준과 구조 수준에서 함께 설명합니다.- 행렬의 열(column)을 이용해
Ax를 선형결합(linear combination)으로 읽는 방법을 소개합니다. - 행(row) 관점과 열(column) 관점을 함께 정리합니다.
- 선형층(linear layer), 좌표변환, 특성 조합 예시와 연결합니다.
이번 글에서 새로 나오는 용어
- 행렬 (matrix): 벡터를 다른 벡터로 보내는 규칙입니다.
- 벡터 (vector): 행렬곱의 입력과 출력으로 쓰이는 대상입니다.
- 선형변환 (linear transformation):
Ax를 계산이 아니라 변환으로 읽게 해 주는 개념입니다.
핵심 아이디어
앞 글에서 행렬을 변환으로 읽었다면, 이제 실제 계산 Ax를 이해해야 합니다. 이 글에서는 x를 기본적으로 열벡터(column vector) 로 생각합니다. 겉으로 보면 행렬의 각 행(row)과 벡터의 내적(inner product)을 계산하는 절차처럼 보입니다. 물론 그 설명도 맞습니다. 하지만 선형대수 흐름을 이해하려면 더 중요한 해석이 있습니다.
Ax = 행렬 A의 열벡터들을 x의 성분만큼 가중합한 결과
이 해석은 매우 중요합니다. 왜냐하면 출력 벡터가 어디서 오는지, 어떤 출력은 만들 수 있고 어떤 출력은 만들 수 없는지를 한 번에 보여 주기 때문입니다.
행렬 A의 열을 a1, a2, ..., an, 벡터 x를 (x1, x2, ..., xn)라고 쓰면
Ax = x1 a1 + x2 a2 + ... + xn an
입니다.
즉 Ax는 행렬의 열들을 적당한 비율로 섞은 선형결합(linear combination)입니다. 이 관점이 잡히면 뒤에서 배우는 생성 범위(span), 열공간(column space), 계수(rank)가 매우 자연스럽게 이어집니다.
행 관점도 함께 보면 좋다
같은 계산을 행(row) 관점으로도 읽을 수 있습니다. Ax의 각 출력 성분은 A의 한 행(row)과 x의 내적으로 계산됩니다. 즉
- 행(row) 관점: 출력의 각 성분이 어떻게 계산되는지 보여 줍니다.
- 열(column) 관점: 출력 전체가 어떤 벡터 조합으로 만들어지는지 보여 줍니다.
프로그래밍에서는 두 관점 모두 중요하지만, 공간 해석으로 넘어가려면 열 관점이 특히 중요합니다.
단계별 예시
예시 1) 작은 행렬 계산
다음 2x2 행렬 A와 2차원 열벡터 x를 보겠습니다.
A = [1 2
3 4]
x = [5
6]
성분 계산으로 보면
Ax = [1*5 + 2*6
3*5 + 4*6]
= [17
39]
입니다.
하지만 열벡터 관점으로 보면 더 의미가 잘 드러납니다. A의 첫 번째 열은 [1; 3], 두 번째 열은 [2; 4]이고, x의 성분은 5와 6이므로
Ax = 5[1; 3] + 6[2; 4]
입니다. 즉 출력은 두 열벡터를 5배, 6배 해서 더한 결과입니다. 일반적으로 m x n 행렬은 행이 m개, 열이 n개이고, n차원 입력을 받아 m차원 출력을 만듭니다.
예시 2) 만들 수 있는 출력과 만들 수 없는 출력
예를 들어
A = [1 2
2 4]
를 보겠습니다. 두 번째 열은 첫 번째 열의 2배이므로, 어떤 x = [x1; x2]에 대해서도
Ax = x1[1; 2] + x2[2; 4] = (x1 + 2x2)[1; 2]
가 됩니다. 즉 출력은 항상 [1; 2] 방향의 직선 위에만 놓입니다. 출력은 아무 벡터나 될 수 있는 것이 아니라, 항상 행렬의 열들이 생성하는 공간 안에만 있습니다.
이 감각이 있어야 나중에 Ax = b에서 "왜 어떤 b는 해가 없나"를 자연스럽게 이해할 수 있습니다.
예시 3) 특성 조합
신경망에서 입력 특성(feature) 벡터 x가 있고, 가중치 행렬 W가 있다고 합시다. 이때 Wx는 입력 특성들을 단순히 복사하는 것이 아니라, 각 특성을 다른 비율로 섞어 새로운 출력 특성으로 만드는 계산입니다.
즉 행렬-벡터 곱은 "입력을 받아 새 특성 공간(feature space)으로 재표현한다"고 볼 수 있습니다. 이런 관점은 선형층(linear layer)의 역할을 이해할 때 매우 중요합니다. 다만 실제 프레임워크에서는 배치 차원(batch dimension)과 전치(transpose) 때문에 W @ x 대신 다른 모양으로 보일 수 있으니 shape 관례를 함께 확인해야 합니다.
다만 실제 신경망에서는 보통 Wx + b 뒤에 활성화 함수(activation function)가 따라옵니다. 이 글에서는 그 전에 있는 선형 부분만 떼어 보려는 것입니다.
예시 4) 좌표변환
2차원 점 (x, y)에 회전 행렬(rotation matrix)을 곱하면 점은 새로운 위치로 이동합니다. 이때 입력 벡터 하나만 바뀌는 것이 아니라, 평면의 모든 벡터가 같은 규칙으로 바뀝니다. 그래서 Ax는 벡터 하나의 계산이면서 동시에 전체 공간 규칙의 한 예시이기도 합니다.
수학 주석
Ax를 열벡터(column vector)의 선형결합으로 읽으면, 출력이 항상A의 열들이 생성하는 공간 안에 있다는 사실이 보입니다.- 이 공간이 바로 열공간(column space)입니다.
- 따라서
Ax = b가 풀린다는 말은b가A의 열공간 안에 있다는 말과 연결됩니다. - 행렬 크기가
m x n이면, 즉 행이m개이고 열이n개이면x는n차원, 출력Ax는m차원입니다.
즉 행렬-벡터 곱은 단순 계산을 넘어서, "이 행렬이 만들 수 있는 모든 결과는 무엇인가"라는 질문으로 바로 이어집니다.
자주 하는 오해
행렬곱을 행과 열의 기계적 계산으로만 외우기
계산 규칙만 알면 숫자는 구할 수 있지만, 왜 그런 계산을 하는지는 남지 않습니다. 열벡터 선형결합 해석이 있어야 이후 공간 개념이 자연스럽게 이어집니다.
출력은 아무 벡터나 나올 수 있다고 생각하기
아닙니다. Ax의 출력은 항상 A의 열들이 생성하는 범위 안에만 있습니다. 그래서 어떤 목표 벡터 b는 만들 수 있고 어떤 b는 만들 수 없습니다.
행 관점과 열 관점 중 하나만 맞다고 생각하기
둘 다 맞습니다. 다만 무엇을 해석하려는지에 따라 더 유용한 관점이 달라집니다. 계산 절차를 볼 때는 행 관점, 공간 구조를 볼 때는 열 관점이 강합니다.
입력 차원과 출력 차원을 자주 헷갈리기
행렬 크기를 읽는 습관이 약하면 모델 코드에서도 shape 오류를 자주 만나게 됩니다. m x n 행렬은 n차원 입력을 받아 m차원 출력을 만듭니다.
연습 또는 확장
다음 질문에 답해 보세요.
A의 열이 두 개뿐이라면Ax는 어떤 형태의 조합으로만 만들 수 있는가?2 x 3행렬과3 x 1벡터를 곱할 때 출력 차원은 얼마인가?- 왜
Ax를 열벡터의 선형결합으로 읽으면Ax = b문제 해석이 쉬워지는가? - 같은 계산을 행 관점과 열 관점으로 각각 설명해 보기
작은 수치 예제를 직접 만들어 Ax를 두 방식으로 계산해 보세요.
- 행과 열 내적 방식
- 열벡터 선형결합 방식
둘이 같은 결과를 주는지 확인해 보면 감각이 빨리 잡힙니다.
마무리
이번 글에서는 행렬-벡터 곱(matrix-vector multiplication)을 구조적으로 읽었습니다.
Ax는 행렬의 열벡터(column vector)를 성분만큼 섞은 선형결합입니다.- 동시에 각 출력 성분은 행(row)과 벡터의 내적으로 계산됩니다.
- 출력은 항상 행렬의 열들이 만드는 공간 안에 있습니다.
- 이 관점은 이후 열공간(column space),
Ax=b, 계수(rank)로 이어집니다.
다음 글에서는 행렬곱(matrix multiplication)을 변환의 합성(composition)으로 읽고, 곱셈 순서가 왜 중요한지도 설명하겠습니다.
💬 댓글
이 글에 대한 의견을 남겨주세요