अपडेट करें:
मूल MSE कार्यान्वयन इस प्रकार है:
def mean_squared_error(y_true, y_pred):
if not K.is_tensor(y_pred):
y_pred = K.constant(y_pred)
y_true = K.cast(y_true, y_pred.dtype)
return K.mean(K.square(y_pred - y_true), axis=-1)
मुझे लगता है कि सही अधिकतम हानि समारोह:
def mean_squared_error_max(y_true, y_pred):
if not K.is_tensor(y_pred):
y_pred = K.constant(y_pred)
y_true = K.cast(y_true, y_pred.dtype)
return K.mean(K.square(1 / (y_pred - y_true)), axis=-1)
इस तरह हमें हमेशा एक सकारात्मक हानि मूल्य मिलता है, जैसे कि एमएसई फ़ंक्शन के मामले में, लेकिन उलटा प्रभाव के साथ।
अद्यतन 2:
शुरू में मैंने लिखा, कि करने के लिए सहज ज्ञान युक्त पहला विचार से ये सिर्फ नकारना नुकसान होगा नहीं परिणाम क्या हम क्योंकि अनुकूलन तरीकों के आधार अवधारणा की उम्मीद दे (आप एक दिलचस्प चर्चा पढ़ सकते हैं यहाँ )। जब मैंने एक विशेष शिक्षण कार्य में परिणाम को सिर करने के लिए दोनों विधि सिर की जाँच की (नोट: मैंने एक ऑल-आउट परीक्षण नहीं किया था) यह था कि दोनों विधि ने नुकसान को अधिकतम किया, हालांकि -loss
दृष्टिकोण थोड़ा तेज हो गया। मुझे यकीन नहीं है कि यह हमेशा यहां बताए गए संभावित मुद्दे के कारण सबसे अच्छा समाधान या कोई समाधान देता है । अगर किसी को अन्य अनुभव है, तो कृपया मुझे बताएं।
तो अगर किसी को -loss
भी एक कोशिश देना चाहते हैं:
def mean_squared_error(y_true, y_pred):
if not K.is_tensor(y_pred):
y_pred = K.constant(y_pred)
y_true = K.cast(y_true, y_pred.dtype)
return - K.mean(K.square(y_pred - y_true), axis=-1)
अतिरिक्त जानकारिया:
ओपी ने लिखा:
मेरे पास एक जेनेरेटर का प्रतिकूल नेटवर्क है, जहां एमएसई के साथ भेदभाव कम हो जाता है और जनरेटर को अधिकतम होना चाहिए। क्योंकि दोनों विरोधी हैं जो विपरीत लक्ष्य का पीछा करते हैं।
Ibragil द्वारा दिए गए लिंक से:
इस बीच, जनरेटर नई, सिंथेटिक छवियां बना रहा है जो कि विवेचक को पास करता है। यह आशाओं में ऐसा करता है कि वे, नकली होने पर भी, प्रामाणिक माने जाएंगे। जनरेटर का लक्ष्य निष्क्रिय हाथ से लिखे अंकों को उत्पन्न करना है: बिना पकड़े जाने के लिए झूठ बोलना। विवेचक का लक्ष्य जनरेटर से आने वाली छवियों को नकली के रूप में पहचानना है।
तो यह एक बीमार समस्या है:
में GAN हमारे अंतिम लक्ष्य हमारे दो प्रतिपक्षों को प्रशिक्षित करने के discriminator और जनरेटर एक दूसरे के खिलाफ संभव के रूप में अच्छा के रूप में प्रदर्शन करने के लिए। इसका मतलब है, कि दो आधार सीखने algorythm विभिन्न कार्यों लेकिन नुकसान समारोह जिसके साथ वे प्राप्त कर सकते हैं इष्टतम समाधान एक ही है यानी binary_crossentropy
, इसलिए मॉडल 'कार्य इस खो कम करने के लिए कर रहे हैं।
एक भेदभाव मॉडल का संकलन विधि:
self.discriminator.compile(loss='binary_crossentropy', optimizer=optimizer)
एक जनरेटर मॉडल का संकलन विधि:
self.generator.compile(loss='binary_crossentropy', optimizer=optimizer)
यह दो रनर के लक्ष्य की तरह ही होता है, जिसे पूरा करने के अपने समय को कम से कम किया जाना चाहिए, भले ही वे इस कार्य में प्रतिस्पर्धी हों।
तो "विपरीत लक्ष्य" का अर्थ विपरीत कार्य नहीं है अर्थात नुकसान को कम करना (यानी धावक के उदाहरण में समय कम से कम करना)।
मुझे उम्मीद है यह मदद करेगा।