AI 개발 공부 공간

AI, 머신러닝, 딥러닝, Python & PyTorch, 실전 프로젝트

딥러닝/딥러닝: PyTorch

PyTorch 3 : 선형대수학

qordnswnd123 2025. 1. 10. 16:42

1. 곱셈 연산

벡터의 곱셈(점곱, Dot Product)

벡터의 내적(Dot Product)은 두 벡터 간의 연산으로, 각 벡터의 상응하는 성분들을 곱한 뒤 그 결과들을 모두 더해 하나의 스칼라 값으로 반환합니다. 이 연산은 두 벡터의 내적을 계산하는 것과 동일합니다.

벡터의 곱셈은 다음과 같이 계산합니다.

행렬의 곱셈

행렬 A와 행렬 B의 곱셈 AB를 고려해봅시다. A가 m×n 행렬이고, B가 n×p 행렬일 때, 두 행렬의 곱은 m×p 행렬 C가 됩니다. 여기서 중요한 점은, 첫 번째 행렬의 열 수와 두 번째 행렬의 행 수가 같아야 한다는 것입니다.

행렬 C의 각 요소 cij는 다음과 같이 계산됩니다.

여기서 aik는 행렬 A의 i번째 행과 k번째 열에 있는 요소이고, bkj는 행렬 B의 k번째 행과 j번째 열에 있는 요소입니다. 이는 A의 각 행과 의 각 열 간의 내적과 같습니다.


2. 행렬 식(Determinant)

행렬식

행렬식의 값은 행렬이 역행렬을 가지는지 여부를 결정합니다. 행렬식이 0이 아니면 행렬은 역행렬을 가지며, 행렬식이 0이면 행렬은 역행렬을 가지지 않습니다.

또한, 행렬식은 행렬의 모든 열(또는 행)이 생성하는 공간의 부피를 나타내며, 행렬이 선형 변환을 수행할 때 공간이 얼마나 확장 또는 축소되는지를 나타냅니다. 이는 행렬이 선형 독립인 열(또는 행)을 가지고 있는지 여부를 판단하는 데에도 사용됩니다.

파이토치에서는 torch.linalg.det() 함수를 사용하여 주어진 행렬의 행렬식을 계산합니다.

 

2x2 행렬의 경우, 행렬식은 다음과 같습니다.

그 외 일반적인 행렬의 행렬식은 다음과 같습니다.

는 AA의 ii행 jj열에 위치한 요소. AijA_{ij}는 aija_{ij}를 제외한 행렬에서 ii행과 jj열을 제거하여 얻은 부분 행렬.

 


3. 역행렬

역행렬

역행렬(Inverse Matrix)은 선형 대수학에서 주어진 행렬 A에 대해, A와 곱했을 때 항등 행렬 I를 생성하는 행렬을 말합니다.

수식으로 표현하면 아래와 같습니다:

항등 행렬은 모든 대각선 상의 원소가 1이고, 그 외의 원소는 모두 0인 행렬을 의미합니다.

항등 행렬을 수식으로 표현하면 아래와 같습니다:


4. 트레이스 (Trace)

트레이스(Trace)

트레이스는 선형대수학에서 사용되는 용어로, 주로 정사각형 행렬에 대해 정의됩니다. 트레이스는 행렬의 주대각선(diagonal) 상의 모든 원소의 합으로 계산됩니다. 즉, 행렬 A의 트레이스는 A의 i번째 행과 i번째 열에 있는 위치의 원소들 aii의 합으로 표현됩니다. 수학적으로는 다음과 같이 표현됩니다:

torch.trace() 함수를 이용하면 트레이스 연산을 수행할 수 있습니다.

주의할 점

  • torch.trace() 함수는 주로 2D 텐서에서 사용됩니다. 만약 더 높은 차원의 텐서를 입력으로 사용한다면, 함수는 내부적으로 텐서의 마지막 두 차원에 대해 트레이스 연산을 수행합니다.
  • 행렬의 트레이스는 행렬이 정사각형일 때 가장 의미가 있습니다. 비정사각형 행렬의 경우에도 대각선 원소들의 합을 계산하지만, 트레이스가 가지는 선형대수학적 의미는 다를 수 있습니다.

