GAN을 소개하는 문서 에서 :
너무 많이 접히는 것은 의미가 있습니다. $ \ vec {z} $ -값을 단일 $ \ vec {x} $ -값으로 지정하면 문제가 발생합니다. 그러나 $ D $ 실행하기 전에 짧은 시간 동안 $ G $ 을 (를) 훈련하는 방법에 대해 약간 혼란 스러웠습니다. / span>이 문제를 해결할 수 있습니다. 하지만 “Helvetica 시나리오”를 검색했을 때 찾을 수 있었던 것은 Look Around You 라는 패러디 쇼에 대한 언급뿐이었습니다.
이것은 단순한 것이 아니라 실제적인 것처럼 보이기 때문에 패러디 — 어디에서 더 자세히 알아볼 수 있으며 어떻게 예방할 수 있습니까? 그리고 그것을 “헬 베티 카 시나리오”라고 부르는 이유는 무엇입니까?
답변
하나의 $ x $ 는 실제로 GAN의 주요 문제입니다. 일반적으로 모드 축소 라고합니다. 대부분의 GAN 문서에서 이에 대해 논의합니다.
실행하기 전에 𝐺를 더 짧은 시간 동안 훈련하면 𝐷 문제를 해결할 수있는 방법에 대해 약간 혼란 스러웠습니다.
아이디어는 $ D $ 를 생성기로 최신 상태로 유지하는 것입니다. class = “math-container”> $ G $ . 교육을 $ G $ 줄이면 $ D $ 더 교육하게됩니다. 일반적으로 GAN으로 대체 최적화가 수행됩니다. 즉, $ n $ 반복에 대해 $ D $ 훈련, 그런 다음 $ m $ 반복의 경우 $ G $ 등입니다. $ D $ 의 “작업”은 실제 데이터에서 가짜 $ G $ 출력을 식별 할 수 있습니다. 포인트들. 그러나 $ D $ 를 충분히 교육하지 않으면 (즉, $ G $ , 따라서 $ m > n $ ), $ G $ 은 $ D $ 의 로컬 최소값을 신속하게 “달아 내고”이용합니다. From $ G $ ” $ D $ 가 일부 출력을 “좋아요”하는 경우 $ x = G (z) $ , 가장 쉬운 방법은 출력 $ x $ 뿐입니다! $ G $ 더 적게 (따라서 $ D $ 더 많이) 훈련하면이 최소값이 이동하고 <스팬 class = "math-container"> $ G $ 를 악용 할 수 없습니다.
$ D $ 을 (를) 과도하게 훈련하면 선험적으로 나쁜 것으로 보입니다. 실제로 현대 GAN 손실 (예 : Wasserstein 손실)과 함께 $ n $ 을 (를) 원합니다. 이는 $ D $ 가 모든 단계에서 훌륭한 차별 자로 수렴된다는 것을 의미하므로 $ G $ . (실제로 수렴 증명은이를 수행하는 데 달려 있습니다!) 그러나 실제로는 원래 GAN의 경우 $ D $ 는 쓸모없는 그라디언트로 이어지는 경향이 있습니다 (아래 참조) : $ G $ 가 할 수있는 일은 판별자를 기쁘게 할 수 없으므로 모든 가중치 업데이트는 쓸모가 없습니다. , 그래서 GAN 매개 변수 공간을 헛되이 휘젓는 다). 다른 사람들에 의해 이러한 허약함을 불안정한 훈련이라고합니다. 🙂
즉, 바닐라 GAN의 경우 $ D $ 과소 훈련은 모드 붕괴로 이어질 수 있지만 과잉 훈련은 불안정해질 수 있습니다. 사람들은 단순히 $ D $ 를 과도하게 훈련시키고 모드 붕괴를 피할 수 있도록 불안정성을 완화하는 데 초점을 맞추고있는 것 같습니다.
어떻게 예방할 수 있습니까?
이를 완화하는 일반적인 방법 중 하나는 Wasserstein 손실과 같은 다른 손실 함수를 사용하는 것입니다. 원래 GAN 공식의 한 가지 문제점은 (JS 발산을 최소화함으로써) 손실이 매우 적은 겹침으로 분포를 잘 처리하지 못하기 때문에 (즉, 공유 지원이 작은 경우) 매우 유익하지 않은 기울기를 가질 수 있다는 것입니다. 어떤 의미에서 발전기가 제대로 작동하지 않으면 너무 가혹합니다. 반대로 최적의 수송 손실은 두 분포가 서로 멀리 떨어져 있어도 원활하게 감소합니다. 예를 들어 Wasserstein GAN 논문 및 후속 작업.
그리고 왜 “Helvetica 시나리오”라고 불릴까요?
너무 많은 칼슘이 한 곳에 모여 재앙을 일으키는 쇼를 의미합니다. 여기에서 데이터 공간의 작은 영역에 너무 많은 생성기 확률 밀도가 배치되면 재해가 발생합니다. 🙂