[딥러닝을 위한 수학] CHAPTER 6. 선형대수 2부

[딥러닝을 위한 수학] CHAPTER 6. 선형대수 2부

Tags
Math
딥러닝을 위한 수학
Published
February 14, 2025
Author
JH
태그
종류
학문 분야

6.1 정방행렬

6.1.1 왜 정방행렬인가?

  • 행렬에 열벡터를 곱하면 또 다른 열벡터가 나옴
    • 이를 기하학적으로 해석하자면, 이 예는 2 x 4 행렬로 4차원 공간의 한 점에 해당하는 4 x 1 열벡터를 2차원 공간의 한 점으로 사상(mapping)한 것에 해당함
    • 점 값들에 2 x 4 행렬의 성분들을 곱하기만 하므로 이러한 사상은 선형(linear)임
  • 이러한 관점에서 행렬이라는 것은 한 공간의 점을 다른 공간의 점으로 변환하는 수단임
  • n x n 형태의 행렬, 즉 정방행렬의 경우에는 n차원에서 다시 n차원으로의 사상이 됨
  • 행렬을 이용하여 한 공간의 점을 다른 공간의 점으로 사상한다는 개념을 확장하면, 회전행렬(rotation matrix)을 이용해서 점들의 집합을 한 축을 기준으로 회전할 수 있음
  • 행렬을 이용하면 상관변환(affine transformation)이라는 것을 만들 수 있음
    • 이 수식에서 보듯이, 상관변환은 행렬 변환 A와 이동(translation) b를 적용해서 x를 새 벡터 y로 사상함

6.1.2 전치, 대각합, 거듭제곱

  • 전치(transpose) : 다음처럼 행렬 성분들의 색인들을 맞바꾼 것
  • 대각합(trace) : 대각 성분들을 합한 것
    • 그리고 도 성립함
  • 마지막으로, 정방행렬을 자기 자신과 곱할 수 있음
    • 정방행렬의 거듭제곱은 자신과의 행렬 곱셈을 반복한 것이므로, 그냥 개별 성분을 거듭제곱한 것과는 다름
    • 행렬의 거듭제곱은 스칼라 거듭제곱과 동일한 지수법칙들을 따름

6.1.3 특별한 정방행렬들

  • 영행렬(zero matrix) : 모든 성분이 0인 행렬
  • 일행렬(ones matrix) : 모든 성분이 1인 행렬

6.1.4 단위행렬

  • 단위행렬(identity matrix) or 항등행렬 : 대각 성분들이 1이고 나머지는 모두 0인 정방행렬
    • 단위 행렬은 행렬 곱셈의 항등원임. 즉, n x n 정방행렬 A와 n x n 단위행렬 I에 대해 다음이 성립함

6.1.4.1 삼각행렬

  • 삼각행렬(triangular matrix) :
    • 상삼각행렬(upper triangular matrix) : 주대각과 그 위쪽에만 0이 아닌 성분들이 있는 행렬
    • 하삼각행렬(lower triangular matrix) : 주대각과 그 아래쪽에만 0이 아닌 성분들이 있는 행렬
  • 대각행렬(diagonal matrix) : 주대각에만 0이 아닌 성분들이 있는 행렬

6.1.5 행렬식

  • 행렬식(determinant) : 정방행렬을 하나의 스칼라로 사상하는 함수
    • 행렬식의 주된 용도는 행렬의 고윳값을 계산하는 것임
    • 다음은 3 x 3 행렬 A의 행렬식을 표기한 예임
  • 다음은 행렬식의 주요 성질임
      1. A에 모든 성분이 0인 행이나 열이 존재하면
      1. A에 동일한 두 행이 존재하면
      1. A가 삼각행렬이면(상삼각이든 하삼각이든)
      1. A가 대각행렬이면
      1. 단위행렬의 행렬식은 차수와 무관하게 항상 1임
      1. 두 행렬의 곱의 행렬식은 두 행렬의 행렬식들의 곱임. 즉,
  • 정방행렬의 행렬식은 다음과 같은 점화식을 이용해 구할 수 있음
    • 임의의 1 x 1 행렬 A에 대해 다음이 성립함
    • 행렬 A의 (i, j)-소행렬은 A에서 i번 행과 j번 열을 제거한 행렬임. 예를 들어
      • 라고 할 때
    • 다음으로, 소행렬 여인수(cofactor) 를 정의해야 함
    • 이제 A의 행렬식을 위한 점화식을 만들 준비가 되었음. 이 점화식은 여인수 전개(cofactor expansion)를 이용함

