본문 바로가기

Enginius/Machine Learning

[NGP] Leveraged Kernel

이번 연구에서 하려고하는 기본 concept은 간단하다. 우리가 어떤 regression을 할 때 positive data만을 사용한다. 이 때 negative data를 사용하게 하는 것은 어떨까? 


일반적인 regression (출처: 위키)


kernel machine의 대표적 예는 SVM일 것이다. 여기에 사용되는 kernel trick은 formulation이 데이터의 inner product에만 의존 할 경우, 이를 kernel function으로 바꾸는 것이다. 이때 아무 kernel function만 사용되서는 안되고, positive definite해야한다. 이런 이유는 kernel trick은 기본적으로 데이터를 고차원의 feature space로 mapping한 후에 이 공간에서 inner product를 하는 것을 의미하는데, Mercer theorem에 따라 이러한 mapping의 존재성을 보장하는 것이 kernel function의 positive definiteness이다. 


Gaussian process도 kernel을 사용하는 또 다른 대표적 알고리즘이다. 이 경우에서도 kernel function은 positive definite해야하는데, 이는 앞서 설명한 kernel trick과는 조금 다른 이유에서이다. 여기서는 kernel function이 covariance를 의미하고, covariance가 positive semi definite해야 하기때문에 kernel function이 positive definite해야 한다. 


일반적인 kernel은, 사실 대부분, 데이터 사이의 correlation을 나타낸다. 그래서 어떤 unknown point가 들어왔을 때, 이러한 correlation들을 고려해서 regression을 하게된다. 이번 연구에서 하고자 하는 것은 이러한 framework과는 조금 다르다. 


우리는 기본적으로 non-stationary GP 상황을 가정한다. 즉 각 학습 데이터들은 서로 다른 양상의 correlation을 갖는다. 그리고, 기존의 NS kernel과 같은 local smoothness를 변경하는 것이 아닌 trend 자체를 변경시킨다. 다시 말해서 regression을 할 때 어떤 데이터는 positive effect를 주고, 또 다른 데이터는 negative effect를 주게하는 것이다. 이렇게 하기 위해서 우리는 다음과 같은 조건들을 고려해였다. 


Kernel 함수를 design할 때 고려할 것


1. GP에서 Kernel 함수는 covariance를 나타낸다. Covariance는 두 개의 random variable들이 서로 어떻게 변하는지를 나타낸다. 이 값이 양수라면, 두 random variable 들은 비슷한 양상을 보이고, 음수라면 한 확률 변수가 커지면, 다른 확률 변수가 작아지는 양상을 보인다. 

2. 우리는 특정 확률 변수에 대해서는 양의 cov를, 다른 확률 변수에 대해서는 음의 cov를 갖게 하는 kernel function을 제안하겠다. 

3. 어쨌던 어떤 데이터에 대해서 x*와의 커널 출력값이 다른 값에 비해 상대적으로 양의 값을 가지면 해당 데이터는 양의 영향을 준다. 

4. 커널은 더하기와 곱하기에 닫혀있다. [1]

5. 거리가 가까워지면 cov가 줄어드는 양상을 보이게 하고 싶다. 

6. 3번 issue 때문에 negative data에 적용되는 kernel의 값은 positive data에 적용되는 값보다 항상 작게 하자

7. Variance는 항상 양수로 한다. 

8. 하지만 negative 데이터까리의 variance는 어떻게 설정할지가 문제다. 


Indefinite Covariance Mtx로 GP를 할 때 고려할 것


1. SVM과 같은 kernel machine에서는 아래 네 가지 spectral transformation 방법으로 indefinite kernel을 다룰 수 있다고 한다. [2]


1. Denoise: '$f(\lambda) = max(0, \lambda)$'

 - 제일 간단하다. 

2. Flip: '$f(\lambda) = |\lambda|$'

 - SVD로 생각할 수 있다. 은우의 L1-ARG 알고리즘으로 reconstruction하면 이런 결과가 나온다. 

3. Diffusion: '$f(\lambda) = e^{\beta \lambda}$'

 - Clustering에는 적합하나, Supervised learning에서는 데이터 사이의 correlation 양상을 바꾸기 때문에 적합하지 않다. 

4. Shift: '$f(\lambda) = \lambda + \alpha$'

 - 모든 eigenvalue에 상수를 더한다. 

 - 이렇게 하면 전체적인 spectral property가 달라지기 때문에, clustering 정도에만 사용된다. 


2. 문제는 GP에서는 covariance matrix의 inverse를 구해야하기 때문에 Denoise와 Shift는 쓸 수 없다. 

 - 작은 eigenvalue일 수록 inverse를 할 경우 매우 크게 작용을 하기 때문이다. 

3. 그래서 사용 가능한 것이 Flip이라고 생각한다. 

4. 문제는 Flip을 하면 결과가 이상하게 나온다....


아래 Kernel Type 1,2의 PC GPR에 해당하는 것이 Flip을 이용해서 얻은 결과이다.. 

왠지 모르겠는데, 전반적으로 regression 결과가 shift 되어있다. 


사용된 kernel 함수 


 - 위의 kernel 1,2는 위의 kernel을 고려할 사항 6번 issue에 violate된다. 

 - 


Gaussian process regression 결과 




재밌는 것은 3번과 4번 kernel을 사용할 경우 Nonstationary GP와 PC GP가 거의 같은 결과를 보인다. 




[1] Duvenaud, David, et al. "Structure discovery in nonparametric regression through compositional kernel search." ICML, 2013

[2] Gang Wu and Edward Y. Chang and Zhihua Zhang, "An analysis of transformation on non-positive semidefinite similarity matrix for kernel machines", ICML, 2005

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  


'Enginius > Machine Learning' 카테고리의 다른 글

About Deep Learning by Michael Jordan  (0) 2014.09.11
Fundamental Group  (0) 2014.09.03
Deep Learning이란 무엇일까?  (4) 2014.08.02
Sparse Kernel Methods  (0) 2014.07.31
Determinantal Point Process (DPP)  (1) 2014.07.28