행렬 분해

1,286 단어·3 분·원문(.md)

행렬을 왜 분해할까? #

수학에서 숫자 12를 2 x 2 x 3 으로 소인수 분해하면 약수와 수의 구조가 한눈에 보인다.

복잡하고 거대한 데이터 판(행렬)을 특성이 명확한 2~3개의 단순한 행렬 곱으로 쪼개는 것을 행렬분해라고 한다.

즉 복잡한 계산을 훨씬 빠르게 만들고, 데이터 속에 숨겨진 핵심 특징만 뽑아내기 위해서 사용한다.

LU 분해 (LU Decomposition) #

거대한 연립방정식 아래쪽 삼각형 L과 위쪽 삼각형 U 모양의 행렬 두 개로 쪼개서 훨씬 쉽게 해를 구하는 기술이다.

A=LUA = L \cdot U
  • A (원래 행렬): 풀어야하는 복잡한 전체 데이터 또는 방정식 시스템이다.
  • L (Lower Triangular Matrix, 하삼각행렬): 대각선 기준으로 위쪽 숫자가 전부 0인 행렬이다. 아래쪽 삼각지대에만 값이남는다.
  • U (Upper Triangular Matrix, 상삼각행렬): 대각선 기준으로 아래쪽 숫자가 전부 0인 행렬이다. 위족 삼각지대에만 값이 남는다.

왜 쓰며 어떤 값을 의미하는가. #

연산의 효율성때문이다. 컴퓨터로 변수가 수만 개 있는 연립방정식 (Ax = b)을 풀 때 매번 계산하려면 시간이 오래걸린다.

하지만 행렬을 한 번 L과 U로 쪼개놓으면 우변 b가 계속 바뀌어도 대입만으로 몇 밀리초 만에 답을 연달아 찾아낼 수 있다.

의미는 L은 방정식을 정리해나간 변형의 기록/단계를 의미하고 U는 소거법을 거쳐 남은 최종 계쑤들을 의미한다.

AI Engineering 활용 #

  • 2차 최적화 알고리즘 (Newton-Raphson / Hessian 연산): AI 모델 학습시 경사하강법 SGD보다 더 빠르게 수렴하는 2차 최적화 기법에서 역행렬을 직접 구하는 대신에 LU 분해를 써서 계산 부담을 줄인다.
  • 물리 기반 인공지능 (PINN): 미분방정식을 학습하는 AI 모델 내부에서 시스템 해를 고속으로 도출할 때 사용한다.

특잇값 분해 SVD, Singular Value Decomposition #

어떤 형태든 행렬이든 '첫 번째 회전 -> 늘리기/줄이기 -> 두 번째 회전' 이라는 3단계 기본 동작으로 분해하여, 데이터에서 가장 중요한 정보(특징)만 골라내는 기법이다.

수식과 기호 #

A=UΣVTA = U \cdot \Sigma \cdot V^T
  • AA (m×nm \times n 원래 행렬): 임의의 형태를 가진 데이터 전체 (예: [사용자 ×\times 영화] 평점 표).
  • UU (m×mm \times m 직교행렬): 행(Row) 관점의 핵심 축/방향. (예: 사용자의 취향 특성)
  • Σ\Sigma (m×nm \times n 대각행렬, '시그마'): 대각선에만 값이 존재하는 행렬로, 각 특징의 중요도(특잇값, Singular Value)를 의미. 값이 큰 순서대로 내림차순 정렬됨.
  • VTV^T (n×nn \times n 직교행렬의 전치): 열(Column) 관점의 핵심 축/방향. (예: 영화의 장르 특성)

시그마 행렬의 대각선 값중 상위 몇 개 중요도가 높은 값만 남기고 나머지를 0으로 버려도 원래 데이터 A의 90퍼 이상을 복원할 수 있다. 노이즈를 제거하고 용량을 획기적으로 줄일 수 있는 것이다.

U와 V는 데이터가 갖는 숨은 개념/ 축을 의미하며, 시그마는 그 개념이 데이터를 설명하는데 얼마나 중요한가를 나타낸다.

AI Engineering 에서 활용 #

  • 추천 시스템 Collaborative Filtering: 넷플이나 쿠팡에서 사용자 x 아이템 행렬을 SVD로 분해하여, 사용자가 아직평가하지 않은 상품에대한 선호도를 예측하고 추천한다.
  • 자연어 처리 LSA, 잠재 의미 분석: 문서 x 단어 행렬을 분해하여 단어 뒤에 숨은 문맥과 주제를 파악한다.
  • LLM 모델 경량화 Weight Matrix Compresssion: 거대한 트랜스포머 AI 모델의 가중치 행렬을 SVD로 분해 (Trunctaed SVD)하여, 모델의 정밀도는 유지하면서 메모리 사용량과 연산 속도를 효율화한다.
Math/math6.md