6.1.6 역행렬

  • 역행렬(inverse matrix) : 아래 식을 만족하는
    • 이 실제로 존재할 때, 가역행렬(invertable matrix)이라고 부름
  • 만일 이 존재하면 다음이 성립함
  • 역행렬의 또 다른 유용한 성질은 다음과 같음
  • 마지막으로, 대각행렬의 역행렬은 대각 성분들의 역수로 이루어진 행렬임
  • 가역행렬이 아닌 행렬을 특이행렬(singular matrix)이라고 부름
  • 가역행렬은 비특이(nonsigular) 또는 비퇴화(nondegenerate) 행렬이라고 부름

6.1.7 대칭행렬, 직교행렬, 유니터리 행렬

  • 대칭행렬(symmetric matrix) : 다음 조건을 충족하는 정방행렬 A
    • 대칭행렬의 성분들은 주대각을 기준으로 대칭이기 때문에, 대칭행렬들의 곱셈에는 교환법칙이 성립함. 즉,
    • 그리고 대칭행렬의 역행렬은 대칭행렬임
  • 직교행렬(orthogonal matrix) : 다음 조건을 충족하는 정방행렬 A
    • 직교행렬 A에 대해 다음이 성립함
    • 따라서
  • 유니터리 행렬(unitary matrix) : 다음 조건을 충족하는 복소수 행렬 U
    • 켤레전치(conjugate transpose) 행렬이라고 부름
      • 켤레전치는 원래의 행렬을 보통의 방식으로 전치한 후 성분들에 복소켤레 연산을 적용해서 로 바꾼 것임
      • 켤레전치 행렬을 에르미트 수반행렬(Hermitian adjoint)이라고 부르기도 함
      • 행렬과 그것의 켤레전치가 동일할 때, 그런 행렬을 에르미트 행렬(Hermitian matrix)이라고 부름
        • 실수 대칭행렬은 에르미트 행렬임

6.1.8 대칭행렬의 정부호성

  • 성분들이 실수인 n x n 대칭행렬 B에 대해, 이 행렬이 벡터를 어떤 식으로 사상하는지를, 사상된 벡터와 원래의 벡터의 내적으로 특징지을 수 있음
  • 양의 정부호(positive definite) : 다음을 충족하는 대칭행렬 B
  • 음의 정부호(negative definite) : 다음을 충족하는 대칭행렬 B
  • 양의 준정부호(positive semidefinite) : 다음을 충족하는 B
  • 음의 준정부호(negative semidefinite) : 다음을 충족하는 B
  • 마지막으로, 양의 준정부호도 아니고 음의 준정부호도 아닌 실수 대칭행렬을 가리켜 부정부호 행렬(indefinite matrix)이라고 부름
  • 행렬의 ‘정부호성(definiteness)’은 다음 절에서 살펴볼 고윳값과 관련이 있음
    • 양의 정부호인 대칭행렬의 모든 고윳값은 양수이고,
    • 음의 정부호인 대칭행렬의 모든 고윳값은 음수임

