ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • #Machine_learning에서의 Eigendecomposition과 SVD
    Data miner/Linear Algebra 2019. 11. 29. 19:14
    728x90

    SVD를 이해해보자! 라는 마음으로 들었던 선형대수였는데 정말 많은 것들을 얻을 수 있었던 주재걸 교수님의 오픈 강의 "인공지능을 위한 선형대수"였다.

    오늘은 그렇다면, 기존에 쌓았던 지식을 바탕으로 Eigendecomposition과 SVD가 Machine Learning에서 어떻게 쓰이는지 살펴보고자 한다.

           먼저, Machine learning에서는  A Matrix에 대하여, A가 m*n(Feature by example)이라고 할 때, A'A (A: A의 transpose를 표현)의 matrix 혹은 AA' matrix에 대해서 가장 관심이 많다. 왼쪽 matrix의 행벡터와 오른쪽 matrix의 열벡터의 내적값으로 구성된 AA' matrix는 Feature들의 correlation 정보를 포함하고 있다. A'A의 경우에는 example들의 correlation 정보가 있다. (PCA의 Covariance matrix, style trasfer를 위한 CNN의 Gram matrix가 이에 해당한다)

          하지만 이 때, A matrix값 안에는 대체로 오차가 들어가는 경우가 많다. 몸무게, 키, 사진 이미지의 픽셀값등은 어떤 관측기를 통해서 얻어진 값이기 때문에 항상 정확한 값을 가지고 있는 것이 아니라 일정한 오차 범위의 노이즈값을 가지고 있는 경우가 많다. 하지만, 이 노이즈값들이 포함이 되면 각각의 열끼리는(혹은 행끼리)의 이상적인 Rank가 아니라 더 큰 값을 가지고 있을 수가 있다. 그러니까, 사실은 A matrix가 더 작은 rank로 표현될 수 있으나 하나의 관측치가 +0.1정도 더 커지면, 그 열끼리나 행끼리가 linearly dependent한 것이 아니라 linearly independent해지기 때문이다. 이렇게 되면, 계산해야 하는 Matrix가 상당히 커진다. A를 low rank로 표현하는 방식 중에 하나가, optimal solution은 SVD를 활용하는 방식이다. 

    A를 low rank로 표현하는 방식

    즉, Σ의 열값을 일정 index 부터 0으로 만들어서, 아래의 그림처럼 r까지의 값을 유효하게 남겨두는 방식으로 A matrix를 다시 표현한다. 이를 Low-Rank Approximation of a Matrix라고 한다. 

    Low-Rank Approximation of a Matrix

     

    여기서 SVD가 차원축소로 어떻게 활용될 수 있는가? 우리가 다루고자 하는 X(m*n, feature by data)가 있다고 하자, X의 각 열은  (features *1 sample data)로 나타나게 된다. 우리는 수많은 feature들에 대해서 dimension reduction을 하고자 한다. (= low rank로 표현하고자 한다.) 예를 들어, 10개의 feature로 표현된 x1에 대해서, 3개의 feature로만 x1를 표현하고자 할 때, 이렇게의 feature를 축소하는 선형변환하는 G'(G의 transpose)가 SVD의 U(일부분, 앞의 column부터 rank를 세서 자르는 구조)이 사용될 수 있는 것이다. 

    X(m*n, feature by data)에 대해서, feature들의 차원축소가 된 새로운 Y(r*n, reduced featrue by data), m>r가 생성되고, Y 데이터간의 Pairwise similarity는 Y'Y = (G'X)'G'X = X'GG'X로 구해질 수 있다. 

Designed by Tistory.