Track
सोचिए किसी उपन्यास को पढ़ने की कोशिश कर रहे हैं जिसमें पन्ने पर हर शब्द को यादृच्छिक क्रम में मिला दिया गया हो। भले ही आप हर एक शब्द समझते हों, कहानी पूरी तरह खो जाती है क्योंकि शब्दों का क्रम ही अर्थ तय करता है। जब इंजीनियरों ने पहली बार Large Language Models (LLMs) डिज़ाइन करना शुरू किया, तो वे इसी तरह की बाधा से जूझे। जब मॉडल का मुख्य तंत्र हर चीज़ को एक साथ प्रोसेस करता है, तो आप उसे शब्दों के क्रम को समझना कैसे सिखाते हैं?
यहीं पोज़िशनल एनकोडिंग काम आती है। इस लेख में, हम पोज़िशनल एनकोडिंग की अंदरूनी कार्यप्रणाली का अन्वेषण करेंगे और समझेंगे कि ये ट्रांसफ़ॉर्मर्स को क्रम की समझ कैसे देती हैं। हम इसकी यात्रा को मूल साइनुसॉइडल फ़ॉर्मूलों से लेकर आधुनिक रोटेशनल एम्बेडिंग्स तक सुलझाएँगे और यह भी देखेंगे कि इसे अपने अगली मशीन लर्निंग परियोजना में कैसे लागू करें। यदि आप आधारभूत आर्किटेक्चर में नए हैं, तो हमारी ट्रांसफ़ॉर्मर्स कैसे काम करते हैं गाइड से शुरुआत करने की सलाह देता हूँ।
Positional Encoding क्या है?
पोज़िशनल एनकोडिंग एक ऐसी तकनीक है जो न्यूरल नेटवर्क्स को इनपुट डेटा के अनुक्रमिक क्रम को समझने में सक्षम बनाती है। यह ऐसे समन्वयों (coordinates) का सेट है जो किसी टोकन की सापेक्ष या निरपेक्ष स्थिति का प्रतिनिधित्व करता है और आपकी मानक डेटा अभिव्यक्ति के साथ मिला दिया जाता है।
टेक्स्ट के न्यूरल नेटवर्क में जाने से पहले, शब्दों को सतत संख्यात्मक रूपों में बदला जाता है जिन्हें एम्बेडिंग्स कहा जाता है। लेकिन, मानक एम्बेडिंग्स केवल शब्दार्थ (semantic) अर्थ को पकड़ती हैं: वे आपको दिए गए टेक्स्ट में शब्द की स्थिति के बारे में कुछ नहीं बतातीं। आप यह प्रक्रिया ठीक से कैसे काम करती है, यह हमारी Introduction to Embeddings with the OpenAI API कोर्स लेकर सीख सकते हैं।
पोज़िशनल एनकोडिंग इन टोकन एम्बेडिंग्स पर सीधे जोड़ी जाने वाली एक अतिरिक्त गणितीय परत है। शब्दार्थ अभिव्यक्ति को एक पोज़िशनल स्टैम्प के साथ मिलाकर, ट्रांसफ़ॉर्मर मॉडल वाक्य के अलग-अलग हिस्सों में आने वाले एक जैसे शब्दों में अंतर कर सकता है।
परमुटेशन इनवेरिएंस की समस्या
अनुक्रमिक डेटा का अर्थ क्रम पर बहुत निर्भर करता है। प्राकृतिक भाषा में "the dog bit the man" का अर्थ "the man bit the dog" से बिल्कुल अलग है।