6.2 고윳값과 고유벡터

  • 앞에서 언급했듯이, 정방행렬은 한 공간의 벡터를 그와 같은 공간에 있는 다른 벡터로 사상함
    • 여기서 A는 정방행렬이고 는 스칼라 값, 는 영벡터가 아닌 열벡터임
    • 이러한 관계에서 의 한 고유벡터(eigenvector)이고, 는 그 고유벡터의 고윳값(eigenvalue)
    • 기하학적으로 해석하자면, 위 식은 공간에서 의 고유벡터에 를 적용하면 방향은 그대로이고 길이만 더 길거나 짧은 벡터가 나온다는 뜻임

6.2.1 고윳값과 고유벡터 구하기

  • 행렬의 고윳값들을 구하는(고유벡터가 존재한다고 할 때) 방법은 다음과 같음
    • 위 식의 우변을 좌변으로 넘겨서 다음과 같이 정리함
    • 영벡터가 아닌 벡터가 위 식의 근이 되려면, 의 행렬식이 0이어야 함
  • 예를 들어 2 x 2 행렬에서 가 어떤 모습인지 살펴보면,
    • 앞의 행렬의 행렬식은 다음과 같음
    • 이 과정에서 구한 다항식을 가리켜 특성 다항식(characteristic polynomial)이라고 부르고,
    • 특성 다항식을 0으로 두어서 만든 방정식을 특성 방정식(characteristic equation)이라고 부름
    • n x n 행렬의 특성 다항식은 n차 다항식임
      • n차방정식의 근은 최대 n개이므로, n x n 행렬의 서로 다른 고윳값은 최대 n개임
  • 주대각 성분들이 0이 아닌 삼각행렬의 고윳값들은 쉽게 계산할 수 있음
    • 삼각행렬에서는(그리고 대칭행렬에서도) 주대각 성분들이 바로 고윳값들임

6.3 벡터 노름과 거리 함수

6.3.1 L-노름과 거리 함수

  • n차원 벡터 x의 p-노름 :
    • 일반적으로는 이런 노름을 노름이라고 부름
    • 제5장에서 이야기한 벡터의 크기는 바로 L2-노름
    • 심층학습에는 L2-노름과 함께 L1-노름도 아주 많이 쓰임
    • 이 두 노름 외에 종종 보게 될 노름으로 -노름이 있음
  • x를 두 벡터의 차이 x - y로 대체하면, 노름을 두 벡터의 거리 측도로 간주할 수 있음
    • 이를 L2-노름에 적용한 것이 L2-거리(L2-distance)이며, 이것이 두 벡터의 유클리드 거리(Euclidean distance)임
    • L1-거리도 마찬가지 방식으로 정의할 수 있으며, L1-거리를 흔히 맨해튼 거리(Manhatten distance)라고 부름
    • -거리는 체비쇼프 거리(Chebyshev distance)라고 부르기도 함
  • 노름들은 심층학습에서 정규화 항으로 쓰이기도 함

6.3.2 공분산 행렬

  • 공분산 행렬(covariance matrix) : 여러 변수 간의 공분산을 포함하는 대칭 행렬로, 데이터의 분포와 변수들 간의 상관 관계를 나타냄
    • 공분산 행렬의 주대각 성분들은 개별 특징들의 분산을 반영함
    • 공분산 행렬은 항상 대칭행렬임. 즉,

6.3.3 마할라노비스 거리

  • 마할라노비스 거리(Mahalanobis distance) :
    • 여기서 는 하나의 벡터이고 는 특징별 평균값들로 이루어진 벡터, 는 공분산 행렬임
      • 이 거리 함수는 공분산 행렬 자체가 아니라 공분산 행렬의 역행렬을 사용함
    • 위 식을, 벡터와 평균 벡터가 인 분포 사이의 거리를 측정하는 것이라고 생각할 수 있음
      • 는 그 분포의 산포(dispersion) 정도를, 다시 말해 값들이 어느 정도나 퍼져 있는지를 반영함
    • 위 식에서 와 같은 데이터 집합에 있는 다른 한 벡터 로 대체하면, 은 두 벡터의, 데이터 집합의 분산을 고려한 거리가 됨

