[선형대수 시리즈 7편] 행렬과 벡터의 곱은 무엇을 하는가

English version

이번 글에서 다룰 내용

이 글에서는 행렬과 벡터의 곱(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가 풀린다는 말은 bA의 열공간 안에 있다는 말과 연결됩니다.
  • 행렬 크기가 m x n이면, 즉 행이 m개이고 열이 n개이면 xn차원, 출력 Axm차원입니다.

즉 행렬-벡터 곱은 단순 계산을 넘어서, "이 행렬이 만들 수 있는 모든 결과는 무엇인가"라는 질문으로 바로 이어집니다.

자주 하는 오해

행렬곱을 행과 열의 기계적 계산으로만 외우기

계산 규칙만 알면 숫자는 구할 수 있지만, 왜 그런 계산을 하는지는 남지 않습니다. 열벡터 선형결합 해석이 있어야 이후 공간 개념이 자연스럽게 이어집니다.

출력은 아무 벡터나 나올 수 있다고 생각하기

아닙니다. Ax의 출력은 항상 A의 열들이 생성하는 범위 안에만 있습니다. 그래서 어떤 목표 벡터 b는 만들 수 있고 어떤 b는 만들 수 없습니다.

행 관점과 열 관점 중 하나만 맞다고 생각하기

둘 다 맞습니다. 다만 무엇을 해석하려는지에 따라 더 유용한 관점이 달라집니다. 계산 절차를 볼 때는 행 관점, 공간 구조를 볼 때는 열 관점이 강합니다.

입력 차원과 출력 차원을 자주 헷갈리기

행렬 크기를 읽는 습관이 약하면 모델 코드에서도 shape 오류를 자주 만나게 됩니다. m x n 행렬은 n차원 입력을 받아 m차원 출력을 만듭니다.

연습 또는 확장

다음 질문에 답해 보세요.

  1. A의 열이 두 개뿐이라면 Ax는 어떤 형태의 조합으로만 만들 수 있는가?
  2. 2 x 3 행렬과 3 x 1 벡터를 곱할 때 출력 차원은 얼마인가?
  3. Ax를 열벡터의 선형결합으로 읽으면 Ax = b 문제 해석이 쉬워지는가?
  4. 같은 계산을 행 관점과 열 관점으로 각각 설명해 보기

작은 수치 예제를 직접 만들어 Ax를 두 방식으로 계산해 보세요.

  • 행과 열 내적 방식
  • 열벡터 선형결합 방식

둘이 같은 결과를 주는지 확인해 보면 감각이 빨리 잡힙니다.

마무리

이번 글에서는 행렬-벡터 곱(matrix-vector multiplication)을 구조적으로 읽었습니다.

  • Ax는 행렬의 열벡터(column vector)를 성분만큼 섞은 선형결합입니다.
  • 동시에 각 출력 성분은 행(row)과 벡터의 내적으로 계산됩니다.
  • 출력은 항상 행렬의 열들이 만드는 공간 안에 있습니다.
  • 이 관점은 이후 열공간(column space), Ax=b, 계수(rank)로 이어집니다.

다음 글에서는 행렬곱(matrix multiplication)을 변환의 합성(composition)으로 읽고, 곱셈 순서가 왜 중요한지도 설명하겠습니다.

💬 댓글

이 글에 대한 의견을 남겨주세요