행렬은 어려운 기호를 더 많이 붙이기 위해 만든 것이 아닙니다. 같은 모양의 계산이 여러 번 반복될 때, 그 반복을 한 장의 표로 묶기 위해 만든 언어입니다. 이 강의에서는 행렬을 먼저 숫자 표로 보고, 그다음 계산 규칙을 한꺼번에 적는 도구로 읽겠습니다.
먼저 알아둘 말
- 행렬: 숫자를 가로줄과 세로줄에 맞추어 적은 표다.
- 행: 표의 가로줄이다.
- 열: 표의 세로줄이다.
- 벡터: 숫자를 한 줄로 세운 대상이다.
- 행렬곱: 한 행렬의 행과 다른 대상의 열을 맞추어 새 숫자를 만드는 계산이다.
- 단위행렬: 곱해도 대상을 바꾸지 않는 행렬이다.
- 역행렬: 어떤 행렬의 작용을 되돌리는 행렬이다.
- 선형시스템: 여러 개의 일차방정식을 한꺼번에 묶은 식이다.
이 강의에서 답할 질문
- 왜 여러 식을 표로 적으면 더 잘 보일까?
- 행렬과 벡터를 곱한다는 말은 정확히 어떤 계산일까?
- 여러 방정식을
$$ Ax=b $$
처럼 쓰면 무엇이 좋아질까?
먼저 떠올릴 장면
- 학생 세 명의 국어, 영어, 수학 점수를 문장으로 적으면 길지만 표로 적으면 한눈에 보인다.
- 연립방정식도 마찬가지다. 식을 하나씩 길게 쓰는 대신 계수만 뽑아 표로 놓으면 구조가 드러난다.
- 신경망의 한 층도 입력 숫자 여러 개를 받아 출력 숫자 여러 개를 만든다. 이 반복 계산을 한 번에 적는 데 행렬이 쓰인다.
생각의 순서
- 먼저 행렬을 숫자 표로 이해한다.
- 그다음 행렬과 벡터의 곱이 왜
여러 가중합을 한 번에 계산하는 일인지 본다. - 그다음 행렬과 행렬의 곱이 왜
규칙 두 개를 이어 붙인 계산인지 본다. - 마지막으로 연립방정식을
$$ Ax=b $$
로 묶어 읽으면서 선형시스템을 이해한다.
본문
행렬을 처음 보면 네모 괄호와 숫자가 많아서 낯설 수 있습니다. 하지만 출발점은 단순합니다. 행렬은 숫자를 질서 있게 적어 놓은 표입니다.
예를 들어 두 학생의 두 과목 점수를 한 번에 적으면 다음처럼 쓸 수 있습니다.
$$ \begin{bmatrix} 80 & 90 \ 75 & 95 \end{bmatrix} $$
첫째 행은 첫 번째 학생의 정보이고, 둘째 행은 두 번째 학생의 정보입니다. 첫째 열은 첫 번째 과목, 둘째 열은 두 번째 과목입니다. 즉 행과 열은 숫자의 의미를 잃지 않게 자리를 정해 주는 장치입니다.
연립방정식에서도 같은 일이 일어납니다. 예를 들어
$$ x+y=3 $$
$$ 2x-y=0 $$
라는 두 식이 있으면, 중요한 숫자는 각 식의 계수입니다. 이 계수를 표로 모으면
$$ \begin{bmatrix} 1 & 1 \ 2 & -1 \end{bmatrix} $$
가 됩니다. 행렬은 이렇게 반복되는 식의 뼈대를 꺼내 보여 줍니다.
이제 행렬과 벡터의 곱을 봅시다. 벡터
$$ \begin{bmatrix} x \ y \end{bmatrix} $$
는 두 입력값을 세로로 모아 놓은 것입니다. 여기에 행렬
$$ \begin{bmatrix} a & b \ c & d \end{bmatrix} $$
를 곱하면 결과는
$$ \begin{bmatrix} ax+by \ cx+dy \end{bmatrix} $$
가 됩니다.
이 식을 그냥 외우면 안 됩니다. 왜 이런 모양이 나오는지 읽어야 합니다. 첫째 행
$$ \begin{bmatrix} a & b \end{bmatrix} $$
은 첫 번째 출력을 만드는 규칙입니다. 입력
$$ \begin{bmatrix} x \ y \end{bmatrix} $$
를 받아
$$ ax+by $$
를 만듭니다. 둘째 행도 같은 방식으로 두 번째 출력
$$ cx+dy $$
를 만듭니다. 즉 행렬-벡터 곱은 입력 여러 개를 섞어서 출력 여러 개를 만드는 가중합 계산입니다.
이 관점은 AI에서 바로 이어집니다. 입력 특성이 여러 개 있을 때, 한 층의 뉴런 여러 개가 각각 다른 가중합을 계산합니다. 그 계산을 한 번에 적은 것이 행렬-벡터 곱입니다.
이제 행렬과 행렬의 곱을 봅시다. 이것도 본질은 같습니다. 규칙 하나를 적용한 뒤, 그 결과에 다시 다른 규칙을 적용하는 것입니다.
먼저
$$ y=Bx $$
라고 놓고, 그다음
$$ z=Ay $$
라고 하면, 두 식을 이어서
$$ z=A(Bx)=(AB)x $$
로 쓸 수 있습니다. 그래서 행렬곱
$$ AB $$
는 규칙 B를 먼저 적용하고, 그다음 규칙 A를 적용한 전체 결과를 한 번에 적은 것입니다.
여기서 중요한 사실 하나가 나옵니다. 일반적으로
$$ AB \ne BA $$
입니다. 이유는 적용 순서가 다르면 결과도 달라질 수 있기 때문입니다. 신발을 신고 양말을 신는 것과, 양말을 신고 신발을 신는 것이 다른 것과 같습니다. 행렬곱은 순서를 가진 연산입니다.
단위행렬은 아무것도 바꾸지 않는 규칙입니다. 2차원에서는
$$ I= \begin{bmatrix} 1 & 0 \ 0 & 1 \end{bmatrix} $$
입니다. 아무 벡터
$$ \begin{bmatrix} x \ y \end{bmatrix} $$
에 대해
$$ I \begin{bmatrix} x \ y \end{bmatrix} = \begin{bmatrix} x \ y \end{bmatrix} $$
가 됩니다.
역행렬은 적용한 규칙을 되돌릴 수 있을 때 등장합니다. 어떤 행렬
$$ A $$
에 대해
$$ A^{-1}A=I $$
가 되는 행렬
$$ A^{-1} $$
가 있으면, 우리는
$$ Ax=b $$
에서 양변에
$$ A^{-1} $$
를 곱해
$$ x=A^{-1}b $$
처럼 해를 구할 수 있습니다. 물론 모든 행렬이 역행렬을 가지는 것은 아닙니다. 어떤 규칙은 되돌릴 수 없기 때문입니다.
이제 선형시스템을 봅시다. 여러 개의 일차방정식을 한꺼번에 적으면
$$ Ax=b $$
가 됩니다. 여기서
$$ A $$
는 계수행렬이고,
$$ x $$
는 미지수를 모아 놓은 벡터,
$$ b $$
는 오른쪽 상수항을 모아 놓은 벡터입니다.
예를 들어
$$ x+y=3 $$
$$ 2x-y=0 $$
는
$$ \begin{bmatrix} 1 & 1 \ 2 & -1 \end{bmatrix} \begin{bmatrix} x \ y \end{bmatrix} = \begin{bmatrix} 3 \ 0 \end{bmatrix} $$
처럼 쓸 수 있습니다.
이렇게 쓰면 좋은 점이 분명합니다. 식을 낱개로 볼 때는 계산만 보이지만, 행렬로 묶으면 구조가 보입니다. 어떤 계수가 반복되는지, 어떤 규칙이 입력을 출력으로 바꾸는지, 해가 존재하려면 어떤 조건이 필요한지를 더 잘 따질 수 있습니다.
결국 행렬은 숫자를 예쁘게 적는 장식이 아닙니다. 반복되는 선형 계산을 구조로 읽게 해 주는 언어입니다. 그리고 선형시스템은 그 언어가 왜 필요한지 보여 주는 가장 기본적인 예입니다.
예제
- 행렬과 벡터를 곱해 출력 만들기 문제: 다음 값을 구하라.
$$ A= \begin{bmatrix} 1 & 2 \ 3 & 4 \end{bmatrix}, \qquad x= \begin{bmatrix} 1 \ 1 \end{bmatrix} $$
$$ Ax $$
풀이: 첫째 행은 첫 번째 출력을 만들고, 둘째 행은 두 번째 출력을 만든다.
$$ Ax= \begin{bmatrix} 1 & 2 \ 3 & 4 \end{bmatrix} \begin{bmatrix} 1 \ 1 \end{bmatrix} = \begin{bmatrix} 1\cdot 1 + 2\cdot 1 \ 3\cdot 1 + 4\cdot 1 \end{bmatrix} = \begin{bmatrix} 3 \ 7 \end{bmatrix} $$
해설: 각 행은 입력 벡터를 받아 출력 한 성분을 만든다. 그래서 행렬의 행 수만큼 출력 성분이 생긴다.
- 연립방정식을 행렬식으로 묶기 문제: 다음 연립방정식을
$$ Ax=b $$
형태로 써라.
$$ x+y=3 $$
$$ 2x-y=0 $$
풀이: 계수만 표로 모으면 된다.
$$ A= \begin{bmatrix} 1 & 1 \ 2 & -1 \end{bmatrix}, \qquad x= \begin{bmatrix} x \ y \end{bmatrix}, \qquad b= \begin{bmatrix} 3 \ 0 \end{bmatrix} $$
따라서
$$ \begin{bmatrix} 1 & 1 \ 2 & -1 \end{bmatrix} \begin{bmatrix} x \ y \end{bmatrix} = \begin{bmatrix} 3 \ 0 \end{bmatrix} $$
해설: 행렬은 식을 줄여 쓰는 도구이기도 하지만, 더 중요한 역할은 구조를 한꺼번에 보이게 하는 것이다.
- 단위행렬이 왜 아무것도 바꾸지 않는지 보기 문제: 다음을 계산하라.
$$ I= \begin{bmatrix} 1 & 0 \ 0 & 1 \end{bmatrix}, \qquad v= \begin{bmatrix} 2 \ 5 \end{bmatrix} $$
$$ Iv $$
풀이:
$$ Iv= \begin{bmatrix} 1 & 0 \ 0 & 1 \end{bmatrix} \begin{bmatrix} 2 \ 5 \end{bmatrix} = \begin{bmatrix} 1\cdot 2 + 0\cdot 5 \ 0\cdot 2 + 1\cdot 5 \end{bmatrix} = \begin{bmatrix} 2 \ 5 \end{bmatrix} $$
해설: 각 성분을 그대로 통과시키기 때문에 단위행렬은 곱해도 대상을 바꾸지 않는다.
스스로 점검
연습 문제
- 다음 행렬과 벡터의 곱을 구하라.
$$ \begin{bmatrix} 2 & 1 \ 0 & 3 \end{bmatrix} \begin{bmatrix} 1 \ 2 \end{bmatrix} $$
- 다음 연립방정식을
$$ Ax=b $$
형태로 써라.
$$ x-2y=1 $$
$$ 3x+y=7 $$
- 왜 일반적으로
$$ AB $$
와
$$ BA $$
가 같지 않을 수 있는지 설명하라. 4. 신경망의 한 층 계산이 왜 행렬-벡터 곱으로 표현되는지 설명하라.
복습 질문
- 행렬은 왜 단순한 숫자 표를 넘어 계산 규칙을 담는 언어가 되는가?
- 행렬-벡터 곱은 어떤 계산을 한 번에 묶는가?
- 선형시스템을
$$ Ax=b $$
로 적으면 무엇이 더 잘 보이는가?
체크포인트
- 행렬의 행과 열이 어떤 뜻을 가지는지 설명할 수 있다.
- 간단한 행렬-벡터 곱을 직접 계산할 수 있다.
- 연립방정식을 행렬 형태로 옮길 수 있다.
- 행렬곱이 규칙의 합성이란 뜻을 말로 설명할 수 있다.