Processing math: 44%
본문 바로가기
  • 책상 밖 세상을 경험할 수 있는 Playground를 제공하고, 수동적 학습에서 창조의 삶으로의 전환을 위한 새로운 라이프 스타일을 제시합니다.
Miscellaneous

[2024-2] 박경태 - deeplearning: Linear Algebra

by corqjffp010 2024. 12. 31.

https://www.deeplearningbook.org/contents/linear_algebra.html

 

https://www.deeplearningbook.org/contents/linear_algebra.html

Chapter 2 Linear Algebra Linear algebra is a branch of mathematics that is widely used throughout science and engineering. Yet because linear algebra is a form of continuous rather than discrete mathematics, many computer scientists have little experience

www.deeplearningbook.org

 

1. 선형대수의 기초

선형대수의 핵심 개념은 다양한 수학적 객체의 정의와 이를 다루는 연산으로 구성됩니다. 이 절에서는 스칼라, 벡터, 행렬, 텐서와 같은 주요 개념을 설명하고 이들 간의 관계를 정리합니다.

1.1 스칼라 (Scalar)

  • 스칼라는 하나의 숫자를 나타내며, 선형대수의 가장 기본적인 단위입니다.
  • 일반적으로 이탤릭체 소문자로 표기하며, 실수 집합 sR

    에 속하는 값을 사용합니다.  
    예: sR (스칼라 s는 실수이다).

1.2 벡터 (Vector)

  • 벡터는 순서가 있는 숫자의 배열로, 1차원 구조를 가집니다.

1.3 행렬 (Matrix)

  • 행렬은 2차원 배열로, m×n 크기의 숫자 배열로 정의됩니다.  
    대문자 (A)로 표기하며, 요소는 ai,j로 나타냅니다 (i는 행, j는 열).  
    예: ARm×n  
    (행렬 A는 m×n 크기의 실수 행렬이다).

1.4 텐서 (Tensor)

  • 텐서는 다차원 배열로, 행렬을 2차원 텐서로 볼 수 있으며, 이를 일반화한 구조입니다.  
    텐서는 일반적으로 기호 T로 나타내며, 특정 차원에서의 좌표 (i,j,k,)에 대해 값을 가집니다.

1.5 주요 연산: 전치 (Transpose)

  • 행렬의 전치란 주대각선을 기준으로 행과 열을 뒤바꾸는 연산입니다.  
    A는 행렬 A의 전치 행렬로 정의됩니다.  
    (A)i,j=Aj,i
    벡터의 전치 연산은 열 벡터를 행 벡터로 바꾸거나 그 반대로 수행합니다.

2. 행렬 연산 및 선형방정식

이 절에서는 행렬 연산의 정의와 성질을 정리하고, 이를 선형방정식의 해결에 어떻게 활용하는지 설명합니다.

2.1 행렬 곱셈

  • 행렬 곱셈은 두 행렬 A와 B의 곱 C를 계산하는 연산입니다.  
    A가 m×n 행렬이고, B가 n×p 행렬일 때, 곱셈의 결과인 C는 m×p 크기를 갖습니다.  
    각 요소 ci,j는 다음과 같이 계산됩니다:  
    ci,j=nk=1ai,kbk,j
    행렬 곱셈은 교환법칙이 성립하지 않으며 (ABBA), 결합법칙과 분배법칙은 성립합니다.

2.2 행렬 벡터 곱셈

  • 행렬 A와 벡터 x의 곱은 벡터 b로 나타내며, 다음과 같이 계산됩니다:  
    b=Ax,bi=nj=1ai,jxj
    이는 선형방정식 Ax=b를 표현하는 간결한 방식으로 사용됩니다.

2.3 선형방정식의 해법

  • 선형방정식 Ax=b의 해를 찾는 문제는 다음과 같이 나타낼 수 있습니다:  
    ARm×n: 계수 행렬  
    xRn: 미지수 벡터  
    bRm: 결과 벡터  
    방정식의 해는 x=A1b로 표현되며, 여기서 A1은 A의 역행렬입니다.

2.4 역행렬의 존재 조건

  • 역행렬 A1이 존재하려면 다음 조건을 만족해야 합니다:  
    1. A는 정사각행렬이어야 함 (m=n).  
    2. A의 열 벡터가 선형 독립이어야 함.  
    3. A의 행렬식이 0이 아니어야 함 (det).

2.5 행렬 연산의 응용

  • 행렬 곱셈과 전치를 이용해 여러 수학적 문제를 간결하게 표현할 수 있습니다.  
    예를 들어, 선형회귀에서는 다음과 같이 \mathbf{w}를 계산합니다:  
    \mathbf{w} = (\mathbf{X}^\top \mathbf{X})^{-1} \mathbf{X}^\top \mathbf{y}   
    여기서 \mathbf{X}는 입력 데이터 행렬, \mathbf{y}는 결과 벡터입니다.

