मालिकाना हक का डेमो
$$ \definecolor{input}{RGB}{66, 133, 244} \definecolor{output}{RGB}{219, 68, 55} \definecolor{dinput}{RGB}{244, 180, 0} \definecolor{doutput}{RGB}{15, 157, 88} \definecolor{dweight}{RGB}{102, 0, 255} $$

बैक-प्रोपेगेशन एल्गोरिदम

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

कृपया नीचे स्क्रोल करें...

सामान्य न्यूरल नेटवर्क

दाईं ओर, आपको एक इनपुट नेटवर्क के साथ न्यूरल नेटवर्क दिखेगा. इसमें एक आउटपुट नोड और दो छिपी हुई लेयर होती हैं. हर नोड में दो नोड होते हैं.

आस-पास के लेयर में मौजूद नोड, वेट से जुड़े होते हैं \(w_{ij}\), जो कि नेटवर्क पैरामीटर होते हैं.

ऐक्टिवेशन फ़ंक्शन

हर नोड में कुल इनपुट \(\color{input}x\), ऐक्टिवेशन फ़ंक्शन \(f(\color{input}x\color{black})\) और आउटपुट \(\color{output}y\color{black}=f(\color{input}x\color{black})\)होता है. \(f(\color{input}x\color{black})\) यह नॉन-लीनियर फ़ंक्शन होना चाहिए, नहीं तो न्यूरल नेटवर्क सिर्फ़ लीनियर मॉडल सीख सकता है.

आम तौर पर, ऐक्टिवेशन फ़ंक्शन Sigmoid फ़ंक्शन होता है: \(f(\color{input}x\color{black}) = \frac{1}{1+e^{-\color{input}x}}\).

फ़ंक्शन में गड़बड़ी

लक्ष्य के तौर पर, नेटवर्क से डेटा का अपने-आप यह पता लगाना है कि अनुमानित आउटपुट \(\color{output}y_{output}\) सभी इनपुट के लिए \(\color{output}y_{target}\) टारगेट के करीब है \(\color{input}x_{input}\).

हम लक्ष्य से कितनी दूर हैं, यह मापने के लिए, गड़बड़ी के फ़ंक्शन का इस्तेमाल करें \(E\). आम तौर पर, गड़बड़ी वाला फ़ंक्शन \(E(\color{output}y_{output}\color{black},\color{output}y_{target}\color{black}) = \frac{1}{2}(\color{output}y_{output}\color{black} - \color{output}y_{target}\color{black})^2 \).

फ़ॉरवर्ड प्रसार

हम इनपुट का एक उदाहरण लेते हैं \((\color{input}x_{input}\color{black},\color{output}y_{target}\color{black})\) और नेटवर्क की इनपुट लेयर को अपडेट करते हैं.

एक जैसा काम करने के लिए, हम इनपुट को किसी भी दूसरे नोड की तरह ही मानते हैं.हालांकि, इसे चालू करने का फ़ंक्शन नहीं दिया जाता है. इसलिए, इसका आउटपुट इनपुट के बराबर होता है, जैसे कि \( \color{output}y_1 \color{black} = \color{input} x_{input} \).

फ़ॉरवर्ड प्रसार

अब, हम पहली छिपी हुई लेयर को अपडेट करते हैं. हम पिछली लेयर में मौजूद नोड से मिलने वाले आउटपुट \(\color{output}y\) का इस्तेमाल करते हैं और अगली लेयर में मौजूद नोड के इनपुट \(\color{input}x\) का हिसाब लगाने के लिए वेट का इस्तेमाल करते हैं.
$$ \color{input} x_j \color{black} = $$$$ \sum_{i\in in(j)} w_{ij}\color{output} y_i\color{black} +b_j$$

फ़ॉरवर्ड प्रसार

फिर हम पहली छिपी हुई लेयर में मौजूद नोड के आउटपुट को अपडेट करते हैं. इसके लिए, हम ऐक्टिवेशन फ़ंक्शन \( f(x) \)का इस्तेमाल करेंगे.
$$ \color{output} y \color{black} = f(\color{input} x \color{black})$$

फ़ॉरवर्ड प्रसार

इन दो फ़ॉर्मूले का इस्तेमाल करके हम पूरे नेटवर्क में लागू होते हैं और नेटवर्क का आखिरी आउटपुट पाते हैं.
$$ \color{output} y \color{black} = f(\color{input} x \color{black})$$
$$ \color{input} x_j \color{black} = $$$$ \sum_{i\in in(j)} w_{ij}\color{output} y_i \color{black} + b_j$$

पहले से मौजूद गड़बड़ी

