MISGAN: LEARNING FROM INCOMPLETE DATA WITH GENERATIVE ADVERSARIAL NETWORKS 리뷰

2019. 10. 20. 16:59관심있는 주제/GAN

728x90
Paper https://arxiv.org/abs/1902.09599 Code https://github.com/steveli/misgan/blob/master/misgan.ipynb

아주 빠르게 보고 싶어서, 이론적인 부분은 살펴보지 않고 핵심 아이디어가 먼지만 확인

Abstarct

GAN은 복잡한 분포를 모델링하는 효율 적안 방법론이고 리고 다양한 어려운 문제들에 대해서도 효과적인 결과를 얻게 한다. 그러나 전형적인 GAN는 학습 동안에 완적 관측된 데이터를 요구했다. 이 논문에서는 고차원의 불정 말한 데이터를 학습하는 GAN 기반 방법론을 제안한다.  그 제안된 방법은 결측 데이터 분포를 모델링하는 MASK Generator와 함께 정말한 DATA Generator를 배우는 것이다. 우리는 우리의 프레임워크를 적대적으로 훈련된 주입기와 동일시함으로써 누락된 데이터를 대체하는 방법을 더 많이 보여준다. 여기에서 missing type의 가정은 MCAR(missing completely at random )으로 한다.

1 INTRODUCTION

GAN을 학습시키려면, 정말 관측된 데이터 모음이 필요하다. 그러나 많은 경우, 완전 관측된 데이터를 항상 얻을 수 있는 는 것은 아니다. Little & Rubin(2014)에 따르면, 불안전한 관측 데이터를 생성하는 프로세스는 아래와 같이 보여준다 

x ~ 완전 데이터 vector m (0,1) binary mask

p(m | x_obs , x_mis) : missing data mechanism 

대부분의 불완전 데이터는 MCAR과 MAR을 가정한다. 왜냐하면 p(x_obs , m ) 은 p(x_obs) p(m | x_obs)로 나타낼 수 있는데, missing data mechanism은 올바른 theta를 추정할 동안 데이터 생성 모델에서 무시가 된다.

p_theat(x)가 x_mis에 대한 효율적인 marginalization을 인정하지 않으면, θ의 추정은 대개 아래와 같이 전자파 알고리즘 또는 보다 일반적인 접근방식을 사용하여 변동 하한선을 최대화함으로써 수행된다

이 논문의 주요 기여는 불완전한 관찰이 있는 상태에서 고차원 데이터 분포를 학습하기 위한 GAN 기반 프레임워크의 개발이다.

우리의 프레임워크는 그 결함을 모델링하기 위해 마스크 분포를 배우기 위한 보조 GAN을 도입한다.

완전한 데이터 생성자는 결과로 나온 maked data를 실제 불완전 데이터가 있는 마스크와 유사한지 분별하는 것을 기반으로 학습한다.  기반이 되었던 GAN은 AmbientGAN이라고 함.

AmbientGAN은 다양한 손상 프로세스(또는 측정 프로세스)에서 손상된 실제 샘플과 손상된 생성 샘플을 구별하도록 GAN의 식별자를 수정한다. 이미지에선 random dropout / blur / block-patch 등등을 포함한다. 누락된 데이터는 손상된 측정 외에도 누락된 패턴에 액세스 할 수 있다는 점을 제외하면 특별한 유형의 손상으로 볼 수 있다. AmbientGAN은 측정 과정이 알려져 있거나 몇몇 파라미터에 의해서 모 수화된 것을 가정함. (일반적인 미싱 데이터 문제가 아니라는 이야기)

저자는 매우 불완전하고 복잡한 데이터 분포를 학습할 수 있는 제안된 프레임워크의 경험적 증거를 제시함 

2 MISGAN: A GAN FOR MISSING DATA

미싱 데이터 문제에서, 어디가 결측인지 알기 때문에 부분적으로 관측된 데이터 백터와 mask vector를 페어로 표현할 수 있다.  m_d = 1이면 관측 데이터 | m_d = 0이면 missing data 