6.3.4 쿨백-라이블러 발산값

  • 쿨백-라이블러 발산값(Kullback-Leibler divergence) : 두 확률 분포가 어느 정도나 비슷한지를 나타내는 측도로, 상대적 엔트로피(relative entropy)라고 부르기도 함
    • KL-발산값이 작을수록 두 분포가 비슷한 것임
    • KL-발산값은 정보 이론적인 측도로, 이진로그를 사용하는 경우 KL-발산값은 정보의 비트수를 말해줌
    • 자연로그 을 사용할 수도 있는데, 이 경우 KL-발산값의 단위는 비트가 아니라 내트(nat)
  • KL-발산값은 수학적인 의미에서 거리 함수가 아님
    • KL-발산값은 대칭적이지 않음. 즉,

6.4 주성분 분석

  • 주성분 분석(Principal component analysis, PCA) : 데이터가 주로 어느 방향으로 흩어져(scatter) 있는지를 파악하기 위한 기법
    • 데이터 집합의 자료점(data point)들이 가장 길게 흩어져 있는 방향을 가리켜 주성분(principal component)이라고 부름
  • 주성분 분석의 절차는 아래와 같음
      1. 데이터 집합을 평균 중심화(mean centering)한다.
      1. 평균 중심화된 데이터의 공분산 행렬 를 구한다.
      1. 의 고윳값들과 고유벡터들을 구한다.
      1. 고윳값들을 절댓값 내림차순으로 정렬한다.
      1. 가장 ‘약한(작은)’ 고윳값 및 고유벡터를 폐기한다(생략 가능).
      1. 나머지 고유벡터들로 변환 행렬 를 만든다.
      1. 변환 행렬을 기존 데이터 집합에 적용해서 새 데이터 집합 를 구한다. 이 데이터 집합의 변수들을 파생 변수(derived variable)들이라고 부르기도 한다.

6.5 특잇값 분해와 유사 역행렬

  • 특잇값 분해(singular value decomposition, SVD) : 임의의 행렬을 특별한 성질을 가진 세 행렬의 곱으로 인수분해하는 기법
    • 성분들이 실수인 m x n 입력 행렬 의 특잇값 분해는 다음과 같음
      • 대신 의 켤레 전치(conjugate transpose)인 를 사용하는 공식도 있는데, 이는 복소수 행렬에도 성립하는 좀 더 일반적인 형태의 특잇값 분해임
      • 는 m x m 직교행렬이고 는 m x n 대각행렬, 는 n x n 직교행렬임
    • ‘특잇값 분해’의 ‘특잇값’은 대각행렬 의 성분들이 특잇값이라는 사실에서 비롯한 이름임
      • 특잇값은 행렬 의 양의 고윳값의 제곱근을 뜻함

6.5.2 두 가지 용도

6.5.2.1 주성분 분석을 위한 특잇값 분해

  • 여기서 핵심은 를, 원하는 개수의 가장 큰 특잇값들만 남기고 축소하는 것임
    • u, s, vt = svd(ir) S = np.zeros((ir.shape[0], ir.shape[1])) for i in range(4): S[i, i] = s[i] S = S[:, :2] T = u @ S

6.5.2.2 무어-펜로즈 유사 역행렬

  • 특잇값 분해의 둘째 용도는 m x n 행렬 의 무어-펜로즈 유사 역행렬(Moore-Penrose pseudoinverse) 를 계산하는 것임
    • 행렬 는 다음과 같이 행렬 의 ‘곱셈의 역원’으로 작용함
    • 여기서 는 단위행렬에 해당하며, 따라서 의 역행렬과 같은 역할을 함
  • 직사각 대각행렬의 유사 역행렬은 간단히 구할 수 있음. 0인 성분들은 그대로 두고 대각 성분들을 그 역수로 바꾼 다음 행렬을 전치하면 됨
    • 정리하자면, 임의의 행렬(정방이든 아니든)의 유사 역행렬은 다음과 같이 정의됨