ऐतिहासिक रूप से, Recurrent Neural Networks (RNNs) और Long Short-Term Memory नेटवर्क्स (LSTMs) ने इसे स्वाभाविक रूप से संभाला। वे टोकन्स को क्रम से प्रोसेस करते थे, यानी नेटवर्क पहले शब्द को समाप्त करने के बाद ही दूसरे शब्द को गणितीय रूप से ग्रहण करता था। इसी तरह, Convolutional Neural Networks (CNNs) स्थानीय स्लाइडिंग विंडो का उपयोग करके डेटा प्रोसेस करते हैं जो पिक्सेल्स या आस-पास के शब्दों की स्थानिक व्यवस्था को पकड़ती हैं।
ट्रांसफ़ॉर्मर्स क्रमिक प्रोसेसिंग को पूरी तरह छोड़ देते हैं। वे सभी टोकन्स को समानांतर में प्रोसेस करते हैं। ट्रांसफ़ॉर्मर का मुख्य इंजन सेल्फ-अटेंशन मैकेनिज़्म है, जो प्रत्येक टोकन जोड़ियों के बीच संबंध स्कोरों की गणना उसी समय करता है। गणितीय रूप से, सेल्फ-अटेंशन परमुटेशन इनवेरिएंट होता है। यदि आप इनपुट अनुक्रम को शफल कर दें, तो सेल्फ-अटेंशन तंत्र शब्द जोड़ियों के लिए वही अटेंशन स्कोर आउटपुट करेगा।
यदि क्रम संरक्षित रखने की कोई व्यवस्था न हो, तो मॉडल को क्रम-संबंधी सूचना का पूर्ण नुकसान होता है। शब्दार्थ एक बिना क्रम वाले शब्द-थैले में ढह जाता है। पोज़िशनल एनकोडिंग इनपुट वेक्टरों को इस प्रकार बदलकर इस परमुटेशन इनवेरिएंस समस्या को हल करती है कि सेल्फ-अटेंशन तंत्र पोज़िशन 1 के टोकन को पोज़िशन 10 के टोकन से अलग दर्ज करे।
Positional Encoding कैसे काम करती है?
पोज़िशनल एनकोडिंग, सेल्फ-अटेंशन लेयर्स तक पहुँचने से पहले इनपुट टोकन वेक्टरों में गणितीय संशोधन करके काम करती है। यह सुनिश्चित करता है कि मॉडल रिश्तों की गणना अर्थ और स्थिति—दोनों के आधार पर करे।
इसे सहजता से समझें। मानक टोकन एम्बेडिंग्स को किसी सम्मेलन में नाम-पट्ट (नेम टैग) की तरह समझिए। नेम टैग बताता है कि व्यक्ति कौन है, लेकिन वह सम्मेलन में कहाँ है, इससे उसकी पहचान या दूसरों से संबंध नहीं बदलते। पोज़िशनल एनकोडिंग उस नेम टैग पर सीट नंबर जोड़ने जैसी है। जब आप दोनों को मिलाते हैं, तो आपको पता होता है कि व्यक्ति कौन है और वह कहाँ बैठा है। इससे इस व्यक्ति की संभावित इंटरैक्शन्स के लिए संदर्भ जुड़ता है।
ट्रांसफ़ॉर्मर में, यह संयोजन आमतौर पर साधारण एलीमेंट-वाइज़ जोड़ से प्राप्त होता है। मॉडल किसी शब्द के शब्दार्थ एम्बेडिंग वेक्टर में समान आकार का पोज़िशनल एनकोडिंग वेक्टर जोड़ता है। परिणामी वेक्टर में एक सूक्ष्म मॉड्यूलेशन होता है जिसे अगली परतें स्थानिक समन्वयों के रूप में समझना सीखती हैं।
उदाहरण गणना
एक सरल उदाहरण देखें। मान लें हमारे पास 4-डायमेंशन वाली एक छोटी एम्बेडिंग स्पेस है। हम "DataCamp" शब्द को प्रोसेस करना चाहते हैं जो हमारे अनुक्रम में पोज़िशन 0 पर है।
- शब्दार्थ एम्बेडिंग: न्यूरल नेटवर्क "DataCamp" के लिए एम्बेडिंग निकालता है, जो कुछ इस तरह हो सकती है: [0.51, -0.22, 0.88, 0.14]।
- पोज़िशनल एनकोडिंग: पोज़िशन 0 के लिए पोज़िशनल फ़ॉर्मूला एक निर्देशांक वेक्टर जनरेट करता है। इस उदाहरण में, मान लें यह [0.00, 1.00, 0.00, 1.00] निकालता है।
- संयोजन: हम दोनों वेक्टरों को एलीमेंट-वाइज़ जोड़ देते हैं।
- अंतिम इनपुट: फॉरवर्ड पास को [0.51, 0.78, 0.88, 1.14] प्राप्त होता है।
भले ही वही टोकन "DataCamp" बाद में पोज़िशन 5 पर आए, पोज़िशनल एनकोडिंग वेक्टर अलग होगा। नतीजतन, अंतिम इनपुट वेक्टर सेल्फ-अटेंशन तंत्र के लिए पूरी तरह अलग दिखेगा।

