[프로젝트] MVM+: 생성 모델에 metric 심기

Introduction

학부 산학 연계 인턴으로 가상 데이터 기업 Pebblous에서 2022년 5월부터 2023년 2월까지 일했다. 맡은 과제는 ‘데이터 클리닉’ — 차세대 AI 학습용 데이터를 진단하고 개선하는 연구 개발이다.

출발점은 명확했다. 고화질 가상 데이터를 하나씩 직접 만들어 학습에 쓰는 것은 비용 대비 효율이 너무 나빴다. 그래서 세 가지를 하려고 했다.

  1. 고품질 가상 데이터를 직접 만들기에는 비용이 크다 → 생성 모델을 쓰자
  2. 고객 데이터를 받아 “의미 있는” 매니폴드를 만들자
  3. 진단 결과를 고객에게 시각화해서 보여주자

여기서 질문이 자연스럽게 따라 나온다. 의미 있는 매니폴드를 만들려면 어떤 데이터가 서로 유사한지를 알아야 하고, 그러려면 metric이 필요하다. 시각화 역시 t-SNE, UMAP, TensorBoard projector 같은 도구로 2·3차원에 내려놓을 수 있어야 한다. AI 학습에는 질적 개선보다 양적 증강이 더 효과적일 수 있다는 판단도 생성 모델 쪽에 힘을 실었다.

맨땅에서 모델 고르기

후보를 넓게 놓고 봤다.

  • VAE 기반 모델
  • GAN 기반 모델
  • Style-GAN, VVAE 등 고해상도 생성 모델
  • diffusion 기반 모델

결론은 한 문장으로 정리됐다. 생성은 다들 잘하는데, 어디가 부족하고 어떤 데이터가 서로 유사한지를 말해 주는 metric이 없다.

그러다 metric learning과 생성 모델을 붙인 논문을 찾았다 — Manifold Matching via Deep Metric Learning for Generative Modeling (MVM). 여기서 출발하기로 했다.

부딪힌 문제

차원의 저주

차원이 커질수록 데이터는 공간의 가장자리로 밀려나고 서로 지수적으로 멀어진다. 모든 거리가 사실상 무한대로 수렴하면 metric은 의미를 잃는다. 이미지 생성 모델은 layer가 깊고 차원이 높아 이 문제가 특히 심하다.

MVM 자체의 설계 문제

기반으로 삼은 MVM에도 손볼 곳이 있었다.

취약점 1. Manifold matching loss

실제 데이터 manifold의 모양을 sample point들로 추정하는데, 그 모양을 단순히 중심(Frechet mean)과 크기(p-diameter) 둘로만 가정한다. 두 다양체의 중심과 크기만 맞추는 셈이라, 모난 부분과 outlier를 전혀 반영하지 못한다.

MVM 취약점 1
MVM은 실제 데이터 manifold를 중심(Frechet mean)과 크기(p-diameter) 둘로만 가정한다. 붉게 표시된 outlier와 모난 부분은 반영되지 않는다.

취약점 2. Triplet loss

Triplet loss가 manifold의 둥근 부분을 평평하게 펴 줄 것이라 가정하고, 최단 거리를 유클리디언 거리로 잡는다. 그런데 실제 학습을 돌려 보면 triplet loss의 distance 항이 아니라 cosine similarity factor가 중요하게 작동했다. 가정과 실제가 어긋나 있었고, 그래서 성능 차이도 나지 않았다.

MVM 취약점 2
triplet loss가 manifold를 평평하게 펴 준다는 가정. 실제로는 distance 항이 아니라 cosine similarity factor가 작동해 성능 차이가 나지 않았다.

MVM+

Average Hausdorff loss 고안

중심과 크기만 맞추던 자리를 Hausdorff distance로 바꿨다. 임베딩을 이루는 데이터 포인트를 1대다로 매칭해, 생성된 다양체가 진짜 데이터의 형상 자체를 반영하고 그대로 따라가도록 설계했다.

다만 일반적인 Hausdorff distance는 최댓값을 쓰기 때문에 outlier 하나에 크게 흔들린다. 그래서 평균을 취하는 Average Hausdorff distance로 바꿔 썼다.

Average Hausdorff loss
일반적인 Hausdorff distance는 최댓값을 쓰기 때문에 outlier 하나에 흔들린다. 평균을 취하는 Average Hausdorff distance로 바꿨다.

Triplet loss → Cosine Similarity loss

Triplet loss에서 제대로 작동하지 않던 유클리디언 거리 부분을 걷어냈다. 진짜 데이터 manifold에서 두 샘플을 anchor와 positive로, 생성 데이터 한 샘플을 negative로 잡고 세 샘플 사이의 각도를 좁히는 방식이다.

Cosine similarity loss
진짜 manifold에서 두 샘플을 anchor·positive로, 생성 데이터 한 샘플을 negative로 잡고 세 샘플 사이의 각도를 좁힌다.

얻은 것은 두 가지다.

  • 데이터 manifold의 형상이 유지되고, 생성 데이터가 진짜 manifold 중앙에 포함된다
  • 남은 각도 metric으로 유사도 평가와 시각화가 가능해진다

실험

2차원 가상 데이터, MNIST, celebA 세 단계로 검증했다.

2차원 가상 데이터

가장 먼저 나선(spiral) 모양으로 MVM과 MVM+를 비교했다. 파란 점이 진짜 데이터, 빨간 점이 생성 데이터다.

MVM vs MVM+ (나선)
나선 매니폴드에서 MVM과 MVM+ 비교. 파란 점이 진짜 데이터, 빨간 점이 생성 데이터다.

같은 나선을 일반 GAN과도 비교했다.

GAN vs MVM+ (나선)
같은 나선을 일반 GAN과 비교했다.

나선 하나만으로는 부족해서, 형태를 바꿔 가며 다양한 2차원 매니폴드를 생성할 수 있는지 확인했다.

여러 갈래로 나뉜 매니폴드
여러 갈래로 나뉜 매니폴드.
원형 매니폴드
원형 매니폴드.
고리·면 형태 매니폴드
고리·면 형태의 매니폴드.

MNIST

2차원에서 확인한 것을 이미지로 옮겼다. 왼쪽이 비교 대상, 오른쪽이 MVM+다. 형태가 잡히는 정도에서 차이가 난다.

MNIST 생성 결과
MNIST 생성 결과. 왼쪽이 비교 대상, 오른쪽이 MVM+다.

celebA

고해상도 이미지에서도 동작하는지 확인했다.

스스로 매긴 점수

연구를 시작할 때 세웠던 세 가지 목표를 다시 꺼내 하나씩 따져 봤다.

1. 고품질 가상 데이터 생성 — 충족

GAN 기반 생성 모델인 MVM으로 학습 데이터와 유사한 가상 데이터를 만들 수 있었다.

2. 의미 있는 매니폴드 — 미흡

데이터 간 유사성을 고려하는 metric learning 방식의 생성 자체는 가능했다. 실제로 MNIST 결과를 보면 같은 레이블의 데이터끼리 모이는 모습이 확인된다. 다만 고객 데이터에서 “필요한 부분에 집중한다”는 원래 목표에는 못 미쳤다.

3. 진단 결과 시각화 — 한계가 남음

각도 metric으로 유사도를 재고 시각화할 길은 열렸지만, 근본적인 제약이 남았다. MVM+는 어디까지나 GAN을 변형한 생성 모델이고, metric보다 생성 쪽에 무게를 두고 설계되어 있다. 진단 도구로 쓰려면 데이터 사이의 metric 혹은 contrastive한 관계를 더 강화해야 한다는 것이 남은 결론이었다.

자료