बैक-प्रॉप्लेशन एल्गोरिदम यह तय करता है कि किसी खास उदाहरण के लिए आउटपुट के साथ अनुमानित आउटपुट की तुलना करने के बाद, नेटवर्क के हर वज़न को कितना अपडेट किया जाएगा. इसके लिए, हमें यह पता लगाना होता है कि हर वज़न के हिसाब से गड़बड़ी में क्या बदलाव आता है \(\color{dweight}\frac{dE}{dw_{ij}}\).
गड़बड़ी मिलने पर, हम आसान अपडेट नियम का इस्तेमाल करके ट्रैफ़िक अपडेट कर सकते हैं:
$$w_{ij} = w_{ij} - \alpha \color{dweight}\frac{dE}{dw_{ij}}$$
जहां \(\alpha\) पॉज़िटिव कॉन्सटेंट होता है, जिसे लर्निंग रेट कहा जाता है. इसे पारदर्शी तौर पर बेहतर बनाने की ज़रूरत है.

[नोट] अपडेट करने का नियम बहुत आसान है: अगर वज़न बढ़ने पर गड़बड़ी कम होती है (\(\color{dweight}\frac{dE}{dw_{ij}}\color{black} < 0\)), तो वज़न बढ़ाएं, नहीं तो वज़न बढ़ाने (\(\color{dweight}\frac{dE}{dw_{ij}} \color{black} > 0\)) पर गड़बड़ी होने पर, वज़न को कम करें.

पहले से मौजूद डेरिवेटिव

हिसाब लगाने में मदद करने के लिए \(\color{dweight}\frac{dE}{dw_{ij}}\), हम हर नोड के लिए दो और डेरिवेटिव सेव करते हैं: गड़बड़ी में क्या बदलाव होता है:
  • नोड का कुल इनपुट \(\color{dinput}\frac{dE}{dx}\) और
  • नोड का आउटपुट \(\color{doutput}\frac{dE}{dy}\).

पिछला प्रसार

आइए, गड़बड़ी के पहले ही पता लगाने में मदद करते हैं. हमारे पास इस खास इनपुट के लिए अनुमानित आउटपुट है. इसलिए, हम यह पता लगा सकते हैं कि उस आउटपुट में गड़बड़ी कैसे बदलती है. हमारे गड़बड़ी फ़ंक्शन को देखते हुए \(E = \frac{1}{2}(\color{output}y_{output}\color{black} - \color{output}y_{target}\color{black})^2\) हमारे पास ये हैं:
$$ \color{doutput} \frac{\partial E}{\partial y_{output}} \color{black} = \color{output} y_{output} \color{black} - \color{output} y_{target}$$

पिछला प्रसार

अब हमारे पास \(\color{doutput} \frac{dE}{dy}\) चैनल के नियम का इस्तेमाल \(\color{dinput}\frac{dE}{dx}\) किया जा सकता है.
$$\color{dinput} \frac{\partial E}{\partial x} \color{black} = \frac{dy}{dx}\color{doutput}\frac{\partial E}{\partial y} \color{black} = \frac{d}{dx}f(\color{input}x\color{black})\color{doutput}\frac{\partial E}{\partial y}$$
जहां \(\frac{d}{dx}f(\color{input}x\color{black}) = f(\color{input}x\color{black})(1 - f(\color{input}x\color{black}))\) \(f(\color{input}x\color{black})\) , Sigmoid ऐक्टिवेशन फ़ंक्शन हो.

पिछला प्रसार

जैसे ही हमें किसी नोड के कुल इनपुट से जुड़ी गड़बड़ी की जानकारी मिलती है, हम उस नोड में आने वाले महत्व के हिसाब से गड़बड़ी का पता लगा सकते हैं.
$$\color{dweight} \frac{\partial E}{\partial w_{ij}} \color{black} = \frac{\partial x_j}{\partial w_{ij}} \color{dinput}\frac{\partial E}{\partial x_j} \color{black} = \color{output}y_i \color{dinput} \frac{\partial E}{\partial x_j}$$

पिछला प्रसार

चेन नियम का इस्तेमाल करके, हम पिछली लेयर से भी \(\frac{dE}{dy}\) मिल सकते हैं. हमने एक संपूर्ण सर्कल बना दिया है.
$$ \color{doutput} \frac{\partial E}{\partial y_i} \color{black} = \sum_{j\in out(i)} \frac{\partial x_j}{\partial y_i} \color{dinput} \frac{\partial E}{\partial x_j} \color{black} = \sum_{j\in out(i)} w_{ij} \color{dinput} \frac{\partial E}{\partial x_j}$$

पिछला प्रसार

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

खत्म.

गिनती की जा रही है...