ग्रेडिएंट बूस्टिंग (वैकल्पिक इकाई)

रिग्रेशन की समस्याओं में, साइन की गई गड़बड़ी को अनुमान और लेबल के बीच के अंतर के तौर पर परिभाषित करना सही होता है. हालांकि, दूसरी तरह की समस्याओं में इस रणनीति से अक्सर खराब नतीजे मिलते हैं. ग्रेडिएंट बूस्टिंग में इस्तेमाल की जाने वाली एक बेहतर रणनीति यह है:

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

औपचारिक रूप से, एक नुकसान फ़ंक्शन $L(y,p)$ दिया गया है, जिसमें $y$ एक लेबल है और $p$ एक अनुमान है, $i$ चरण में कमज़ोर मॉडल को ट्रेनिंग देने के लिए इस्तेमाल किया जाने वाला सूडो रिस्पॉन्स $z_i$ है:

$$ z_i = \frac {\partial L(y, F_i)} {\partial F_i} $$

कहां:

  • $F_i$ बेहतर मॉडल का अनुमान है.

पिछला उदाहरण रिग्रेशन की समस्या के बारे में था: इसका मकसद किसी न्यूमेरिक वैल्यू का अनुमान लगाना है. रिग्रेशन के मामले में, वर्ग में गड़बड़ी होने का एक आम नुकसान है:

$$ L(y,p) = (y - p)^2 $$

इस स्थिति में, ग्रेडिएंट है:

$$ z = \frac {\partial L(y, F_i)} {\partial F_i} = \frac {\partial(y-p)^2} {\partial p} = 2(y - p) = 2 \ \text{signed error} $$

शब्दों को क्रम में लगाकर, ग्रेडिएंट हमारे उदाहरण में दी गई साइन की गई गड़बड़ी है, जिसमें 2 का फ़ैक्टर है. ध्यान दें कि सिकुड़ने की वजह से स्थायी वजहों से कोई फ़र्क़ नहीं पड़ता. ध्यान दें कि यह समतुल्यता सिर्फ़ वर्गाकार एरर लॉस वाली रिग्रेशन समस्याओं के लिए सही है. सुपरवाइज़्ड लर्निंग से जुड़ी अन्य समस्याओं के लिए, ग्रेडिएंट और साइन की गई गड़बड़ी के बीच कोई फ़र्क़ नहीं होता है. जैसे, क्लासिफ़िकेशन, रैंकिंग, पर्सेंटाइल कमी के साथ रिग्रेशन.

न्यूटन के मेथड चरण की मदद से लीफ़ और स्ट्रक्चर ऑप्टिमाइज़ेशन

न्यूटन का तरीका, ग्रेडिएंट डिसेंट जैसी ऑप्टिमाइज़ेशन का एक तरीका है. हालांकि, ऑप्टिमाइज़ करने के लिए ग्रेडिएंट डिसेंट में फ़ंक्शन के ग्रेडिएंट का इस्तेमाल किया जाता है, जबकि न्यूटन का तरीका, ऑप्टिमाइज़ेशन के लिए ग्रेडिएंट (फ़र्स्ट डेरिवेटिव) और फ़ंक्शन के दूसरे डेरिवेटिव का इस्तेमाल करता है.

ग्रेडिएंट डिसेंट का एक चरण इस तरह है:

$$ x_{i+1} = x_i - \frac {df}{dx}(x_i) = x_i - f'(x_i) $$

और न्यूटन की पद्धति को इस तरह समझाता है:

$$ x_{i+1} = x_i - \frac {\frac {df}{dx} (x_i)} {\frac {d^2f}{d^2x} (x_i)} = x_i - \frac{f'(x_i)}{f''(x_i)}$$

इसके अलावा, न्यूटन के तरीके को ग्रेडिएंट बूस्ट किए गए पेड़ों की ट्रेनिंग के साथ दो तरीकों से इंटिग्रेट किया जा सकता है:

  1. जब किसी पेड़ को ट्रेनिंग दी जाती है, तो हर पत्ती पर न्यूटन का एक स्टेप लागू किया जाता है और उसका मान बदल जाता है. पेड़ों की संरचना में कोई बदलाव नहीं हुआ है. सिर्फ़ पत्तियों की वैल्यू बदलती हैं.
  2. किसी पेड़ के बढ़ने के दौरान, शर्तें उस स्कोर के हिसाब से चुनी जाती हैं जिसमें न्यूटन फ़ॉर्मूला का कोई कॉम्पोनेंट शामिल होता है. पेड़ की संरचना पर असर पड़ता है.
YDF कोड
YDF में:
  • YDF हमेशा लीफ़ पर न्यूटन स्टेप लागू करता है (पहला विकल्प).
  • आप use_hessian_gain=True का इस्तेमाल करके, दूसरे विकल्प को चालू कर सकते हैं.