जीएएन, प्रायिकता बंटन को दोहराने की कोशिश करते हैं. इसलिए, उन्हें ऐसे लॉस फ़ंक्शन का इस्तेमाल करना चाहिए जो जीएएन से जनरेट किए गए डेटा के डिस्ट्रिब्यूशन और असली डेटा के डिस्ट्रिब्यूशन के बीच की दूरी को दिखाते हों.
GAN के लॉस फ़ंक्शन में, दो डिस्ट्रिब्यूशन के बीच का अंतर कैसे कैप्चर किया जाता है? इस सवाल पर लगातार रिसर्च की जा रही है और इसके लिए कई तरीके सुझाए गए हैं. हम यहां दो सामान्य GAN लॉस फ़ंक्शन के बारे में बताएंगे. ये दोनों फ़ंक्शन, TF-GAN में लागू किए गए हैं:
- मिनिमैक्स लॉस: यह लॉस फ़ंक्शन, GANs को पेश करने वाले पेपर में इस्तेमाल किया गया था.
- Wasserstein loss: TF-GAN एस्टिमेटर्स के लिए डिफ़ॉल्ट लॉस फ़ंक्शन. इस बारे में पहली बार 2017 के एक पेपर में बताया गया था.
TF-GAN कई अन्य लॉस फ़ंक्शन भी लागू करता है.
एक लॉस फ़ंक्शन या दो?
किसी GAN में दो लॉस फ़ंक्शन हो सकते हैं: एक जनरेटर ट्रेनिंग के लिए और एक डिस्करिमिनेटर ट्रेनिंग के लिए. संभाव्यता डिस्ट्रिब्यूशन के बीच की दूरी को दिखाने के लिए, दो लॉस फ़ंक्शन एक साथ कैसे काम कर सकते हैं?
यहां हम जिन लॉस स्कीम के बारे में जानेंगे उनमें जनरेटर और डिस्करिमिनेटर लॉस, संभाव्यता डिस्ट्रिब्यूशन के बीच की दूरी के एक मेज़र से मिलते हैं. हालांकि, इन दोनों स्कीम में जनरेटर, डिस्टेंस मेज़र में सिर्फ़ एक शब्द पर असर डाल सकता है: वह शब्द जो नकली डेटा के डिस्ट्रिब्यूशन को दिखाता है. इसलिए, जनरेटर ट्रेनिंग के दौरान, हम उस दूसरे शब्द को हटा देते हैं जो असल डेटा के डिस्ट्रिब्यूशन को दिखाता है.
जनरेटर और डिस्करिमिनेटर लॉस, आखिर में अलग-अलग दिखते हैं. भले ही, ये एक ही फ़ॉर्मूला से मिलते हैं.
मिनीमैक्स लॉस
जीएएन के बारे में बताने वाले पेपर में, जनरेटर इस फ़ंक्शन को कम करने की कोशिश करता है, जबकि डिस्करिमिनेटर इसे बढ़ाने की कोशिश करता है:
इस फ़ंक्शन में:
D(x)
, डिस्करिमिनेटर का अनुमान है कि असल डेटा इंस्टेंस x असल है.- Ex, सभी रीयल डेटा इंस्टेंस की अनुमानित वैल्यू है.
G(z)
, शोर z के लिए जनरेटर का आउटपुट है.D(G(z))
, डिस्करिमिनेटर का अनुमान है कि किसी फ़र्ज़ी इंस्टेंस के असली होने की संभावना कितनी है.- Ez, जनरेटर के सभी रैंडम इनपुट के लिए अनुमानित वैल्यू है (असल में, जनरेट किए गए सभी फ़र्ज़ी इंस्टेंस G(z) के लिए अनुमानित वैल्यू).
- यह फ़ॉर्मूला, असल और जनरेट किए गए डिस्ट्रिब्यूशन के बीच क्रॉस-एन्ट्रोपी से मिलता है.
जनरेटर, फ़ंक्शन में log(D(x))
टर्म पर सीधे तौर पर असर नहीं डाल सकता. इसलिए, जनरेटर के लिए, नुकसान को कम करना log(1 -
D(G(z)))
को कम करने के बराबर है.
TF-GAN में, इस लॉस फ़ंक्शन को लागू करने के लिए, minimax_discriminator_loss और minimax_generator_loss देखें.
बदला गया मिनीमैक्स लॉस
ओरिजनल जीएएन पेपर में बताया गया है कि ऊपर दिए गए मिनीमैक्स लॉस फ़ंक्शन की वजह से, जीएएन ट्रेनिंग के शुरुआती चरणों में जीएएन फंस सकता है. ऐसा तब होता है, जब डिस्करिमिनेटर की भूमिका बहुत आसान हो. इसलिए, पेपर में जनरेटर के नुकसान में बदलाव करने का सुझाव दिया गया है, ताकि जनरेटर log D(G(z))
को बढ़ाने की कोशिश कर सके.
इस बदलाव को लागू करने के लिए, TF-GAN में modified_generator_loss देखें.
वासरस्टीन लॉस
डिफ़ॉल्ट रूप से, TF-GAN Wasserstein loss का इस्तेमाल करता है.
यह लॉस फ़ंक्शन, GAN स्कीम में किए गए बदलाव पर निर्भर करता है. इसे "Wasserstein GAN" या "WGAN" कहा जाता है. इसमें डिस्करिमिनेटर, असल में इंस्टेंस को अलग-अलग कैटगरी में नहीं बांटता. हर इंस्टेंस के लिए, यह एक संख्या दिखाता है. यह संख्या एक से कम या 0 से ज़्यादा होनी ज़रूरी नहीं है. इसलिए, हम किसी इंस्टेंस के असली या नकली होने का पता लगाने के लिए, थ्रेशोल्ड के तौर पर 0.5 का इस्तेमाल नहीं कर सकते. डिस्करिमिनेटर ट्रेनिंग सिर्फ़ नकली इंस्टेंस के मुकाबले, असली इंस्टेंस के लिए आउटपुट को बड़ा करने की कोशिश करती है.
असल और नकली इमेज के बीच फ़र्क़ नहीं कर पाने की वजह से, WGAN डिक्रिमिनेटर को "डिक्रिमिनेटर" के बजाय "क्रिटिक" कहा जाता है. इस अंतर को सैद्धांतिक तौर पर अहम माना जाता है. हालांकि, व्यावहारिक तौर पर इसे इस बात के तौर पर स्वीकार किया जा सकता है कि लॉस फ़ंक्शन के इनपुट, संभावनाएं नहीं होनी चाहिए.
लॉस फ़ंक्शन अपने-आप में बहुत आसान होते हैं:
Critic Loss: D(x) - D(G(z))
डिस्क्रेमिनेटर इस फ़ंक्शन को ज़्यादा से ज़्यादा इस्तेमाल करने की कोशिश करता है. दूसरे शब्दों में, यह असल इंस्टेंस और नकली इंस्टेंस पर मिले आउटपुट के बीच का अंतर बढ़ाने की कोशिश करता है.
जनरेटर लॉस: D(G(z))
जनरेटर इस फ़ंक्शन को ज़्यादा से ज़्यादा इस्तेमाल करने की कोशिश करता है. दूसरे शब्दों में, यह अपने नकली इंस्टेंस के लिए, डिस्करिमिनेटर के आउटपुट को बढ़ाने की कोशिश करता है.
इन फ़ंक्शन में:
D(x)
, किसी असल उदाहरण के लिए क्रिटिक का आउटपुट है.G(z)
, शोर z के लिए जनरेटर का आउटपुट है.D(G(z))
, किसी फ़र्ज़ी इंस्टेंस के लिए आलोचक का आउटपुट है.- क्रिटिक D का आउटपुट, 1 और 0 के बीच नहीं होना चाहिए.
- ये फ़ॉर्मूला, असल और जनरेट किए गए डिस्ट्रिब्यूशन के बीच की पृथ्वी को गति देने वाली मशीन की दूरी से मिलते हैं.
TF-GAN में, लागू करने के लिए wasserstein_generator_loss और wasserstein_discriminator_loss देखें.
ज़रूरी शर्तें
वॉसरस्टीन जीएएन (या डब्ल्यूजीएएन) के लिए सैद्धांतिक तौर पर यह ज़रूरी है कि जीएएन में मौजूद सभी वेट को क्लिप किया जाए, ताकि वे तय सीमा में रहें.
फ़ायदे
वासरस्टीन जीएएन, मिनीमैक्स पर आधारित जीएएन की तुलना में कम रुकते हैं और वैनिशिंग ग्रेडिएंट की समस्याओं से बचते हैं. धरती को एक जगह से दूसरी जगह ले जाने की दूरी को सही मेट्रिक माना जाता है. यह संभावना के बंटवारे के स्पेस में दूरी का मेज़र होता है. इस हिसाब से, क्रॉस-एन्ट्रोपी कोई मेट्रिक नहीं है.