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