Chapter 27. 선형대수학 기초: 스칼라, 벡터, 행렬의 정의와 연산

Chapter 27. 선형대수학 기초: 스칼라, 벡터, 행렬의 정의와 연산

1. 서론: 딥러닝의 수학적 기반으로서의 선형대수학

선형대수학(linear algebra)은 딥러닝의 이론과 구현에서 가장 빈번하게 사용되는 수학 분야이다. 신경망의 입력 데이터는 벡터 또는 행렬로 표현되고, 각 층의 순전파(forward pass) 연산은 행렬 곱셈과 비선형 활성화 함수의 합성으로 구성된다. 경사 하강법에서의 매개변수 갱신, 배치(batch) 처리, 주의 메커니즘(attention mechanism)의 계산 등 딥러닝의 거의 모든 연산이 선형대수학의 언어와 도구로 기술된다. 본장에서는 선형대수학의 가장 기본적인 대상인 스칼라, 벡터, 행렬의 정의와 연산을 체계적으로 다룬다.

2. 스칼라(Scalar)

2.1 정의

스칼라(scalar)는 하나의 수치 값을 나타내는 0차 텐서이다. 실수 스칼라는 a \in \mathbb{R}로, 복소수 스칼라는 a \in \mathbb{C}로 표기한다. 딥러닝에서 스칼라는 학습률(learning rate) \eta, 손실 함수의 값 \mathcal{L}, 정규화 계수 \lambda 등 단일 수량을 나타내는 데 사용된다.

2.2 체(Field)의 구조

스칼라가 속하는 수 체계는 체(field)의 공리를 만족한다. 실수체 \mathbb{R}은 덧셈과 곱셈에 대해 닫혀 있고, 교환 법칙, 결합 법칙, 분배 법칙을 만족하며, 덧셈 항등원 0, 곱셈 항등원 1, 그리고 각 원소에 대한 덧셈 역원과 0이 아닌 원소에 대한 곱셈 역원이 존재한다. 이 체 구조는 벡터 공간의 정의에서 스칼라가 만족해야 할 기본 조건이다.

3. 벡터(Vector)

3.1 정의

벡터(vector)는 유한 개의 스칼라를 순서대로 나열한 1차 텐서이다. n차원 실수 벡터 \mathbf{x}는 다음과 같이 정의된다:

\mathbf{x} = \begin{pmatrix} x_1 \\ x_2 \\ \vdots \\ x_n \end{pmatrix} \in \mathbb{R}^n

여기서 x_i는 벡터의 i번째 성분(component) 또는 원소(element)이다. 관례적으로 벡터는 열벡터(column vector)로 표기하며, 행벡터(row vector)는 전치(transpose) 표기 \mathbf{x}^T = (x_1, x_2, \ldots, x_n)으로 나타낸다.

3.2 딥러닝에서의 벡터

딥러닝에서 벡터는 다양한 대상을 표현한다. 입력 특징(feature) 벡터, 신경망 층의 출력(활성화) 벡터, 매개변수(가중치) 벡터, 경사(gradient) 벡터, 단어 임베딩(word embedding) 벡터 등이 대표적이다.

3.3 벡터 연산

벡터 덧셈: 동일 차원의 두 벡터 \mathbf{x}, \mathbf{y} \in \mathbb{R}^n에 대해 성분별(element-wise) 덧셈이 정의된다:

\mathbf{x} + \mathbf{y} = \begin{pmatrix} x_1 + y_1 \\ x_2 + y_2 \\ \vdots \\ x_n + y_n \end{pmatrix}

스칼라 곱: 스칼라 c \in \mathbb{R}와 벡터 \mathbf{x} \in \mathbb{R}^n의 곱:

c\mathbf{x} = \begin{pmatrix} cx_1 \\ cx_2 \\ \vdots \\ cx_n \end{pmatrix}

이 두 연산이 벡터 공간의 기본 연산이다.

내적(Inner Product / Dot Product): 두 벡터 \mathbf{x}, \mathbf{y} \in \mathbb{R}^n의 내적은 스칼라 값이다:

\mathbf{x} \cdot \mathbf{y} = \mathbf{x}^T \mathbf{y} = \sum_{i=1}^{n} x_i y_i

