ओवरफ़िटिंग: L2 रेगुलराइज़ेशन

L2 रेगुलराइज़ेशन एक लोकप्रिय रेगुलराइज़ेशन मेट्रिक है. इसमें इस फ़ॉर्मूले का इस्तेमाल किया जाता है:

$$L_2\text{ regularization } = {w_1^2 + w_2^2 + ... + w_n^2}$$

उदाहरण के लिए, नीचे दी गई टेबल में छह वेट वाले मॉडल के लिए, L2 रेगुलराइज़ेशन का हिसाब लगाया गया है:

मान स्क्वेयर की गई वैल्यू
w1 0.2 0.04
w2 -0.5 0.25
w3 5.0 25.0
w4 -1.2 1.44
w5 0.3 0.09
w6 -0.1 0.01
    26.83 = कुल

ध्यान दें कि शून्य के करीब के वेट से, L2 रेगुलराइज़ेशन पर ज़्यादा असर नहीं पड़ता. हालांकि, बड़े वेट का काफ़ी असर पड़ सकता है. उदाहरण के लिए, ऊपर दिए गए कैलकुलेशन में:

  • एक वज़न (w3) कुल जटिलता का करीब 93% हिस्सा होता है.
  • अन्य पांच वेट, कुल कॉम्प्लेक्सिटी में सिर्फ़ 7% का योगदान देते हैं.

L2 रेगुलराइज़ेशन, वैल्यू को 0 की ओर ले जाता है. हालांकि, वैल्यू को कभी भी 0 पर नहीं ले जाता.

एक्सरसाइज़: देखें कि आपको क्या समझ आया

अगर मॉडल को ट्रेनिंग देते समय, L2 रेगुलराइज़ेशन का इस्तेमाल किया जाता है, तो आम तौर पर मॉडल की पूरी जटिलता पर क्या असर पड़ेगा?
इससे सिस्टम की कुल जटिलता कम हो सकती है.
L2 रेगुलराइज़ेशन, वेट को 0 की ओर बढ़ाता है. इसलिए, हो सकता है कि कुल कॉम्प्लेक्सिटी कम हो जाए.
मॉडल की कुल जटिलता शायद पहले जैसी ही रहेगी.
ऐसा होने की संभावना बहुत कम है.
इससे मॉडल की कुल जटिलता बढ़ सकती है.
ऐसा होने की संभावना कम है. याद रखें कि L2 रेगुलराइज़ेशन, वेट को 0 के करीब ले जाता है.
अगर मॉडल को ट्रेन करते समय L2 रेगुलराइज़ेशन का इस्तेमाल किया जाता है, तो मॉडल से कुछ सुविधाएं हटा दी जाएंगी.
सही
भले ही, L2 रेगुलराइज़ेशन से कुछ वेट बहुत कम हो सकते हैं, लेकिन यह किसी भी वेट को कभी शून्य पर नहीं ले जाएगा. इसलिए, सभी सुविधाएं अब भी मॉडल में कुछ योगदान देंगी.
गलत
L2 रेगुलराइज़ेशन, वैल्यू को कभी भी शून्य पर नहीं ले जाता.

रेगुलराइज़ेशन रेट (लैम्ब्डा)

जैसा कि बताया गया है, ट्रेनिंग में नुकसान और जटिलता के कुछ कॉम्बिनेशन को कम करने की कोशिश की जाती है:

$$\text{minimize(loss} + \text{ complexity)}$$

मॉडल डेवलपर, मॉडल की ट्रेनिंग पर जटिलता के असर को कम करने के लिए, रेगुलराइज़ेशन रेट नाम के स्केलर से इसकी वैल्यू को गुणा करते हैं. ग्रीक वर्ण लेम्ब्डा, आम तौर पर रेगुलराइज़ेशन रेट का प्रतीक होता है.

इसका मतलब है कि मॉडल डेवलपर का मकसद ये काम करना है:

$$\text{minimize(loss} + \lambda \text{ complexity)}$$

नियमों का उल्लंघन करने की दर ज़्यादा है:

  • रेगुलराइज़ेशन के असर को बेहतर बनाता है. इससे, ओवरफ़िट होने की संभावना कम हो जाती है.
  • यह मॉडल के वेट का हिस्टोग्राम बनाता है, जिसमें ये विशेषताएं होती हैं:
    • सामान्य डिस्ट्रिब्यूशन
    • औसत वज़न 0 है.

नियमों का पालन करने की दर कम होना:

  • इससे रेगुलराइज़ेशन का असर कम हो जाता है. साथ ही, इससे ओवरफ़िट होने की संभावना बढ़ जाती है.
  • यह फ़्लैट डिस्ट्रिब्यूशन के साथ, मॉडल के वज़न का हिस्टोग्राम बनाने की कोशिश करता है.