3. 행렬 분해 기법

행렬 분해는 대규모 계산을 단순화하고 행렬의 속성을 분석하는 데 유용합니다. 이 절에서는 고유값 분해와 특이값 분해를 중심으로 살펴봅니다.

3.1 고유값 분해 (Eigendecomposition)

고유값 분해는 정사각행렬 \mathbf{A}를 고유벡터와 고유값으로 분해하는 방법입니다.  
\mathbf{A}의 고유값 \lambda와 고유벡터 \mathbf{v}는 다음 관계를 만족합니다:  
\mathbf{A}\mathbf{v} = \lambda \mathbf{v}   
고유값과 고유벡터를 사용해 \mathbf{A}를 다음과 같이 표현할 수 있습니다:  
\mathbf{A} = \mathbf{V} \Lambda \mathbf{V}^{-1}   
여기서,  
\mathbf{V}: 고유벡터로 구성된 행렬  
\Lambda: 고유값을 대각선에 가진 대각행렬  
고유값 분해의 특징

  • 실대칭 행렬은 항상 실수 고유값과 직교하는 고유벡터를 가집니다.
  • 고유값 분해를 통해 행렬의 성질(예: 양의 정부호성)을 분석할 수 있습니다.

3.2 특이값 분해 (Singular Value Decomposition, SVD)

  • 특이값 분해는 임의의 m \times n 행렬 \mathbf{A}를 세 행렬로 분해하는 방법입니다:  
    \mathbf{A} = \mathbf{U} \mathbf{D} \mathbf{V}^\top   
    여기서,  
    \mathbf{U}\mathbf{A}\mathbf{A}^\top의 고유벡터로 이루어진 m \times m 직교행렬  
    \mathbf{V}\mathbf{A}^\top\mathbf{A}의 고유벡터로 이루어진 n \times n 직교행렬  
    \mathbf{D}: 특이값(고유값의 제곱근)을 대각선으로 가진 m \times n 대각행렬  

특이값 분해의 활용

  1. 차원 축소: SVD를 통해 중요한 정보만 남기고 데이터의 차원을 줄일 수 있습니다.
  2. 유사역행렬 (Moore-Penrose Pseudoinverse):
    • SVD를 이용해 비정사각행렬의 유사역행렬을 계산할 수 있습니다: \mathbf{A}^+ = \mathbf{V} \mathbf{D}^+ \mathbf{U}^\top 여기서 \mathbf{D}^+\mathbf{D}의 대각선 원소의 역수를 취한 대각행렬입니다.
  3. 선형 방정식 근사: 방정식 \mathbf{A}\mathbf{x} = \mathbf{b}가 해를 가지지 않을 때, SVD를 이용해 최소 제곱해를 구할 수 있습니다: \mathbf{x} = \mathbf{A}^+ \mathbf{b}

3.3 고유값 분해와 SVD의 차이점

  • 고유값 분해는 정사각행렬에서만 가능하지만, SVD는 모든 행렬에 대해 적용 가능합니다.
  • SVD는 고유값 분해보다 더 일반적인 분해 방법으로, 대규모 데이터 분석에 널리 활용됩니다.

4. 벡터 및 행렬의 크기와 특성

벡터와 행렬의 크기를 측정하고, 이들의 특성을 이해하는 것은 선형대수에서 매우 중요합니다. 이 절에서는 노름(Norm), 대각합(Trace), 그리고 행렬식(Determinant)의 정의와 활용을 살펴봅니다.

4.1 벡터 노름 (Norm)

    • 노름은 벡터의 크기(또는 길이)를 측정하는 함수입니다.  
      일반적인 L_p 노름은 다음과 같이 정의됩니다:  
      \|\mathbf{x}\|_p = \left( \sum_{i} |x_i|^p \right)^{1/p}, \quad p \geq 1

      주요 노름:   
      L_1 노름: 벡터 요소의 절댓값 합  
      \|\mathbf{x}\|_1 = \sum_i |x_i|   

      L_2 노름: 유클리드 거리로, 가장 흔히 사용됨  
      \|\mathbf{x}\|_2 = \sqrt{\sum_i x_i^2}   

      L_\infty 노름: 벡터 요소 중 절댓값이 가장 큰 값  
      \|\mathbf{x}\|_\infty = \max_i |x_i|

4.2 행렬 노름

  • 행렬의 크기를 측정할 때 자주 사용하는 방법은 프로베니우스 노름입니다:  
    \|\mathbf{A}\|_F = \sqrt{\sum_{i,j} a_{i,j}^2}   
    이는 벡터 L_2 노름을 행렬로 확장한 형태로 볼 수 있습니다.