내적은 신경망의 각 뉴런에서 입력 벡터와 가중치 벡터 사이의 연산으로, 딥러닝에서 가장 기본적인 계산 단위이다.

노름(Norm): 벡터의 크기를 측정하는 함수이다. L^p 노름은 다음과 같이 정의된다:

\|\mathbf{x}\|_p = \left(\sum_{i=1}^{n} |x_i|^p\right)^{1/p}

p = 2인 경우 유클리드 노름(Euclidean norm) \|\mathbf{x}\|_2 = \sqrt{\sum_i x_i^2}이며, p = 1인 경우 맨해튼 노름(Manhattan norm) \|\mathbf{x}\|_1 = \sum_i |x_i|이다. L^1 노름과 L^2 노름은 딥러닝에서 정규화(regularization)에 사용된다.

4. 행렬(Matrix)

4.1 정의

행렬(matrix)은 스칼라를 직사각형 배열로 나열한 2차 텐서이다. m \times n 실수 행렬 \mathbf{A}m개의 행(row)과 n개의 열(column)을 가진다:

\mathbf{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} \in \mathbb{R}^{m \times n}

a_{ij}i번째 행, j번째 열의 원소이다.

4.2 딥러닝에서의 행렬

딥러닝에서 행렬의 주요 용도는 다음과 같다:

  • 가중치 행렬(weight matrix): 완전 연결 층(fully connected layer)에서 입력 벡터 \mathbf{x} \in \mathbb{R}^n을 출력 벡터 \mathbf{y} \in \mathbb{R}^m으로 변환하는 선형 사상 \mathbf{y} = \mathbf{W}\mathbf{x} + \mathbf{b}의 가중치 \mathbf{W} \in \mathbb{R}^{m \times n}.
  • 데이터 배치: N개의 d차원 데이터 표본을 행으로 쌓은 데이터 행렬 \mathbf{X} \in \mathbb{R}^{N \times d}.
  • 주의 행렬(attention matrix): 트랜스포머(Transformer) 아키텍처에서 질의(query)와 키(key) 사이의 유사도를 나타내는 행렬.

4.3 행렬 연산

행렬 덧셈: 동일 크기의 두 행렬 \mathbf{A}, \mathbf{B} \in \mathbb{R}^{m \times n}에 대해 (\mathbf{A} + \mathbf{B})_{ij} = a_{ij} + b_{ij}.

스칼라 곱: (c\mathbf{A})_{ij} = c \cdot a_{ij}.

행렬 곱셈: \mathbf{A} \in \mathbb{R}^{m \times n}\mathbf{B} \in \mathbb{R}^{n \times p}의 곱 \mathbf{C} = \mathbf{A}\mathbf{B} \in \mathbb{R}^{m \times p}:

c_{ij} = \sum_{k=1}^{n} a_{ik} b_{kj}

행렬 곱셈은 교환 법칙을 만족하지 않는다: 일반적으로 \mathbf{A}\mathbf{B} \neq \mathbf{B}\mathbf{A}이다. 결합 법칙 (\mathbf{A}\mathbf{B})\mathbf{C} = \mathbf{A}(\mathbf{B}\mathbf{C})과 분배 법칙 \mathbf{A}(\mathbf{B} + \mathbf{C}) = \mathbf{A}\mathbf{B} + \mathbf{A}\mathbf{C}은 성립한다.

전치(Transpose): \mathbf{A}^T\mathbf{A}의 행과 열을 교환한 행렬이다: (\mathbf{A}^T)_{ij} = a_{ji}. 주요 성질: (\mathbf{A}\mathbf{B})^T = \mathbf{B}^T\mathbf{A}^T.

아다마르 곱(Hadamard Product): 동일 크기의 두 행렬의 성분별 곱:

(\mathbf{A} \odot \mathbf{B})_{ij} = a_{ij} b_{ij}

아다마르 곱은 LSTM(Long Short-Term Memory)의 게이트 메커니즘 등에서 사용된다.

5. 특수 행렬

5.1 항등 행렬

