Hello Computer Vision

마할라노비스 거리 공부해보기 본문

mathematics

마할라노비스 거리 공부해보기

지웅쓰 2023. 11. 15. 00:46

해당 내용은 아래의 블로그들을 참고해 작성하였습니다.

https://angeloyeo.github.io/2022/09/28/Mahalanobis_distance.html

https://darkpgmr.tistory.com/41

 

현재 OOD detection공부를 하고 있는데 대표적인 논문 중 하나가 score function을 마할라노비스로 정의하기도 하고 이렇게 정의하는 것이 좋은지 최근 논문도 이렇게 사용하고 있다. 기존에도 데이터의 분포를 고려한 거리지표라는 건 어느 정도 알고 있었는데 이번에 한번 알아보려고 한다.

 

2차원 좌표에서 x, y 두 점 사이의 거리를 유클라디안 거리로 표현해보자면 다음과 같다.

그러나 해당 수치는 데이터의 분포를 고려하지 못하는데 아래 이미지를 보면 딱 이해할 수 있다.

a, b라는 두개의 데이터 분포를 얻었다고 생각해보자. 두 점 x, y의 거리를 유클라디안 거리로 계산해본다면 같다는 것을 알 수 있다. 그러나 과연 이 두 점 사이의 거리를 같다고 정의하는 것이 맞을까? (a)에서의 x,y는 서로 outlier 임을 알 수 있으며 (b)에서의 x,y는 평균적인 데이터임을 알 수 있다. 그렇기 때문에 (b)에서는 각각의 점이 평균적인 분포, 즉 기존 데이터의 분포에서 나온 데이터이기 때문에 (a)에서의 outlier 간의 거리보다 더 가깝게 계산되어야 할 필요성이 있다.

위의 예시에서 하나 더 추가해서 설명해보자면 y는 그대로 두고 x를 두 좌표 각각의 중앙에 있다고 생각해보자. (a)에서의 거리는 기존 데이터, outlier 간의  거리이고 (b)에서는 기존 데이터간의 거리이기 때문에 (b)에서의 거리가 더 가깝게 표현될 필요가 있다(물론 분야마다 다르겠지만 데이터 사이언스, OOD detection분야에서는 다르게 표현해야한다). 

 

그렇기 때문에 데이터의 맥락(표준편차, 즉 데이터의 분포가 어떠한지)에 따른 거리 metric이 필요한 것이다.

이를 고려한 지표가 마할라노비스 거리이며 나타내보면 위와 같다. 유클라디안 거리와 비교해보면 사이에 공분산 행렬이 들어간 것을 알 수 있으며 공분산 행렬은 각 데이터간의 내적으로 표현된다. 각 데이터간의 내적은 데이터간의 얼마나 닮아있는지 표현할 수 있다(이 부분은 공돌이님의 블로그에서 더 자세히 확인 가능. X행렬에 대해 원시행렬 Z와 선형변환 행렬 R을 이용하여 설명해주시는데 처음에는 조금 어지러울 수 있지만 집중해서 보면 잘 이해 가능).

 

조금 더 내 분야에 적용시켜  64개의 배치 안에 63개의 ID 데이터가 있고 1개의 OOD데이터가 있으며 각각의 데이터에 대한 score function을 구한다고 할 때(물론 여기서 feature encoder가 해당 OOD 이미지를 ID데이터와 다른 feature vector를 잘 뽑아낼 수 있어야할 거 같다), OOD데이터에 대한 feature vector는 다른 vector와는 조금 다른 공간에 mapping 될 것이고 이에 대한 거리를 구했을 때 더 높은 값이 나와야 할 것이다.