साइनुसॉइडल पोज़िशनल एनकोडिंग
मूल "Attention Is All You Need" पेपर ने बुनियादी त्रिकोणमिति का उपयोग करके पोज़िशनल वेक्टर जनरेट करने की एक उत्कृष्ट विधि प्रस्तुत की। यह तरीका किसी भी मशीन लर्निंग वेट्स की आवश्यकता नहीं रखता और पूरी तरह स्थिर गणितीय फ़ंक्शंस पर आधारित है।
गणितीय आधार
साइनुसॉइडल पोज़िशनल एनकोडिंग स्थिति की जानकारी एनकोड करने के लिए अलग-अलग आवृत्तियों पर साइन और कोसाइन फ़ंक्शंस का उपयोग करती है। मूल सूत्र के अनुसार, किसी दिए गए पोज़िशन (pos) और एम्बेडिंग वेक्टर के भीतर किसी विशिष्ट डायमेंशन इंडेक्स (i) के लिए एनकोडिंग इस प्रकार गणना की जाती है:
-
सम (even) डायमेंशन्स (
2i) के लिए:PE(pos, 2i) = sin(pos / 10000^(2i/dmodel)) -
विषम (odd) डायमेंशन्स (
2i+1) के लिए:PE(pos, 2i+1) = cos(pos / 10000^(2i/dmodel))
इस सूत्र में, dmodel एम्बेडिंग वेक्टर का कुल आकार है। जैसे-जैसे आप वेक्टर के डायमेंशन्स में इंडेक्स 0 से dmodel तक बढ़ते हैं, साइनुसॉइडल फ़ंक्शंस की तरंगदैर्घ्य (wavelength) ज्यामितीय रूप से बढ़ती है।
फ़ायदे और गुण
आवृत्तियों की यह ज्यामितीय प्रगति कई विशिष्ट लाभ देती है।
- साइन और कोसाइन आउटपुट सख्ती से -1 और 1 के बीच सीमित होते हैं। यह सीमाबद्धता सुनिश्चित करती है कि पोज़िशनल एनकोडिंग्स संख्यात्मक रूप से शब्दार्थ एम्बेडिंग्स पर हावी न हों।
- ये फ़ंक्शंस आवर्तक (periodic) हैं। त्रिकोणमितीय जोड़ सूत्रों के कारण, एक रैखिक रूपांतरण किसी भविष्य की स्थिति (
pos + k) की पोज़िशनल एनकोडिंग को वर्तमान स्थिति (pos) के फ़ंक्शन के रूप में आसानी से व्यक्त कर सकता है। यह गुण मॉडल को स्वाभाविक रूप से रिलेटिव पोज़िशन एनकोडिंग सीखने देता है। - साइनुसॉइडल एनकोडिंग स्थिर पैरामीटर्स का उपयोग करती है। इसमें शून्य सीखने योग्य वेट्स लगते हैं, जिससे मेमोरी ओवरहेड बहुत कम होता है। चूँकि यह एक सतत गणितीय फ़ंक्शन पर काम करती है, मॉडल में सैद्धांतिक रूप से एक्सट्रैपोलेशन की क्षमता होती है, यानी यह प्रशिक्षण के दौरान देखी गई लंबाई से अधिक अनुक्रमों के लिए भी पोज़िशनल समन्वयों को मैप कर सकता है।
विज़ुअलाइज़ेशन
साइनुसॉइडल एनकोडिंग को समझने में हीटमैप के रूप में विज़ुअलाइज़ करना मददगार हो सकता है।