उदाहरण के लिए, ज़्यादा रेगुलराइज़ेशन रेट के लिए मॉडल वेट का हिस्तोग्राम, ऐसा दिख सकता है जैसा कि फ़िगर 18 में दिखाया गया है.

इमेज 18. मॉडल के वेट का हिस्टोग्राम, जिसमें मीन शून्य और
            नॉर्मल डिस्ट्रिब्यूशन है.
18वां डायग्राम. ज़्यादा रेगुलराइज़ेशन रेट के लिए वज़न का हिस्टोग्राम. माध्य शून्य है. सामान्य डिस्ट्रिब्यूशन.

 

इसके उलट, रेगुलराइज़ेशन रेट कम होने पर, हिस्टोग्राम काफ़ी सपाट हो जाता है, जैसा कि फ़िगर 19 में दिखाया गया है.

इमेज 19. किसी मॉडल के वेट का हिस्टोग्राम, जिसका औसत शून्य है और जो
            फ़्लैट डिस्ट्रिब्यूशन और सामान्य डिस्ट्रिब्यूशन के बीच में है.
19वां डायग्राम. कम रेगुलराइज़ेशन रेट के लिए वज़न का हिस्टोग्राम. माध्य शून्य हो सकता है या नहीं.

 

नियमों के मुताबिक दर चुनना

सही रेगुलराइज़ेशन रेट से ऐसा मॉडल बनता है जो नए और पहले कभी न देखे गए डेटा के लिए सही नतीजे देता है. माफ़ करें, यह आदर्श वैल्यू डेटा पर निर्भर करती है. इसलिए, आपको मैन्युअल या अपने-आप होने वाली ट्यूनिंग.

जल्दी रोकना: जटिलता पर आधारित रेगुलराइज़ेशन का विकल्प

रिग्रेसिंग की प्रोसेस को जल्दी खत्म करना, रेगुलराइज़ेशन का एक ऐसा तरीका है जिसमें जटिलता का हिसाब नहीं लगाया जाता. इसके बजाय, जल्दी रोकने का मतलब है कि मॉडल के पूरी तरह से एक साथ काम करने से पहले, ट्रेनिंग को खत्म करना. उदाहरण के लिए, पुष्टि करने वाले सेट के लिए लॉस कर्व बढ़ने (ढलान का दायरा बढ़ने) पर, ट्रेनिंग खत्म की जाती है.

आम तौर पर, ट्रेनिंग के दौरान एग्ज़िट करने से ट्रेनिंग में होने वाला नुकसान बढ़ता है. हालांकि, इससे टेस्ट में होने वाला नुकसान कम हो सकता है.

जल्दी रोकना, रेगुलराइज़ेशन का एक तेज़ तरीका है. हालांकि, यह बहुत कम मामलों में ऑप्टिमाइज़ किया जाता है. ऐसा हो सकता है कि इससे मिलने वाला मॉडल, आदर्श रेगुलराइज़ेशन रेट पर पूरी तरह से ट्रेन किए गए मॉडल के बराबर अच्छा न हो.

लर्निंग रेट और रेगुलराइज़ेशन रेट के बीच संतुलन पाना

लर्निंग रेट और रेगुलराइज़ेशन रेट, वैल्यू के महत्व को अलग-अलग दिशाओं में खींचते हैं. ज़्यादा लर्निंग रेट, अक्सर वेट को शून्य से दूर ले जाता है; ज़्यादा रेगुलराइज़ेशन रेट, वेट को शून्य की तरफ़ ले जाता है.

अगर लर्निंग रेट के मुकाबले रेगुलराइज़ेशन रेट ज़्यादा है, तो कम अहमियत वाले वेट से ऐसा मॉडल बनता है जो खराब अनुमान लगाता है. इसके उलट, अगर रेगुलराइज़ेशन रेट के मुकाबले लर्निंग रेट ज़्यादा है, तो ज़्यादा वेट की वजह से ओवरफ़िट मॉडल बनता है.

आपका लक्ष्य, लर्निंग रेट और रेगुलराइज़ेशन रेट के बीच संतुलन ढूंढना है. यह चुनौती भरा हो सकता है. सबसे बुरी बात यह है कि सही बैलेंस मिलने के बाद भी, आपको लर्निंग रेट में बदलाव करना पड़ सकता है. साथ ही, लर्निंग रेट बदलने पर, आपको फिर से सही रेगुलराइज़ेशन रेट ढूंढना होगा.