rueki

Cycle Gan 정리 본문

Gan

Cycle Gan 정리

륵기 2021. 2. 15. 13:32
728x90
반응형

이전의 Image translation에서는 paired data로 input, output을 구성해서 훈련을 했으나, 결론적으로는 여러 task에 적용하기에는 어려움이 있다. 그래서 개선된 방향으로 Domain X와 target Y 간에 Unpaired 하게 데이터를 구성해서 훈련이 가능하다는 개념을 Cycle Gan에서 소개하고 있다. 

 

논문에서 소개하는 하나의 예시인데 원래의 개념이라면 그림과 사진간에 서로 알고 있어야 그 사이가 추론이 가능하지만, unpaired data의 특성으로 인해 X와 Y가 매치되는 정보는 없더라도 생성이 가능하게 된다.

이전에는 지도학습에서 translation system에 강한 성능을 나타냈지만, paired data를 구성하려면 Cost가 많이 든다는 단점이 있다. 그리고 하나의 mode에 대해서만 계속 잘 생성하게 되는 mode collapse 문제도 있다.

 

그리고 X와 Y가 paired data라고 해서 항상 의미 있지는 않다. 그래서 Cycle gan의 개념이 나온 것인데, 논문에서는 Cycle consistent를 강조한다.

 

 

여기서는 크게 두 가지 구조를 가진다. G : X -> Y 와 F : Y -> X 인데 결국에는 아래의 형태를 만족해야한다.

이를 쭉 풀게 되면, input x -> G(x) -> F(G(x)) -> x 로 forward 되는 방식과, y -> F(y) -> G(F(y)) ->y 로 backward 되는 방식으로 구성이 되어 있다. Cycle consistency의 특징은 즉 구조를 계속 regularize 할 수 있다는 것이다.

 

가장 중요한 loss function에 등장한 개념을 보면 adversarial losses cycle consistency losses 두 가지가 등장한다.

먼저 adversarial loss를 살펴보면 수식은 아래와 같다.

G는 0으로 가까이, Y는 1에 가깝게 하는 minGmaxD 의 형태를 가지는데 이는 Vanila Gan에서의 함수와 같은 개념이다.

이것의 목표는 결국 G(x)가 Domain Y와 유사하게 생성이 되려고 할 때, y의 Discriminator는 translated Sample G(x)와 real sample y를 구분하는 것이 목표이다. 위의 수식에서는 G에 대해서만 설명했지만, F에 대해서도 concept은 같다.

 

이제 Cycle consistency loss를 보려고 한다.

Adeversarial loss만으로는 G와 F 사이에서 두 함수간의 매핑되는 공간의 차이를 줄이기 어렵기에 좋은 결과를 얻기가 힘들다고 한다. 

G와 F를 하나씩 나누어서 보면 각각의 input과 output이 존재하는데 왼쪽 그림은 input X와 F 함수를 걸쳐서 나온 output 간의 loss를 설명하며 오른쪽은 input이 target y인 경우에 나타낸다.

요약하자면, input x에서 도메인 y를 만들고, 다시 생성한 값과 실제 x간의 loss + y로 만든 것에 대해 sample x를 생성했을 대, 실제 도메인과의 loss를 합한 것과 같다. 최종 수식은 아래와 같다. 여기서 loss는 L1 loss를 사용한다고 한다.

 

 

728x90
반응형
Comments