विज़ुअलाइज़ेशन की x-अक्ष एम्बेडिंग डायमेंशन का आकार दर्शाती है, जबकि y-अक्ष टोकन की स्थिति बताती है।
बाईं ओर की निचली डायमेंशन्स नकारात्मक और सकारात्मक मूल्यों के बीच तेज़ी से दोलन करती हैं, जिससे वे आस-पास की टोकन स्थितियों में फर्क कर पाती हैं। जैसे-जैसे डायमेंशन इंडेक्स बढ़ता है, तरंगदैर्घ्य लंबी हो जाती है और एनकोडिंग अधिक धीरे-धीरे बदलती है। ये डायमेंशन्स लंबी दूरी पर स्थितियों के अंतर को पकड़ती हैं।
यहाँ दर्शाई गई 50 स्थितियों के लिए, कई ऊँची डायमेंशन्स लगभग समान ऊर्ध्वाधर धारियों के रूप में दिखती हैं। ऐसा इसलिए होता है क्योंकि उनकी तरंगदैर्घ्य इतनी लंबी होती है कि इस छोटे अनुक्रम में साइन मान 0 के क़रीब और कोसाइन मान 1 के क़रीब रहते हैं, क्रमशः 0 और 1 नहीं। इसलिए, बारी-बारी से दिखने वाली धारियाँ आसन्न साइन–कोसाइन डायमेंशन्स को प्रतिबिंबित करती हैं, कोई साधारण बाइनरी एनकोडिंग नहीं। लंबे अनुक्रम पर, ये डायमेंशन्स भी स्पष्ट रूप से बदलना शुरू करेंगी।
सार यह है कि अलग-अलग आवृत्तियाँ मॉडल को कई पैमानों पर पोज़िशनल सूचना देती हैं: तेज़ी से बदलती डायमेंशन्स आस-पास के टोकन्स के बीच सूक्ष्म अंतर पकड़ती हैं, जबकि धीरे-धीरे बदलती डायमेंशन्स लंबे अनुक्रम में व्यापक स्थिति को ट्रैक करती हैं।
लर्न्ड पोज़िशनल एनकोडिंग
जहाँ स्थिर गणितीय फ़ॉर्मूले सुगठित हैं, वहीं आधुनिक डीप लर्निंग आर्किटेक्चर्स अक्सर डेटा पर निर्भर करते हैं ताकि इष्टतम अभिव्यक्तियाँ सीखी जा सकें। लर्न्ड पोज़िशनल एम्बेडिंग्स पूरे लेआउट की ज़िम्मेदारी को प्रशिक्षण चरण पर शिफ्ट कर देती हैं।
अवधारणा और इम्प्लीमेंटेशन
साइन और कोसाइन फ़ंक्शंस से पोज़िशनल मानों को हार्डकोड करने के बजाय, लर्न्ड पोज़िशनल एम्बेडिंग्स स्थिति समन्वयों को मानक सीखने योग्य पैरामीटर्स की तरह मानती हैं।
मॉडल एक पूरी तरह खाली एम्बेडिंग मैट्रिक्स इनिशियलाइज़ करता है, जहाँ हर पंक्ति किसी विशिष्ट अनुक्रम स्थिति के अनुरूप होती है। मानक बैकप्रोपेगेशन प्रशिक्षण लूप के दौरान, नेटवर्क कुल लॉस फ़ंक्शन को न्यूनतम करने के लिए इन पोज़िशनल वेट्स को शब्दार्थ टोकन एम्बेडिंग्स के साथ-साथ अपडेट करता है।
तुलनात्मक लाभ
लर्न्ड पोज़िशनल एम्बेडिंग्स का प्राथमिक लाभ अत्यधिक लचीलापन है। यह किसी विशेष डेटासेट के लिए सबसे उपयुक्त पोज़िशनल अभिव्यक्तियाँ सीखने की पूरी स्वतंत्रता रखती है। BERT और GPT-2 जैसी आर्किटेक्चर्स ने इसकी उच्च अनुकूलता और डाउनस्ट्रीम कार्यों पर मज़बूत प्रदर्शन के कारण इस दृष्टिकोण को लोकप्रिय बनाया।
सीमाएँ और चुनौतियाँ
लर्न्ड पोज़िशनल एम्बेडिंग्स की सबसे बड़ी सीमा अनुक्रम लंबाई पर सख्त सीमा है। यदि किसी मॉडल को अधिकतम 2,048 लर्न्ड पोज़िशन वेक्टरों के साथ प्रशिक्षित किया गया है, तो वह शारीरिक रूप से 2,049 टोकन्स वाले दस्तावेज़ को प्रोसेस नहीं कर सकता।
यह प्रतिबंध लंबाई-एक्सट्रैपोलेशन को गंभीर रूप से सीमित करता है और अक्सर कॉन्टेक्स्ट विंडो बढ़ाने के लिए महँगा पुनः-प्रशिक्षण आवश्यक करता है।
रिलेटिव पोज़िशनल एनकोडिंग
जैसे-जैसे मॉडल लंबे दस्तावेज़ों को संभालने के लिए विकसित हुए, इंजीनियरों ने महसूस किया कि किसी शब्द की निरपेक्ष स्थिति अक्सर उससे कम मायने रखती है जितना कि उसके अन्य शब्दों से सापेक्षिक दूरी का।
रिलेटिव पोज़िशन्स की ओर वैचारिक बदलाव
वाक्यांश "the rapid advancement of AI" पर विचार करें। "advancement" और "AI" के बीच का व्याकरणिक संबंध तब भी समान रहता है, चाहे यह वाक्यांश दस्तावेज़ की बिलकुल शुरुआत में आए या बिलकुल अंत में। रिलेटिव पोज़िशनल एनकोडिंग निरपेक्ष ग्रिड समन्वयों को छोड़ देती है। इसके बजाय, यह पूरी तरह से इंटरेक्टिंग टोकन्स के बीच की दूरी के ऑफ़सेट्स पर ध्यान केंद्रित करती है।
अटेंशन मैकेनिज़्म में इम्प्लीमेंटेशन
रिलेटिव एनकोडिंग्स को लागू करने के लिए, इंजीनियर इनपुट एम्बेडिंग्स को नेटवर्क की शुरुआत में बदलने के बजाय सीधे अटेंशन स्कोर की गणनाओं में संशोधन करते हैं।
जब "क्वेरी" मैट्रिक्स और "की" मैट्रिक्स के बीच अटेंशन स्कोर की गणना करते हैं, तो ऑपरेशन में सापेक्ष दूरी का प्रतिनिधित्व करने वाला एक अतिरिक्त लर्न्ड बायस टर्म शामिल किया जाता है। यह संशोधन टेक्स्ट के भीतर शिफ्ट-इनवेरिएंस की गारंटी देता है। यह मैट्रिक्स कैसे काम करते हैं, इस पर गहराई से जानने के लिए हमारी LLMs में अटेंशन मैकेनिज़्म गाइड पढ़ें।
व्यावहारिक समझौते
यह दृष्टिकोण अत्यंत सटीक संदर्भगत समझ देता है लेकिन गंभीर कम्प्यूटेशनल ओवरहेड भी लाता है। हर एक अटेंशन हेड के लिए अद्वितीय सापेक्ष दूरी मैट्रिक्स की गणना करना मेमोरी खपत को बहुत बढ़ा देता है। यह टेक्स्ट जनरेशन को तेज़ करने के लिए उपयोग किए जाने वाले आंतरिक कैशिंग तंत्रों को भी जटिल बनाता है।
निरपेक्ष बनाम सापेक्ष पोज़िशनल जानकारी
निरपेक्ष और सापेक्ष एनकोडिंग के बीच निर्णय विशेष कार्य पर निर्भर करता है।
- निरपेक्ष एनकोडिंग तब बेहतरीन काम करती है जब सटीक स्थानिक लेआउट कठोर हो और तेज़ निष्पादन प्राथमिकता हो।
- सापेक्ष एनकोडिंग लंबी-रूप प्राकृतिक भाषा प्रोसेसिंग के लिए कहीं बेहतर साबित होती है, जहाँ व्याकरणिक संरचना निरपेक्ष दस्तावेज़ समन्वयों की बजाय पूरी तरह स्थानीय संदर्भ दूरी पर निर्भर करती है।
Rotary Position Embedding (RoPE)
ट्रांसफ़ॉर्मर आर्किटेक्चर्स को बेहतर करने की खोज में, शोधकर्ताओं ने Rotary Position Embedding (RoPE) पेश किया। यह निरपेक्ष और सापेक्ष पोज़िशनल एनकोडिंग्स के श्रेष्ठ गुणों को जोड़ता है और तेज़ी से एक इंडस्ट्री मानक बन गया है।
नवोन्मेषी दृष्टिकोण
RoPE रोटेशनल ट्रांसफ़ॉर्मेशन्स का उपयोग करके निरपेक्ष प्लेसमेंट और सापेक्ष दूरी को एकीकृत करता है। एम्बेडिंग्स में वेक्टर जोड़ने या अटेंशन स्कोर में भारी बायस जोड़ने के बजाय, RoPE एम्बेडिंग वेक्टर को कॉम्प्लेक्स प्लेन में मैप करता है और उसे एक विशिष्ट कोण से घुमाता है। इस कोण का आकार अनुक्रम में टोकन की निरपेक्ष स्थिति से सख्ती से निर्धारित होता है।

