[딥러닝] Maximum Mean Discrepancy 에 대해서

2024. 10. 3. 15:32카테고리 없음

 

Maximum Mean Discrepancy

한국명: 최대 평균 불일치[차이]

본 글을 시작하기에 앞서 

 

해당 Loss는 Domain Adaptation에 주로 사용되는 Loss 중 하나이다.

 

많은 자료들이 있었지만, 나에게는 명확한 직관을 제공하지 못했다. 따라서 해당 글을 작성하게 되었다.

 

Maximum Mean DIscrepancy

다양한 자료들에서 중복된 이야기가 있다.

 

두 개의 분포의 차이를 계산하는 Loss

 

어떤 시각으로 차이를 계산할까? 가령 정보이론에서 사용되는 Kullback-Leibler divergence 의 경우 두 분포간의 Entropy 차리를 통해 계산한다. 그렇다면 해당 MMD[Maximum Mean Discrepancy]는 어떨까?

 

Moment [물리에서의 Moment와 다름]

이를 알기 위해선 분포의 파라미터 또는 모멘트(Moment)에 대해서 이해해야 한다. 이를 위해 예시를 하나 들면서 설명하도록 하겠다.

 

Q: 여러분에게 정규분포도가 제공 되었다. 해당 정규 분포도를 나타내는 값을 이야기 해보시오

A: Mean 은 0 이고 Standard deviation 은 1입니다.

 

위 예시를 보면 알 수 있듯이 여러분은 이미 분포의 모멘트에 대해서 이해하고 있다.

즉, 모멘트란 분포를 나타낼 수 있는 또는 묘사할 수 있는 값이다. 그렇기 때문에 분포를 함수로 바라본다면, 모멘트는 해당 분포의 파라미터로 바라볼 수 있다.

 

고등학교 수학에서는 mean과 standard deviation만 배웠지만, 사실 분포를 나타내는 것에 있어서 다양한 모멘트가 존재한다.

Skewness, Kurtosis가 있다.

 

아 뭔가 정말 어려워 보인다. 그러나 수식을 보았을 때, 신기하거나 재미있는 패턴이 존재한다.

 

즉, 차수[order]가 올라가는 패턴이다.

 

해당 글에서는 총 4차까지의 모멘트를 소개 했지만, 실제로는 n차 까지 존재한다.

 

 

Kernal를 통해 Moment를 찾아라

결국 Maximum Mean Discrepancy는 Moment 찾기이다. 그러니까 분포도를 나타내는 값을 찾는 것이다.

그런데 Maximum Mean Discrepancy를 사용하기 위해선, Kernal 이라는 것을 우리가 정의해줘야 한다.

 

그렇다면, Kernal이란 무엇일까? 그리고 해당 Kernal에 대한 조건은 무엇일까?

Kernal이란 단순하다. 특정 공간으로 전이 또는 사상[mapping]시키는 함수이다.

 

그렇다면 해당 함수의 조건을 무엇일까?

조건은 바로 Reproducing kernel Hilbert space 으로 값들을 사상할 수 있는 함수이어야 한다는 것이다.

 

그럼 Reproducing kernel Hilbert space이 뭘까?

노름[내적]이 정의 되고 점렬들이 모두 실제로 수렴하는 점을 갖는 두 점 사이의 거리가 정의된 공간

간단하게 말해서, 벡터가 정의되어 있고 해당 공간의 수열들은 수렴성을 가진다.

 

여기서 가장 중요한 키워드 2개가 나왔다. 벡터수렴성

벡터가 아니라면, 방향에 대해서 정의할 수 없다.

그리고 수렴성이 보장되어있지 않다면, 우리는 MMD를 Loss function으로 사용하지 못한다.

 

 

일반적으로 사용되는 Kernal 함수

Gaussian kernel이 일반적으로 많이 사용된다.

왜 그럴까?

 

이를 이해하기 위해선, 해당 함수의 정의를 보자

위 수식을 정적분하면, 다음과 같다.

 

이 식에 테일러 급수를 적용하면...

패턴이 보이지 않는가? 바로 차수[order]가 올라간다는 것.

즉, 특정 분포가 가지고 있는 모든 파라미터 [n차 모멘트]가 해당 수식에 다 녹아져 있다는 것이다.

 

 

이러한 장점이 있기 때문에 일반적으로 Gaussain kernal를 사용한다.

 

 

 

reference

[1] https://97yong.github.io/dl%20study/mmd/

[2] https://dowhati1.tistory.com/17

[3] https://ghebook.blogspot.com/2020/09/gaussian-function.html

[4] https://blog.naver.com/dingdinggi?Redirect=Log&logNo=223188261447&from=postView&trackingCode=blog_bloghome_searchlist