4.3 대각합 (Trace)

    • 대각합은 행렬의 대각선 원소들의 합으로 정의됩니다:  
      \text{Tr}(\mathbf{A}) = \sum_i a_{i,i}

      주요 성질:   
      1. \text{Tr}(\mathbf{A} + \mathbf{B}) = \text{Tr}(\mathbf{A}) + \text{Tr}(\mathbf{B})  
      2. \text{Tr}(\mathbf{A}\mathbf{B}) = \text{Tr}(\mathbf{B}\mathbf{A})

4.4 행렬식 (Determinant)

  • 행렬식은 정사각행렬에서 공간의 확장 또는 축소 비율을 나타내는 스칼라 값입니다.  
    \det(\mathbf{A})는 다음과 같은 특징을 가집니다:  
    \det(\mathbf{A}) = 0: 행렬 \mathbf{A}가 가역성이 없음을 의미.  
    |\det(\mathbf{A})|: 행렬 변환이 공간을 얼마나 압축하거나 확장하는지를 나타냄.  

    행렬식 계산 예시 (2 \times 2 행렬):  
    \mathbf{A} = \begin{bmatrix} a & b \\ c & d \end{bmatrix}, \quad \det(\mathbf{A}) = ad - bc

5. 응용 예시: 주성분 분석 (PCA)

주성분 분석(PCA)은 차원 축소 및 데이터 압축을 위한 기법으로, 선형대수의 개념을 활용하여 데이터의 주요 특징을 추출합니다. 이 절에서는 PCA의 정의와 작동 방식을 설명합니다.

5.1 PCA의 목적

  • PCA는 고차원 데이터를 저차원으로 변환하면서 중요한 정보를 최대한 보존하는 기법입니다.
  • 주로 데이터의 분산을 최대화하는 방향(주성분)을 찾는 데 사용됩니다.

5.2 기본 아이디어

    • 데이터 중심화:  
      데이터 집합 \{ \mathbf{x}^{(1)}, \mathbf{x}^{(2)}, \ldots, \mathbf{x}^{(m)} \}에서 평균을 제거합니다:  
      \mathbf{\tilde{x}}^{(i)} = \mathbf{x}^{(i)} - \mu, \quad \mu = \frac{1}{m} \sum_{i=1}^m \mathbf{x}^{(i)}

      공분산 행렬 계산:   
      중심화된 데이터를 사용해 공분산 행렬 \mathbf{C}를 계산합니다:  
      \mathbf{C} = \frac{1}{m} \sum_{i=1}^m \mathbf{\tilde{x}}^{(i)} \mathbf{\tilde{x}}^{(i)\top}

      고유값 분해:   
      공분산 행렬 \mathbf{C}의 고유값과 고유벡터를 계산합니다:  
      \mathbf{C} = \mathbf{V} \Lambda \mathbf{V}^\top   
      여기서 \Lambda는 고유값의 대각행렬, \mathbf{V}는 고유벡터 행렬입니다.

      주성분 선택:  
      가장 큰 고유값에 대응하는 고유벡터를 선택하여 데이터의 주요 축을 정의합니다.  
      k-차원으로 축소하려면, 상위 k개의 고유벡터를 선택해 행렬 \mathbf{W}를 만듭니다.

      데이터 변환:   
      원본 데이터를 저차원 공간으로 투영합니다:  
      \mathbf{z} = \mathbf{W}^\top \mathbf{\tilde{x}}

5.3 PCA의 특징

  • 분산 최대화: 선택된 주성분은 데이터의 분산을 가장 잘 설명하는 축입니다.
  • 차원 축소: PCA는 차원을 줄이면서도 데이터의 주요 구조를 유지합니다.
  • 선형 변환: PCA는 선형대수적 변환을 기반으로 동작하며, 비선형적 데이터 구조를 모델링하지 못할 수 있습니다.

5.4 PCA의 응용

  • 데이터 시각화:
    • 고차원 데이터를 2차원 또는 3차원으로 축소해 시각화에 활용합니다.
  • 특징 추출:
    • 머신러닝에서 중요한 특징을 선택하는 데 사용됩니다.
  • 노이즈 제거:
    • 주요 성분만 남겨 데이터에서 노이즈를 제거하는 데 유용합니다.

5.5 사례: 2D 데이터의 PCA

  1. m=5m = 5개의 데이터 포인트가 주어졌다고 가정합니다.
  2. 데이터를 중심화하고 공분산 행렬을 계산합니다.
  3. 공분산 행렬의 고유값과 고유벡터를 구합니다.
  4. 가장 큰 고유값에 대응하는 고유벡터를 사용해 데이터를 새로운 축으로 투영합니다.