गणितीय अंतर्दृष्टि
2D स्पेस में, रोटेशन को मानक 2D रोटेशन मैट्रिक्स का उपयोग करके लागू किया जाता है। उच्च डायमेंशन्स के लिए, RoPE एम्बेडिंग डायमेंशन्स को जोड़ियों में समूहित करता है और निरपेक्ष पोज़िशन इंडेक्स के आधार पर प्रत्येक खंड पर अद्वितीय 2D रोटेशन लागू करता है।
रोटेशन मैट्रिसेज़ के ज्यामितीय गुणों के कारण, रोटेटेड क्वेरी वेक्टर और रोटेटेड की वेक्टर का डॉट प्रोडक्ट अंततः केवल उनके बीच के सापेक्ष कोण पर निर्भर करता है। इस प्रकार, RoPE निरपेक्ष पोज़िशन मैपिंग का उपयोग करके स्वाभाविक रूप से टोकन्स के बीच सापेक्ष दूरी को एनकोड करता है।
RoPE बनाम साइनुसॉइडल एनकोडिंग
जैसा कि ऊपर के ग्राफ़िक से दिखता है, साइनुसॉइडल एनकोडिंग मूल वेक्टर की परिमाण और दिशा दोनों को बदलती है। RoPE इसके बजाय परिमाण जानकारी को संरक्षित रखता है और केवल दो अलग-अलग स्थितियों के बीच के कोण की आवश्यकता होती है ताकि उनकी सापेक्ष दूरी समझी जा सके।
Attention With Linear Biases (ALiBi)
जहाँ RoPE जटिल रोटेशनल गणित पर निर्भर करता है, वहीं Attention with Linear Biases (ALiBi) नामक एक और तकनीक पूरी तरह अलग तरीका अपनाती है।
सरलता और दक्षता
ALiBi प्रारंभिक टोकन एम्बेडिंग्स में पोज़िशनल जानकारी जोड़ने के विचार को पूरी तरह त्याग देता है। वर्ड एम्बेडिंग्स ट्रांसफ़ॉर्मर में पूरी तरह बिना छुए प्रवेश करते हैं।
इसके बजाय, ALiBi अटेंशन गणना के बिलकुल आखिरी चरण में हस्तक्षेप करता है। ठीक उस समय जब अटेंशन लॉजिट्स softmax फ़ंक्शन से गुजरने वाले होते हैं, ALiBi दो टोकन्स के बीच की दूरी के अनुपात में एक स्थिर पेनल्टी घटा देता है। जितने दूर दो शब्द होंगे, उनके अटेंशन स्कोर से घटाया जाने वाला पेनल्टी उतना बड़ा होगा।
प्रदर्शन
यह तरीका लागू करने में काफी सरल और बहुत कुशल है। इसका सबसे बड़ा लाभ लंबाई-एक्सट्रैपोलेशन कार्यों में अत्यधिक प्रभावशीलता है। 1,024 टोकन्स के अनुक्रमों पर ALiBi के साथ प्रशिक्षित मॉडल आराम से उससे दुगनी लंबाई के अनुक्रमों पर भी बिना क्रैश हुए सुसंगत टेक्स्ट जनरेट कर सकता है।
तेज़ टेक्स्ट जनरेशन और इन्फेरेंस कार्यों के लिए उपयोग की जाने वाली अन्य उन्नत तकनीकों का अन्वेषण करने में रुचि रखने वाले अभ्यासकर्ताओं के लिए, हमारी speculative decoding गाइड देखें।
कब कौन-सी पोज़िशनल एनकोडिंग उपयोग करें
जो आप बना रहे हैं उससे शुरू करें, फिर उपयुक्त विधि चुनें — कभी एक, कभी कई।
- आप एक सरल, शून्य-पैरामीटर बेसलाइन चाहते हैं: साइनुसॉइडल (स्थिर फ़ॉर्मूले, कुछ ट्रेन नहीं करना)।
- आपकी अनुक्रम लंबाई निश्चित है, और आप किसी विशेष डेटासेट पर अधिकतम प्रदर्शन चाहते हैं: लर्न्ड।
- आपको प्रशिक्षण से लंबी अनुक्रम लंबाई संभालनी है: एक्सट्रैपोलेट कर सकने वाली तकनीकों में RoPE सबसे मजबूत विकल्प है।
- व्याकरण टोकन्स के बीच दूरी पर निर्भर करता है, उनकी निरपेक्ष स्थिति पर नहीं: रिलेटिव या RoPE।
- आप एक आधुनिक जनरल-पर्पज़ LLM बना रहे हैं: RoPE।
- लंबाई-एक्सट्रैपोलेशन आपकी सर्वोच्च प्राथमिकता है, और आप सबसे सरल इम्प्लीमेंटेशन चाहते हैं: ALiBi।
- आप मेमोरी और कैशिंग ओवरहेड के बिना रिलेटिव-पोज़िशन के लाभ चाहते हैं: RoPE (रिलेटिव एनकोडिंग्स लाभ देती हैं, पर महँगी पड़ती हैं)।
व्यावहारिक इम्प्लीमेंटेशन और आर्किटेक्चर संबंधी विचार
सिद्धांत और व्यवहार के बीच पुल बनाने के लिए यह समझना ज़रूरी है कि पोज़िशनल एनकोडिंग्स को वास्तविक कोडबेस में कैसे एकीकृत करें और आर्किटेक्चरल सीमाओं का प्रबंधन कैसे करें।
ट्रांसफ़ॉर्मर्स में पोज़िशनल एनकोडिंग लागू करना
PyTorch जैसे फ़्रेमवर्क्स में ट्रांसफ़ॉर्मर में पोज़िशनल एनकोडिंग्स जोड़ने के लिए, डेवलपर्स आमतौर पर एक समर्पित मॉड्यूल बनाते हैं। यह मॉड्यूल एक बार एनकोडिंग मैट्रिक्स जनरेट करता है और उसे बफ़र के रूप में रजिस्टर करता है ताकि बैकप्रोपेगेशन के दौरान यह गलती से अपडेट न हो जाए।
नीचे साइनुसॉइडल एनकोडिंग्स को शामिल करते हुए फॉरवर्ड पास का एक मानक व्यावहारिक इम्प्लीमेंटेशन दिया गया है। एनकोडिंग्स को एक बार साइन और कोसाइन फ़ॉर्मूलों से गणना किया जाता है और प्रशिक्षण के दौरान कभी नहीं बदलते, इसीलिए इन्हें सीखने योग्य पैरामीटर्स की बजाय बफ़र में संग्रहीत किया जाता है (और इसी कारण वे प्रशिक्षण लागत में कुछ नहीं जोड़ते)।
import torch
import torch.nn as nn
import math
class PositionalEncoding(nn.Module):
def __init__(self, d_model: int, max_len: int = 5000):
super().__init__()
pe = torch.zeros(max_len, d_model)
position = torch.arange(0, max_len, dtype=torch.float).unsqueeze(1)
# Calculate the division term for frequencies
div_term = torch.exp(torch.arange(0, d_model, 2).float() * (-math.log(10000.0) / d_model))
# Apply sine to even indices and cosine to odd indices
pe[:, 0::2] = torch.sin(position * div_term)
pe[:, 1::2] = torch.cos(position * div_term)
pe = pe.unsqueeze(0)
# Register as a buffer
self.register_buffer('pe', pe)
def forward(self, x: torch.Tensor) -> torch.Tensor:
# Add positional encoding directly to the input embeddings
seq_len = x.size(1)
x = x + self.pe[:, :seq_len, :]
return x
__init__ में, मॉड्यूल max_len स्थितियों तक एनकोडिंग टेबल को पहले से गणना कर लेता है: position इंडेक्सों का एक कॉलम है (0, 1, 2, …) और div_term आवृत्तियाँ हैं, जिनका परिणाम 1 / 10000^(2i/d_model) होता है, इसलिए निचली डायमेंशन्स को तेज़ तरंगें और ऊँची डायमेंशन्स को धीमी तरंगें मिलती हैं।
sin को सम डायमेंशन्स (0::2) पर और cos को विषम (1::2) पर लागू करना टेबल भर देता है। फिर forward रनटाइम का एकमात्र काम करता है: यह इनपुट की अनुक्रम लंबाई तक टेबल को स्लाइस करता है और उसे टोकन एम्बेडिंग्स में एलीमेंट-वाइज़ जोड़ देता है। ध्यान दें कि मॉड्यूल बैच-फर्स्ट आकार [batch, seq_len, d_model] मानकर चलता है, इसलिए forward डायमेंशन 1 पर स्लाइस करता है।
पोज़िशन बायस और "लॉस्ट-इन-द-मिडल" परिघटना
लंबी अनुक्रम लंबाइयों को मैप करने का एक अनपेक्षित परिणाम पोज़िशन बायस है। यह अक्सर "लॉस्ट-इन-द-मिडल" परिघटना के रूप में प्रकट होता है। विशाल दस्तावेज़ों को प्रोसेस करते समय, भाषा मॉडल किसी प्रॉम्प्ट की बिलकुल शुरुआत या बिलकुल अंत की बातों को बीच की तुलना में कहीं बेहतर याद रखते हैं। यह परिचित लग सकता है, क्योंकि मनुष्य की स्मृति भी इसी तरह काम करती है (कम से कम मेरी; मुझे मत कहिए कि मैं अकेला हूँ जिसे किताबों की शुरुआत और अंत बीच के हिस्सों से ज़्यादा याद रहता है!).
सिद्धांत यह है कि ऐसा इसलिए होता है क्योंकि अटेंशन तंत्र अप्रासंगिक संदर्भ से अभिभूत हो जाता है और स्वाभाविक रूप से शुरुआती टोकन्स (जो निर्देश सेट करते हैं) और नवीनतम टोकन्स (जो स्मृति में सबसे ताज़ा होते हैं) पर अँकुरित (anchor) हो जाता है। इस बायस को कम करने के लिए, डेवलपर्स उन्नत चंकिंग रणनीतियों और सेमांटिक रिट्रीवल प्रणालियों का सहारा लेते हैं।
विशेषीकृत डोमेन्स के लिए पोज़िशनल एनकोडिंग
ट्रांसफ़ॉर्मर्स अब केवल टेक्स्ट तक सीमित नहीं हैं। पोज़िशनल एनकोडिंग की अवधारणा कई डोमेन्स में विभिन्न डेटा प्रकारों को संभालने के लिए तेज़ी से अनुकूल होती है।
विज़न ट्रांसफ़ॉर्मर्स के लिए, छवियों को पैचेस की ग्रिड्स में काटा जाता है। एक सरल 1D अनुक्रम एनकोडिंग 2D स्पेस में स्थानिक निकटता को पकड़ने में विफल रहती है। इसलिए, विज़न मॉडल अक्सर 2D लर्न्ड पोज़िशनल एम्बेडिंग्स का उपयोग करते हैं जो इमेज पैच के X और Y—दोनों समन्वयों को ध्यान में रखते हैं।
निरंतर समय-श्रृंखला मॉडलों के लिए भी इसी तरह के अनुकूलन मौजूद हैं, जहाँ विशेषीकृत एनकोडिंग्स समयगत दूरी, मौसमीपन और टाइमस्टैम्प्स को ट्रैक करती हैं।
पोज़िशनल एनकोडिंग पर आगे का शोध
जैसे-जैसे बड़े कॉन्टेक्स्ट विंडोज़ की होड़ तेज़ होती जा रही है, मॉडल्स की पोज़िशन समझने की विधि को परिष्कृत करना मशीन लर्निंग शोध का अत्यधिक सक्रिय और महत्वपूर्ण क्षेत्र बना हुआ है।
लंबाई एक्सट्रैपोलेशन और कॉन्टेक्स्ट विस्तार
आज के उपयोगकर्ता एक साथ पूरे कोडबेस या उपन्यास श्रृंखलाओं को प्रोसेस करने के लिए विशाल कॉन्टेक्स्ट विंडोज़ की मांग करते हैं। चूँकि बड़े अनुक्रमों पर खरोंच से मॉडल ट्रेन करना बहुत महँगा है, शोधकर्ता कॉन्टेक्स्ट विस्तार तकनीकों पर निर्भर करते हैं।
पोज़िशनल इंटरपोलेशन जैसी विधियाँ बहुत लंबे अनुक्रम के पोज़िशनल समन्वयों को मूल प्रशिक्षण लंबाई की सीमाओं में गणितीय रूप से संपीड़ित करती हैं। YaRN जैसी अनुकूली विधियाँ RoPE पैरामीटर्स की रोटेशनल फ़्रीक्वेंसी को गतिशील रूप से समायोजित करती हैं ताकि मॉडल की दूरी की समझ को सहजता से फैलाया जा सके।
स्पष्ट पोज़िशनल एनकोडिंग के बिना ट्रांसफ़ॉर्मर्स
आश्चर्यजनक रूप से, कुछ शोध सुझाते हैं कि स्पष्ट पोज़िशनल एनकोडिंग हर बार सख्ती से आवश्यक नहीं हो सकती। डिकोडर-ओनली कॉज़ल लैंग्वेज मॉडलों में, मानक कॉज़ल मास्किंग (एक तंत्र जो टोकन्स को केवल पीछे देखने के लिए बाध्य करती है) अपने आप में समय-क्रम की जानकारी लीक करती है।
इसका अर्थ है कि केवल कॉज़ल मास्क से, रणनीतिक टेम्परेचर ट्यूनिंग और आर्किटेक्चरल समायोजनों के माध्यम से, पोज़िशनल नियम अप्रत्यक्ष रूप से भी सीखे जा सकते हैं।
चुनौतियाँ और भविष्य की दिशाएँ
अंतिम सीमा एक स्थायी ट्रेड-ऑफ़ को रेखांकित करती है: सख्त अनुकूलन (किसी विशिष्ट अनुक्रम लंबाई के लिए प्रदर्शन का अनुकूलन) बनाम त्रुटिरहित एक्सट्रैपोलेशन (मॉडल को अनंत रूप से सामान्यीकृत करने देना)।
उभरते हुए शोध क्षेत्र बहु-माध्यम (multimodal) एनकोडिंग पर गहन रूप से केंद्रित हैं। टेक्स्ट और ऑडियो स्ट्रीम्स के साथ 3D वीडियो समन्वयों को मिलाने वाली सार्वभौमिक पोज़िशनल अभिव्यक्तियाँ बनाना अगली पीढ़ी के आर्टिफ़िशियल इंटेलिजेंस मॉडलों का एक लक्ष्य है।
निष्कर्ष
पोज़िशनल एनकोडिंग समानांतर प्रोसेसिंग और अनुक्रमिक समझ के बीच की खाई को पाटती है और हमें ऐसे मॉडल बनाने देती है जो क्रमबद्ध रूप से बड़े पैमाने पर डेटा प्रोसेस कर सकें। हमने देखा कि लर्न्ड और रिलेटिव एम्बेडिंग्स अत्यधिक लचीलापन देती हैं, और RoPE तथा ALiBi जैसी आधुनिक नवाचार गणितीय सुघड़ता और कम्प्यूटेशनल दक्षता—दोनों का अनुकूलन करते हैं।
जैसे-जैसे कॉन्टेक्स्ट विंडोज़ कुछ हज़ार टोकन्स से लाखों तक फैलती हैं, न्यूरल नेटवर्क को यह सरल गणितीय जानकारी देना कि चीज़ें ठीक कहाँ स्थित हैं—मॉडल डिज़ाइन के केंद्र में बना रहेगा।
यदि आप और गहराई में जाना चाहते हैं और हाथों-हाथ अनुभव पाना चाहते हैं, तो हमारे Developing Large Language Models स्किल ट्रैक में नामांकन करने की सलाह देता हूँ।
पोज़िशनल एनकोडिंग FAQs
मशीन लर्निंग में पोज़िशनल एनकोडिंग क्या है?
पोज़िशनल एनकोडिंग एक गणितीय तकनीक है जिसका उपयोग न्यूरल नेटवर्क्स को किसी अनुक्रम में डेटा के क्रम के बारे में जानकारी देने के लिए किया जाता है।
ट्रांसफ़ॉर्मर मॉडलों को पोज़िशनल एनकोडिंग की आवश्यकता क्यों होती है?
पुराने Recurrent Neural Networks जो चरण-दर-चरण डेटा प्रोसेस करते हैं, उनसे अलग, ट्रांसफ़ॉर्मर्स सेल्फ-अटेंशन मैकेनिज़्म का उपयोग करके सारा डेटा एक साथ प्रोसेस करते हैं। चूँकि सेल्फ-अटेंशन स्वभाव से परमुटेशन-इनवेरिएंट है, यह इनपुट को बिना क्रम वाले शब्द-थैले की तरह मानता है। पोज़िशनल एनकोडिंग इसे हल करती है, क्योंकि वह मॉडल के प्रोसेस करने से पहले ही डेटा में अनुक्रमिक समन्वय इंजेक्ट कर देती है।
निरपेक्ष और सापेक्ष पोज़िशनल एनकोडिंग में क्या अंतर है?
निरपेक्ष पोज़िशनल एनकोडिंग किसी टोकन को अनुक्रम में उसके सटीक इंडेक्स के आधार पर एक स्थिर समन्वय असाइन करती है। सापेक्ष पोज़िशनल एनकोडिंग सटीक ग्रिड लोकेशन को नज़रअंदाज़ करती है और इसके बजाय दो इंटरेक्टिंग टोकन्स के बीच की दूरी की गणना करती है, केवल उनके संदर्भगत ऑफ़सेट पर ध्यान केंद्रित करती है।
Rotary Position Embedding (RoPE) क्या है?
RoPE एक व्यापक रूप से उपयोग की जाने वाली एनकोडिंग विधि है जो टोकन एम्बेडिंग्स को कॉम्प्लेक्स प्लेन पर मैप करती है और उन्हें उनकी निरपेक्ष स्थिति द्वारा निर्धारित कोण से घुमाती है। जब मॉडल अटेंशन स्कोर की गणना करता है, तो दो रोटेटेड वेक्टरों के बीच संबंध पूरी तरह उनकी सापेक्ष दूरी पर निर्भर करता है।
लर्न्ड पोज़िशनल एम्बेडिंग्स क्या हैं?
साइन और कोसाइन जैसे स्थिर गणितीय फ़ॉर्मूलों का उपयोग करने के बजाय, लर्न्ड पोज़िशनल एम्बेडिंग्स स्थानिक समन्वयों को ट्रेन करने योग्य वेट्स के रूप में मानती हैं। मॉडल पोज़िशन्स की एक खाली मैट्रिक्स इनिशियलाइज़ करता है और किसी विशिष्ट डेटासेट के लिए इष्टतम स्थानिक अभिव्यक्तियाँ सीखने हेतु प्रशिक्षण के दौरान इन समन्वयों को अपडेट करता है।