또한 x와 m이 모두 고정 길이의 벡터인 만큼 MisGAN이 실제로 효율적으로 구현될 수 있는 방법을 제시한다.

MisGAN프레임 워크는 2가지 아이디어를 기반으로 한다.

첫 번째 :  정말한 데이터 생성자를 더해서, 저자들은 명시적으로 마스크 생성자를 사용한 미싱 데이터 프로세스를 모델링한다. 왜냐하면 불정말한 데이터셋의 마스크들은 완전 관측할 수 있기 때문에, 일반 GAN을 사용해서 분포를 추정할 수 있다. 

두 번째 :  저자들은 완전한 데이터 생성자를 생성된 마스크 벡터와 실제 마스크 벡터가 유사하게 만들어지는지에 대해서 학습시킨다. 

그래서 2가지 Pair를 쓴다 마스크 : (G_m , D_m) , Data : (G_x , D_x) 

이 논문은 MCAR에 초점을 맞춰서 진행한다 그래서 2개의 생성자(G_x , G_m)는 각각에 대해서 독립적이다. 그리고 각자의 noise distribution을 갖고 있다.  (각각 생성자와 마스킹이 의존적이 않아야 하는 구조가 좀 더 쉽게 납득할 수 있기 때문에 계속 MCAR을 강조하는 듯하다. 다른 논문도 MCAR을 가정하는데 의존적일 때는 어떻게 해야 할까 흐음...)

 

alpha는 0.2일 때 잘 되었다고 함.  마스크 벡터를 생성하라면 { 0,1 }로 생성시켜야 하는데, 그래서 sigmoid를 배치함으로써 대신에 labmda를 0 ~ 1 사이로 해서 포화되도록해서 0과 1에 가까워지게 한다고 함.

3 THEORETICAL RESULTS

시간이 나면... 다시 보는 걸로

4 MISSING DATA IMPUTATION

불완전한 데이터를 처리할 때 결칙츠 대체는 중요한 항목이다. 이번 섹션에서는 MISGAN D_i가 함께 G_i를 사용함으로써, p(x_mis | x_obs)에 따른 missing data를 결측 하는 방법을 보여주려고 함. 

imputer는 불완전한 예시와 p_w로부터 뽑은 random vector (w)에 대한 하나의 함수이다. 

미리 학습된 G_x를 사용 

^G 대체된 결과를 생성한다. 실제로는 G_i를 이용해서 대체된 결과를 쓸 것 같음 

결과물

나의 생각 :

일단 신기했던 것은 마스킹 벡터를 생성하는 Mask Generator와 그리고 실제 결과물을 생성하는 Data Generator 각각 있다는 것이라고 생각. Mask 자체도 학습시키는 대상으로 하고 생성하는 것도 생성하게 하여서 각자의 역할을 하게 해서 학습의 부담을 줄인 것 같다. 그래서 이러한 구조가 잘만 학습되면 기존의 알고리즘보다 더 뛰어나게 잘 생성시킬 것 같다. 

그리고 Discriminator 같은 경우에는 처음 생성자를 학습시킬 때는 Mask Discriminator와 X Discriminator는 실제로 데이터 생성물에 대한 비교가 아닌 마스크가 잘 생성됐는지 안됬는지와 실제 데이터에 맞는 마스크가 잘 생성됐는지에 대한 문제를 가지고 풀어서 쉽게 생성자가 학습시키기 위한 구조로 만들고, 추후에 결측치를 대체해서 나온 대체 데이터와 latent variable에서 생성한 데이터를 비교하는 Loss를 이용해서 대체 Generator가 잘 학습하게 하는 방식으로 한 것 즉 각각 하나의 Generator Network에서 모든 역할을 하는 것이 아니라 각자의 역할을 지닌 여러 생성자 네트워크 만들어서 학습을 더 잘 시키게 만들게 하려 한 것 같다?라는 느낌을 받았다.

728x90