27.18 행렬(Matrix)의 정의와 표기법 체계
1. 행렬의 정의
행렬(matrix)은 실수(또는 일반적으로 체의 원소)를 직사각형 배열로 나열한 수학적 객체이다. m개의 행(row)과 n개의 열(column)로 구성된 행렬을 m \times n 행렬이라 하며, A \in \mathbb{R}^{m \times n}으로 표기한다.
A = \begin{pmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \cdots & a_{mn} \end{pmatrix}
여기서 a_{ij} \in \mathbb{R}은 A의 (i, j)-성분(entry)으로, i번째 행과 j번째 열의 교차 위치에 놓인 원소이다. 간결하게 A = (a_{ij}) 또는 A = (a_{ij})_{m \times n}으로 표기하기도 한다. 성분을 참조할 때 (A)_{ij} 또는 [A]_{ij}와 같은 표기를 사용한다.
행렬은 대수적으로 \mathbb{R}^{m \times n}이라는 벡터 공간의 원소이다. 성분별 덧셈과 스칼라 곱을 정의하면 벡터 공간의 모든 공리가 만족되며, 차원은 mn이다.
2. 표기법 관례
선형대수학과 딥러닝에서 행렬, 벡터, 스칼라를 구분하기 위하여 다음 표기 관례가 널리 사용된다.
| 객체 | 표기 | 예시 |
|---|---|---|
| 스칼라 | 소문자 이탤릭체 | a, \alpha, \lambda |
| 벡터 | 소문자 굵은체 | \mathbf{v}, \mathbf{x}, \boldsymbol{\theta} |
| 행렬 | 대문자 굵은체 또는 이탤릭체 | A, W, \Sigma |
| 텐서 (3차 이상) | 대문자 산세리프체 또는 칼리그래피체 | \mathcal{X}, \mathsf{T} |
벡터는 특별히 명시하지 않는 한 열벡터(column vector)로 취급한다. 행벡터가 필요한 경우 전치(transpose)를 사용하여 \mathbf{v}^\top으로 표현한다.
3. 행렬의 행과 열 벡터
행렬 A \in \mathbb{R}^{m \times n}은 행벡터 또는 열벡터의 집합으로 두 가지 방식으로 분해할 수 있다.
열벡터 분해: A의 j번째 열을 \mathbf{a}_j \in \mathbb{R}^m이라 하면
A = [\mathbf{a}_1 \; \mathbf{a}_2 \; \cdots \; \mathbf{a}_n]
행벡터 분해: A의 i번째 행을 \mathbf{a}_i^\top \in \mathbb{R}^{1 \times n}이라 하면
A = \begin{pmatrix} \mathbf{a}_1^\top \\ \mathbf{a}_2^\top \\ \vdots \\ \mathbf{a}_m^\top \end{pmatrix}
이 두 관점은 행렬-벡터 곱과 행렬-행렬 곱의 해석에서 핵심적이다.
4. 특수 행렬
영행렬(zero matrix): 모든 성분이 0인 행렬이며 O 또는 \mathbf{0}_{m \times n}으로 표기한다.
단위 행렬(identity matrix): n \times n 정사각 행렬로서 대각 성분이 모두 1이고 나머지가 0인 행렬이다.
I_n = \begin{pmatrix} 1 & 0 & \cdots & 0 \\ 0 & 1 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & 1 \end{pmatrix}, \quad (I_n)_{ij} = \delta_{ij}
임의의 행렬 A \in \mathbb{R}^{m \times n}에 대하여 I_m A = A I_n = A가 성립한다.
대각 행렬(diagonal matrix): 대각 성분 이외의 모든 성분이 0인 정사각 행렬이다. D = \text{diag}(d_1, d_2, \ldots, d_n)으로 표기한다.
D = \begin{pmatrix} d_1 & 0 & \cdots & 0 \\ 0 & d_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & d_n \end{pmatrix}
대칭 행렬(symmetric matrix): A^\top = A를 만족하는 정사각 행렬이다. 즉 a_{ij} = a_{ji}이다. 공분산 행렬, 그람 행렬 등이 대칭 행렬의 대표적 사례이다.
상삼각 행렬(upper triangular matrix): i > j이면 a_{ij} = 0인 행렬이다. 하삼각 행렬(lower triangular matrix)은 i < j이면 a_{ij} = 0인 행렬이다.
희소 행렬(sparse matrix): 대부분의 성분이 0인 행렬이다. 총 성분 수 대비 영이 아닌 성분의 비율을 밀도(density)라 한다.
5. 전치 행렬
A \in \mathbb{R}^{m \times n}의 전치(transpose) A^\top \in \mathbb{R}^{n \times m}은 (A^\top)_{ij} = a_{ji}로 정의된다. 행과 열을 교환하는 연산이다.
전치의 성질:
- (A^\top)^\top = A
- (A + B)^\top = A^\top + B^\top
- (\alpha A)^\top = \alpha A^\top
- (AB)^\top = B^\top A^\top (곱의 순서가 역전됨)
6. 블록 행렬
행렬을 더 작은 부분 행렬(submatrix)로 분할하여 표현한 것을 블록 행렬(block matrix)이라 한다.
A = \begin{pmatrix} A_{11} & A_{12} \\ A_{21} & A_{22} \end{pmatrix}
여기서 A_{ij}는 부분 행렬이며, 행과 열의 크기가 적절히 맞아야 한다. 블록 행렬의 연산(덧셈, 곱셈)은 부분 행렬을 원소처럼 취급하여 수행할 수 있다. 단, 곱셈의 경우 부분 행렬 사이의 교환법칙은 일반적으로 성립하지 않는다.
7. 딥러닝에서의 행렬 표현
딥러닝에서 행렬은 데이터, 매개변수, 변환을 표현하는 기본 구조이다.
가중치 행렬: 완전 연결층의 가중치 W \in \mathbb{R}^{m \times d}에서, W의 (j, i)-성분 w_{ji}는 입력의 i번째 뉴런에서 출력의 j번째 뉴런으로의 연결 강도이다.
데이터 배치 행렬: 미니배치(minibatch)의 데이터를 행렬로 표현한다. N개의 데이터 포인트가 각각 d차원 벡터이면, 데이터 행렬 X \in \mathbb{R}^{N \times d}의 각 행이 하나의 데이터 포인트에 해당한다. 순전파 연산은 Z = XW^\top + \mathbf{1}\mathbf{b}^\top으로 행렬 곱셈을 통하여 배치 전체에 동시에 적용된다.
어텐션 행렬: 트랜스포머에서 어텐션 가중치 \alpha_{ij}는 n \times n 행렬 A를 형성하며, A의 (i,j)-성분은 i번째 토큰이 j번째 토큰에 부여하는 어텐션 가중치이다.
인접 행렬(adjacency matrix): 그래프 신경망(GNN)에서 그래프의 구조는 인접 행렬 A \in \{0, 1\}^{n \times n}으로 표현된다. a_{ij} = 1은 노드 i와 노드 j 사이에 간선이 존재함을 의미한다.
텐서와의 관계: 딥러닝 프레임워크(PyTorch, TensorFlow)에서 텐서(tensor)는 다차원 배열의 일반화이다. 0차 텐서는 스칼라, 1차 텐서는 벡터, 2차 텐서는 행렬에 대응한다. 3차 이상의 텐서는 행렬의 개념을 고차원으로 확장한 것으로, 미니배치 데이터, 다채널 이미지, 시퀀스 데이터 등을 표현하는 데 사용된다.