5. 고유값과 고유벡터 (Eigenvalues and Eigenvectors)

고유값(Eigenvalues)과 고유벡터(Eigenvectors)

고유값은 어떤 행렬 A가 주어졌을 때, 다음과 같은 선형 방정식을 만족하는 스칼라 λ입니다.

고유벡터는 다음과 같은 조건을 만족하는 0이 아닌 벡터 v입니다:

위 식에서 알 수 있듯이, 행렬 A의 고유벡터는 선형변환 A에 의해 방향은 보존되고 스케일(scale)만 변화되는 방향 벡터를 나타내고, 고유값은 고유벡터의 변화되는 스케일 정도를 나타내는 값입니다.

고유값은 행렬의 고유방정식을 통해 찾을 수 있습니다. 고유방정식은 다음과 같이 주어집니다:

여기서 det는 행렬의 행렬식을 의미하고, I는 단위 행렬입니다. 이 방정식을 만족하는 λ의 값들이 바로 고유값입니다.

고유값과 고유벡터는 행렬에 나타나는 선형 변환의 특성을 이해하는 데 중요합니다. 또한 고유값 분해나 특이값 분해와 같은 행렬 분해 기법을 통해, 데이터의 주요 특성을 추출하거나 차원을 축소하는 데 사용됩니다.

 

활용 예시

  • 차원 축소와 특성 추출:
    딥러닝 모델을 학습하기 전에 데이터셋의 차원을 축소하여 계산 복잡성을 줄이고, 불필요한 정보(노이즈)를 제거하는 것이 유용할 수 있습니다. 주성분 분석(PCA)에서 데이터의 분산을 최대화하는 방향을 찾을 때 고유벡터를 사용합니다. 이는 데이터의 주요 특성을 추출하는 데 중요한 역할을 합니다.
  • 네트워크 가중치 분석:
    가중치 행렬의 고유값과 고유벡터를 분석함으로써, 모델이 데이터의 어떤 특성에 가장 민감하게 반응하는지, 그리고 이러한 특성이 모델의 출력에 어떻게 영향을 미치는지 파악할 수 있습니다.
  • 모델 초기화:
    특정 초기화 기법은 고유값 분해나 SVD를 이용하여 모델의 초기 가중치를 설정함으로써, 학습 초기 단계에서의 정보 흐름을 최적화하고 더 빠른 수렴을 도모할 수 있습니다.

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

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

SVD(특이값 분해)는 선형 대수학에서 매우 중요한 기법 중 하나로, 임의의 크기의 행렬을 특정한 구조로 분해하는 방법입니다.

특이값 분해는 행렬 A를 세 개의 특별한 행렬의 곱으로 표현합니다. 이는 다음과 같이 나타낼 수 있습니다:

  • A: m×n 크기의 원본 행렬입니다.
  • U: m×m크기의 유니터리(직교) 행렬이며, A의 왼쪽 특이벡터를 열벡터로 가집니다.
  • Σ는 m×n 크기의 대각 행렬로, 대각선 상의 원소는 특이값이며, 이 값들은 일반적으로 내림차순으로 정렬됩니다.
  • VTV는 n×n 크기의 유니터리(직교) 행렬의 전치 행렬이며, A의 오른쪽 특이벡터를 열벡터로 가집니다.

특이값 분해의 응용

  • 이미지 처리:
    이미지의 압축 및 노이즈 제거에 효과적입니다.
  • 추천 시스템:
    사용자와 항목 간의 관계를 모델링하여 추천을 생성할 때 사용됩니다.
  • 자연어 처리:
    단어, 문서 간의 관계를 분석하고 주제 모듈화에 활용됩니다.
  • 신호 처리:신호에서 중요한 특성을 분리하고 배경 잡음을 제거하는 데 사용됩니다.