항등 행렬(identity matrix) \mathbf{I}_n \in \mathbb{R}^{n \times n}은 대각 원소가 모두 1이고 나머지가 0인 정방 행렬이다: (\mathbf{I}_n)_{ij} = \delta_{ij} (크로네커 델타). 임의의 행렬 \mathbf{A}에 대해 \mathbf{A}\mathbf{I} = \mathbf{I}\mathbf{A} = \mathbf{A}이다.

5.2 대각 행렬

대각 행렬(diagonal matrix)은 대각 원소 이외의 모든 원소가 0인 행렬이다: \text{diag}(d_1, d_2, \ldots, d_n). 대각 행렬의 곱셈, 역행렬, 행렬식 등의 계산이 O(n)으로 효율적이다.

5.3 대칭 행렬

대칭 행렬(symmetric matrix)은 \mathbf{A} = \mathbf{A}^T를 만족하는 정방 행렬이다. 공분산 행렬(covariance matrix), 헤시안 행렬(Hessian matrix) 등이 대칭 행렬의 대표적 사례이다. 실수 대칭 행렬은 항상 실수 고유값을 가지며, 직교 고유벡터로 대각화 가능하다(스펙트럼 정리).

5.4 직교 행렬

직교 행렬(orthogonal matrix)은 \mathbf{Q}^T\mathbf{Q} = \mathbf{Q}\mathbf{Q}^T = \mathbf{I}를 만족하는 정방 행렬이다. 직교 행렬에 의한 변환은 벡터의 노름과 내적을 보존하며, 이는 회전(rotation)과 반사(reflection)에 해당한다. 직교 초기화(orthogonal initialization)는 심층 신경망의 가중치 초기화에서 경사 소실/폭발 문제를 완화하는 데 사용된다.

6. 행렬식과 역행렬

6.1 행렬식

정방 행렬 \mathbf{A} \in \mathbb{R}^{n \times n}의 행렬식(determinant) \det(\mathbf{A})은 선형 변환이 공간의 부피를 얼마나 확대 또는 축소하는지를 나타내는 스칼라 값이다. 2 \times 2 행렬의 경우:

\det\begin{pmatrix} a & b \\ c & d \end{pmatrix} = ad - bc

\det(\mathbf{A}) \neq 0이면 \mathbf{A}는 가역(invertible)이다.

6.2 역행렬

정방 행렬 \mathbf{A}의 역행렬(inverse matrix) \mathbf{A}^{-1}\mathbf{A}\mathbf{A}^{-1} = \mathbf{A}^{-1}\mathbf{A} = \mathbf{I}를 만족하는 유일한 행렬이다. 역행렬은 \det(\mathbf{A}) \neq 0일 때에만 존재한다.

주요 성질: (\mathbf{A}\mathbf{B})^{-1} = \mathbf{B}^{-1}\mathbf{A}^{-1}, (\mathbf{A}^T)^{-1} = (\mathbf{A}^{-1})^T.

7. 브로드캐스팅과 성분별 연산

딥러닝 프레임워크에서는 차원이 다른 텐서 간의 연산을 자동으로 확장하는 브로드캐스팅(broadcasting) 규칙이 적용된다. 예를 들어, 행렬 \mathbf{A} \in \mathbb{R}^{m \times n}과 벡터 \mathbf{b} \in \mathbb{R}^n의 덧셈에서 \mathbf{b}가 각 행에 복제되어 성분별 덧셈이 수행된다. 이는 편향(bias) 벡터의 덧셈 \mathbf{Y} = \mathbf{X}\mathbf{W} + \mathbf{b}에서 표준적으로 사용된다.

8. 결론

스칼라, 벡터, 행렬은 선형대수학의 기본 대상이며, 딥러닝에서 데이터의 표현, 모형의 구성, 연산의 실행에 사용되는 핵심 구조이다. 벡터 덧셈과 스칼라 곱은 벡터 공간의 기본 연산이고, 행렬 곱셈은 선형 변환을 구현하며, 내적은 신경망의 뉴런 연산의 핵심이다. 이러한 기본 정의와 연산에 대한 엄밀한 이해는 이후의 선형 변환, 고유값 분해, 특이값 분해 등 고급 주제를 학습하기 위한 필수적 토대이다.