मुख्य सामग्री पर जाएँ

CooLWJ पर खोजें

选择搜索范围,输入关键词后按回车。

भाषा

वेक्टर डेटाबेस क्या है?

एक、बड़े मॉडल के व्यावसायिक उपयोग की पूरी प्रक्रिया

1.png

  1. AI क्लस्टर निर्माण:कंप्यूटिंग, संचार और भंडारण अवसंरचना का निर्माण

  2. बड़े मॉडलों का डेटा:बड़े मॉडलों के डेटासेट, डेटा प्रसंस्करण, वेक्टर डेटाबेस

  3. बड़े मॉडलों के एल्गोरिदम:पारंपरिक NLP से पूर्वप्रशिक्षित बड़े LLM मॉडलों तक

  4. बड़े मॉडलों का प्रशिक्षण:बड़े मॉडलों के प्रशिक्षण की सामान्य एल्गोरिदम विधियाँ और स्थिरता विश्लेषण

  5. वितरित समानांतरता:मॉडल समानांतरता, डेटा समानांतरता, ऑप्टिमाइज़र समानांतरता आदि

  6. बड़े मॉडलों की फ़ाइन-ट्यूनिंग:सभी पैरामीटरों की फ़ाइन-ट्यूनिंग, कम पैरामीटरों की फ़ाइन-ट्यूनिंग, निर्देश आधारित फ़ाइन-ट्यूनिंग एल्गोरिदम

  7. बड़े मॉडलों में अनुमान: क्वांटाइज़ेशन संपीड़न, लंबी अनुक्रमों तक विस्तारित अनुमान, कैश विधियाँ

  8. बड़े मॉडलों का मूल्यांकन:NLP के अनुवर्ती कार्य, CV के अनुवर्ती कार्य, मूल्यांकन योजना

  9. बड़े मॉडल के बुद्धिमान एजेंट:RLHF प्रक्रिया、एजेंट、आजीवन अधिगम

दो、वेक्टर

कुत्तों से परिचित लोग उनकी नस्लों को बहुत जल्दी पहचान सकते हैं। हम ऐसा इसलिए कर पाते हैं क्योंकि उनकी विशेषताओं को अलग-अलग दृष्टियों से देखते हैं, जैसे उनके शरीर का आकार।
2.pngयदि हम इनके आकार की विशेषता दिखाने के लिए एक निर्देशांक अक्ष का उपयोग करें,तो ये कुत्ते अलग-अलग निर्देशांकों पर स्थित होंगे। लेकिन केवल शारीरिक आकार की एक विशेषता पर्याप्त नहीं है,कुछ का आकार एक-दूसरे से बहुत मिलता-जुलता है।
3.pngहम इसकी अन्य विशेषताएँ देखते हैं, जैसे बालों की लंबाई, और एक और निर्देशांक अक्ष बनाते हैं। इस तरह समान आकार वाले कुत्तों में से कुछ को अलग पहचाना जा सकता है
4.pngलेकिन कुछ हिस्से अभी भी एक-दूसरे पर चढ़े हुए हैं, इसलिए और पहलुओं से देखना जारी रखना होगा, जैसे नाक की लंबाई।
5.pngहम और भी आयाम जोड़ सकते हैं, जैसे आँखों का आकार। हम चार आयामी स्थान में चित्र नहीं बना सकते, लेकिन निर्देशांक बिंदुओं के संख्यात्मक मानों में इसे लागू करना बहुत आसान है, बस आगे मान जोड़ते जाएँ।
6.pngहम किसी कुत्ते की विशेषताओं को और भी दृष्टिकोणों, यानी आयामों से देख सकते हैं, जैसे पैरों की मोटाई, बालों का घुँघरालापन, यहाँ तक कि कुछ अमूर्त पहलुओं से भी, जैसे आज्ञाकारिता, काम में उपयोगिता आदि। हम जितने अधिक आयामों का उपयोग करेंगे, कुत्तों के बीच अंतर पहचानने की हमारी क्षमता उतनी ही बढ़ेगी। साथ ही निर्देशांक बिंदुओं के स्थान के आयाम भी उतने ही अधिक होंगे।
7.pngकेवल कुत्तों को ही नहीं, वास्तव में लगभग किसी भी चीज़ को इस तरह निरूपित किया जा सकता है। वह कोई मूर्त वस्तु हो सकती है, या खुशी, क्रोध, दुख, आनंद, मिलन और बिछोह जैसी अमूर्त भावनाएँ भी। अलग-अलग चीज़ों के अलग-अलग विशेषता आयामों में अलग-अलग स्वरूप, या कहें अलग-अलग मान होते हैं, इसलिए अंततः प्रत्येक चीज़ उच्च आयामी विशेषता स्थान में एक निर्देशांक बिंदु के अनुरूप होगी। बस इन व्यापक दायरों में चीज़ों के बीच अच्छी तरह अंतर करने के लिए हमें संभवतः और अधिक विशेषता आयामों की आवश्यकता होगी। शायद सैकड़ों या हज़ारों, और संभवतः दस हज़ार से भी अधिक।
8.pngलेकिन चूँकि हम तीन से अधिक आयामों का चित्र नहीं बना सकते, इसलिए दो आयामी निर्देशांकों से समझाएँगे।
9.pngहम पाएँगे कि अवधारणात्मक रूप से अधिक निकट बिंदु, स्थान में भी अधिक पास-पास समूहित होंगे, जबकि अवधारणात्मक रूप से बहुत भिन्न बिंदुओं के बीच की दूरी बहुत अधिक होगी। एक कदम आगे बढ़ें, तो यदि निर्देशांक के मूलबिंदु को आरंभ और इन बिंदुओं को अंत माना जाए। यही दिशा और परिमाण वाले सदिश हैं।

यदि चित्रों को वेक्टर में बदल दिया जाए, तो मिलते-जुलते वेक्टर खोजकर चित्र से चित्र खोजने की सुविधा बनाई जा सकती है
यदि वीडियो को वेक्टरों में निरूपित किया जाए, तो समान वेक्टर खोजकर मिलते-जुलते वीडियो की अनुशंसा की जा सकती है
यदि उत्पादों को सदिशों में बदला जाए, तो समान सदिशों की खोज करके उपयोगकर्ता के वर्तमान में देखे जा रहे उत्पाद से संबंधित सुझाव दिए जा सकते हैं
यदि पाठ को वेक्टर में बदल दिया जाए, तो एक बुद्धिमान प्रश्नोत्तर प्रणाली में उपयोगकर्ता के वर्तमान प्रश्न के आधार पर संदर्भ के लिए ऐसे मिलते-जुलते प्रश्न खोजे जा सकते हैं, जिन्हें पहले ही हल किया जा चुका है

तीन、वेक्टर डेटाबेस

AI के आगमन के साथ, वेक्टर डेटा का एक महत्वपूर्ण रूप बन जाएँगे। पारंपरिक डेटाबेस वेक्टर डेटा के भंडारण और खोज के लिए उपयुक्त नहीं हैं, इसलिए इन समस्याओं को संभालने के लिए विशेष रूप से तैयार डेटाबेस की आवश्यकता है। यह भविष्य में डेटा स्तर का बुनियादी ढाँचा बन सकता है। डेटा तालिकाएँ संग्रहित करने और फिर क्वेरी कथनों से सटीक खोज करने वाले पारंपरिक डेटाबेस से अलग, वेक्टर डेटाबेस वेक्टर डेटा संग्रहित करता है। इसकी क्वेरी प्रक्रिया डेटाबेस से क्वेरी वेक्टर के सबसे समान कुछ वेक्टर खोजती है, इसलिए उसमें कुछ हद तक अस्पष्टता होती है।

त्रिविमीय स्थान में वेक्टर डेटा बिंदुओं का आरेख

1、वेक्टर क्वेरी

वेक्टर डेटा का एक प्रमुख उपयोग परिदृश्य है:एक क्वेरी वेक्टर दिए जाने पर, बहुत सारे वेक्टरों में से उससे सबसे अधिक मिलते-जुलते कुछ वेक्टर खोजना। यही तथाकथित निकटतम पड़ोसी समस्या है, और इसे हल करने वाले एल्गोरिदम को निकटतम पड़ोसी एल्गोरिदम कहा जाता है, सबसे सहज सूझने वाली विधियों में से एक शायद ब्रूट-फोर्स खोज है, जिसमें सभी वेक्टरों की क्वेरी वेक्टर से समानता की बारी-बारी तुलना करके सबसे अधिक समानता वाले कुछ वेक्टर चुने जाते हैं, और दो वेक्टरों की समानता की तुलना करने के कई विशिष्ट तरीके हैं,यूक्लिडीय दूरी और कोसाइन समानता।
10.png

  • यूक्लिडीय दूरी दो वेक्टरों के बीच की सीधी दूरी की गणना को कहते हैं। द्विआयामी निर्देशांक प्रणाली में मान लें कि दो वेक्टर p और q हैं, तो यूक्लिडीय दूरी p से q को जोड़ने वाली सीधी रेखा की दूरी है। त्रिआयामी निर्देशांक प्रणाली में हर वेक्टर में x、y、z तीन निर्देशांक बिंदु होते हैं, और सूत्र से किन्हीं दो बिंदुओं के बीच की दूरी निकाली जाती है। वहीं n आयामी निर्देशांक प्रणाली में 100 निर्देशांक बिंदु होते हैं, और सूत्र से किन्हीं दो बिंदुओं के बीच की दूरी निकाली जाती है। दूरी जितनी कम होगी, कुछ आयामों में उन दोनों वेक्टरों की समानता उतनी ही अधिक होगी
    11.png

  • एक अन्य तरीका कोसाइन समानता है। दूरी के अलावा, हम सदिशों के बीच के कोण से भी उनके संबंध का वर्णन कर सकते हैं। द्विविमीय निर्देशांक तंत्र में, कोण जितना छोटा होगा, दोनों सदिशों के बीच संबंध उतना ही अधिक होगा। हम किसी भी दो सदिशों की कोसाइन समानता की गणना सूत्र से कर सकते हैं। त्रिविमीय निर्देशांक तंत्र में भी इसी सिद्धांत से किन्हीं दो सदिशों के बीच का कोण और कोसाइन समानता निकाली जा सकती है।
    12.png
    और यदि वेक्टर डेटा बहुत अधिक हो,तो तकनीकी जटिलता से रहित इस बलपूर्वक खोज विधि में खोज का समय अत्यधिक बढ़ जाएगा। लेकिन इसकी खोज गुणवत्ता वास्तव में पूर्ण है,क्योंकि यह सचमुच हर वेक्टर की तुलना करती है,इसलिए यदि डेटाबेस में डेटा कम हो और सभी वेक्टरों पर जाने का समय स्वीकार्य हो,तो यह भी एक अच्छा तरीका है,लेकिन वास्तविक उपयोग में डेटा की मात्रा अक्सर इतनी कम नहीं होती,इसलिए अनुकूलन के कुछ तरीके खोजना आवश्यक है।

2、वेक्टर सूचकांक

ऊपर वेक्टर डेटाबेस में खोज का सिद्धांत समझाया गया था,लेकिन वास्तव में वेक्टर डेटाबेस में समानता का मिलान करते समय केवल सूत्र के आधार पर गणना नहीं की जा सकती,क्योंकि इनमें आमतौर पर डेटा की मात्रा बहुत बड़ी और आयामों की संख्या भी बहुत अधिक होती है। यदि 1000 आयामों वाले दो वेक्टरों की समानता सूत्र से निकाली जाए,तो गणना का काम बहुत होता है और CPU पर गहन गणनात्मक भार पड़ता है। यदि दस करोड़ वेक्टर हों और हर एक की गणना करनी पड़े,तो समय और गणना की लागत और भी अधिक होगी। इसलिए यहाँ हम वेक्टर इंडेक्स नामक अवधारणा प्रस्तुत करते हैं।
वेक्टर इंडेक्स रिलेशनल डेटाबेस के इंडेक्स जैसा होता है, लेकिन एक अंतर है। वेक्टर डेटाबेस में वेक्टर इंडेक्स से मिलने वाले परिणाम अनुमानित होते हैं, 100% सटीक नहीं।वेक्टर इंडेक्स समानता की मात्रा के अधिक या कम होने को दर्शाता है। इसलिए हम इसे अनुमानित निकटतम पड़ोसी खोज(ANS)कहते हैं। वेक्टर इंडेक्स न होने पर किसी वेक्टर की समानता खोजना, रिलेशनल डेटाबेस में पूरी तालिका को स्कैन करने जैसा है। लेकिन पूरी तालिका स्कैन करने के ऊपर गणना की एक अतिरिक्त परत भी जुड़ती है, इसलिए इसकी लागत रिलेशनल डेटाबेस की पूरी तालिका स्कैन करने से कहीं अधिक होती है।
कार्यान्वयन के आधार पर, ANNS वेक्टर इंडेक्स चार प्रमुख श्रेणियों में बाँटे जा सकते हैं:

  • वृक्ष आधारित सूचकांक

  • ग्राफ़ पर आधारित सूचकांक

  • हैश आधारित इंडेक्स

  • क्वांटाइज़ेशन आधारित सूचकांक

1、वृक्ष आधारित विधियाँ

वृक्ष आधारित विधियों का मुख्य विचार डेटा को विभाजित करना है, कुछ हद तक बाइनरी सर्च ट्री की तरह। इससे खोज के दौरान खोज क्षेत्र घटता है और तेज़ पुनर्प्राप्ति संभव होती है। लेकिन यह तरीका उच्च आयामी स्थान के लिए उपयुक्त नहीं है। प्रमुख वृक्ष आधारित विधियाँ KDTree(K-Dimensional Tree)और Annoy(Approximate Nearest Neighbors Oh Yeah)हैं।
1.1 KDTree
KDTree का निर्माण भी पुनरावर्ती विभाजन के विचार पर आधारित है। पहले सबसे अधिक विचरण वाला आयाम चुना जाता है और उस आयाम के सभी डेटा के माध्यिका मान को विभाजन बिंदु बनाया जाता है। अतिआयताकार क्षेत्र को दो उपक्षेत्रों में बाँटा जाता है; माध्यिका से छोटे मान बाईं ओर और माध्यिका से छोटे मान दाईं ओर रखे जाते हैं। फिर बाएँ और दाएँ उपवृक्षों का पुनरावर्ती निर्माण तब तक किया जाता है जब तक सारा डेटा विभाजित न हो जाए।
13.png

KDTree पर आधारित खोज प्रक्रिया:
1、क्वेरी डेटा p और वर्तमान नोड के विभाजन आयाम d के लिए, आयाम d में डेटा p के निर्देशांक मान की नोड के मान से तुलना करें; बड़ा हो तो बाएँ उपनोड पर जाएँ, छोटा हो तो दाएँ उपनोड पर जाएँ;
2、पर्ण नोड तक पहुँचने तक भ्रमण करें, उसे देखा गया चिह्नित करें और पर्ण नोड तक की दूरी को निकटतम दूरी मानें;
3、लीफ़ नोड पर बैकट्रैकिंग करें, हर बार पीछे लौटते समय p और पैरेंट नोड की अब तक न देखी गई शाखा के बीच की दूरी जाँचें।
a)यदि उस शाखा नोड और p के बीच की दूरी वर्तमान निकटतम दूरी से अधिक हो, तो मूल नोड तक ऊपर की ओर लौटते रहें;
b)यदि उस शाखा नोड और p के बीच की दूरी वर्तमान निकटतम दूरी से कम है, तो उस शाखा का उपयोग करें, चरण 1 और चरण 2 का अनुसरण करते हुए पत्ती नोड तक जाएँ, और पत्ती तथा Q के बीच की निकटतम दूरी अपडेट करें।
14.png

1.2Annoy
Annoy समतलों की सहायता से स्थान को विभाजित करता है,इसके लिए KMeans(k=2) की मदद से दो क्लस्टर केंद्र खोजे जाते हैं,इन केंद्रों को जोड़ने वाली रेखा पर लंबवत समतल ही विभाजन का समतल होता है,यह प्रक्रिया बार-बार दोहराई जाती है,जब तक हर उपस्थान में डेटा की संख्या निर्धारित सीमा से कम न हो जाए।
 15.png16.png17.png

18.png

इस स्थान में किसी भी बिंदु को खोजने के लिए मूल से द्विआधारी वृक्ष का भ्रमण शुरू किया जा सकता है। प्रत्येक आंतरिक नोड(ऊपर के वृक्ष के छोटे वर्ग)एक अधिसमतल परिभाषित करता है, इसलिए उसी के आधार पर तय किया जा सकता है कि आगे बाएँ चाइल्ड नोड पर जाना है या दाएँ पर। किसी बिंदु की खोज लघुगणकीय समय में पूरी हो सकती है, अर्थात वृक्ष की ऊँचाई के बराबर।

लाभ:कम आयाम वाले डेटा में सटीकता अपेक्षाकृत अधिक है नुकसान:डेटा की जटिलता को पूरी तरह पकड़ नहीं पाता, अधिक आयाम वाले डेटा में सटीकता कम है

2、ग्राफ़ आधारित विधियाँ

ग्राफ़-आधारित विधियाँ मुख्य रूप से ग्राफ़ डेटा संरचना का उपयोग करती हैं और पड़ोसी नोडों की आपसी संबद्धता से तेज़ मार्ग बनाती हैं। इससे समस्या ग्राफ़ के परिभ्रमण में बदल जाती है, खोज का दायरा तेज़ी से सीमित होता है और पुनर्प्राप्ति की गति बढ़ती है। लेकिन ग्राफ़ डेटा संरचना काफी जटिल होती है। अधिकतम पुनर्प्राप्ति गति पाने के लिए आम तौर पर पूरा ग्राफ़ मेमोरी में लोड किया जाता है, जिससे मेमोरी की खपत बहुत अधिक होती है, लेकिन पुनर्प्राप्ति तेज़ होती है और रिकॉल दर ऊँची रहती है।

फ़िलहाल सामान्य रूप से इस्तेमाल होने वाला ग्राफ़ खोज एल्गोरिदम मुख्यतः HNSW(Hierarchical Navigating Small World)है, जबकि NSW(Navigating Small World)इसका पूर्ववर्ती एल्गोरिदम है, जिसे समझना भी ज़रूरी है।
2.1 NSW
NSW साधारण ग्राफ़ निर्माण के आधार पर निम्न नियम जोड़ता है:हर नोड के पड़ोसी नोड होने चाहिए;पड़ोसी नोडों के बीच कनेक्शन होना चाहिए;निकटवर्ती मित्र नोडों की संख्या एक हाइपरपैरामीटर है, जिसे उपयोगकर्ता निर्दिष्ट करता है। इसका मुख्य उपयोग साधारण ग्राफ़ निर्माण विधि की कुछ सीमाएँ दूर करना है।
19.pngNSW ग्राफ़ निर्माण प्रक्रिया:
नया नोड डालते समय पहले उसके सबसे निकट के m नोड खोजें और नए नोड को इन m नोडों से जोड़ें।
NSW खोज प्रक्रिया:
क्वेरी डेटा q के लिए, ग्राफ़ में यादृच्छिक रूप से एक entry point नोड और उसके पड़ोसी नोड खोजें, entry point तथा पड़ोसी नोडों की p से दूरी की गणना करें; यदि किसी पड़ोसी की p से दूरी, p और entry point की दूरी से कम हो, तो न्यूनतम दूरी वाला बिंदु निर्धारित करें, जब तक अंततः ऐसा point न मिल जाए जिसके सभी पड़ोसियों की query से दूरी इस point की दूरी से अधिक हो।
जैसा ऊपर चित्र में दिखाया गया है, बने हुए निकटतम पड़ोसी ग्राफ़ में हरे query नोड के सबसे निकट नोड खोजने के लिए, यादृच्छिक रूप से चुने गए प्रवेश बिंदुओं से शुरुआत की जाती है, पहले लाल लंबे लिंक से तेज़ी से query के आसपास के नोड तक पहुँचा जाता है, फिर काले छोटे लिंक से शर्त पूरी करने वाला बिंदु खोजा जाता है।
NSW भी एक सन्निकट गणना है;यह वास्तविक निकटतम पड़ोसी मिलने की गारंटी नहीं देता। पहले जोड़े गए बिंदुओं में अतिरिक्त किनारे अधिक होते हैं, इसलिए उनके तेज़ मार्ग बनाने की संभावना अधिक होती है। बाद में जोड़े जाने वाले बिंदुओं के पास ऐसे तेज़ मार्ग होने की संभावना क्रमशः कम होती जाती है।
2.1 HNSW
HNSW, NSW पर आधारित एक उन्नत तरीका है, जो मुख्यतः स्किप लिस्ट की अवधारणा का उपयोग करके परतों के रूप में लागू होता है;हर परत स्वयं एक NSW होती है, इसलिए इसे परतदार NSW विधि भी कह सकते हैं। ऊपरी परतों में नोड कम और बिखरे होते हैं, तथा उनके बीच की दूरी अधिक होती है;नीचे जाने पर नोड और उनके बीच के कनेक्शन बढ़ते हैं, और औसत दूरी घटती है।
20.png

लाभ:उच्च-आयामी डेटा में समान निकटतम पड़ोसी ढूँढ़ सकता है,जिससे खोज का प्रदर्शन बेहतर होता है,हानि:ग्राफ़ बनाने की प्रक्रिया जटिल है,जिससे मेमोरी की दक्षता प्रभावित होती है।

3、हैश पर आधारित विधियाँ

हैश पर आधारित विधियाँ मुख्यतः हैश फ़ंक्शन की इस विशेषता का उपयोग करती हैं कि अधिक समान डेटा के हैश मान भी समान होते हैं। हैश फ़ंक्शन उच्च आयामी डेटा को निम्न आयामी डेटा में बदल सकता है, जिससे निर्माण की दक्षता बहुत बढ़ जाती है। लेकिन हैश फ़ंक्शन की एक अन्य सीमा भी है:समान हैश मान वाले डेटा आवश्यक रूप से समान नहीं होते, जिसके कारण इस विधि की रिकॉल दर बहुत अधिक नहीं होती। हैश पर आधारित प्रमुख विधि LSH(Locality-Sensitive Hashing,स्थानीयता संवेदनशील हैशिंग)है। मान लें कि दो सदिश समान हैं, तो उनके हैश मान भी समान होंगे। हैश फ़ंक्शन का उपयोग करके समान सदिशों को एक ही बकेट में मैप किया जाता है। क्वेरी करते समय पहले क्वेरी सदिश से सबसे अधिक समानता वाला बकेट ढूँढ़ा जाता है, फिर उस बकेट के डेटा पर क्वेरी और गणना करके सबसे समान topk परिणाम निकाले जाते हैं।
21.pngLSH(स्थान संवेदनशील हैश)भी स्थान विभाजन पर आधारित एक विधि है,इसका कार्यान्वयन नीचे के चित्र जैसा है,एक यादृच्छिक सीधी रेखा बनाते हैं,यह रेखा धनात्मक और ऋणात्मक पक्षों को अलग करती है,यदि कोई वेक्टर इस रेखा के धनात्मक पक्ष पर है,तो उसका मान 1 है,और ऋणात्मक पक्ष पर 0,फिर एक और यादृच्छिक सीधी रेखा बनाते हैं,उसमें भी धनात्मक पक्ष 1 है,और ऋणात्मक पक्ष 0;इस प्रकार हम ऐसी कई सीधी रेखाएँ बनाते हैं, और प्रत्येक वेक्टर के लिए 4 ऐसे मान निकालते हैं जो 0 या 1 होते हैं,इससे प्रत्येक को 4 बिट का द्विआधारी कोड मिलता है। अब हम इन 4 द्विआधारी कोडों की समानता की मात्रा देखते हैं।
22.png23.png24.png25.png26.png27.png

लाभ:बड़े डेटा तक विस्तार करने पर डेटा संसाधन बहुत तेज़ है,कमी:शुद्धता साधारण है

5、क्वांटीकरण(Quantized) पर आधारित सूचकांक

5.1、क्लस्टरिंग
यदि खोज के लिए क्वेरी वेक्टर का एक मोटा दायरा निर्धारित करके उसी में खोज की जाए, तो खोज की गति बहुत बढ़ सकती है। पहले हम वर्गों की इच्छित संख्या चुनते हैं, जैसे नीचे के चित्र में 4 वर्ग, और यादृच्छिक रूप से 4 केंद्र बिंदु बनाते हैं। फिर प्रत्येक वेक्टर जिस केंद्र बिंदु के सबसे निकट होता है, उसे उसी केंद्र के वर्ग में रख दिया जाता है। इसके बाद एक वर्ग में रखे गए वेक्टरों से एक औसत वेक्टर बिंदु निकालते हैं, केंद्र को उस औसत बिंदु पर ले जाते हैं, फिर दोबारा देखते हैं कि प्रत्येक वेक्टर किस केंद्र के सबसे निकट है और पुनः वर्गीकरण करते हैं। बार-बार दोहराई जाने वाली इस प्रक्रिया को प्रशिक्षण कहते हैं। अंततः ये केंद्र बिंदु स्थिर हो जाते हैं, या कहें कि अभिसरित हो जाते हैं। खोज के समय केवल क्वेरी वेक्टर के सबसे निकट वाले क्लस्टर केंद्र को ढूँढ़कर उस क्लस्टर के वेक्टरों में खोज करनी होती है। इस तरह खोज का दायरा छोटा करने का उद्देश्य पूरा हो जाता है
29.png29.png

5.2、क्वांटीकरण(Quantization)
लेकिन विशाल मात्रा में वेक्टर डेटा के लिए खोज की गति के अलावा मेमोरी की खपत भी एक बहुत बड़ी चुनौती है। वास्तविक उपयोग के परिदृश्यों में हज़ारों वेक्टर आयाम और दस करोड़ से अधिक वेक्टर होना असामान्य नहीं है, इसलिए मेमोरी की खपत बहुत अधिक हो सकती है।
30.png

ऊपर की क्लस्टरिंग से हमें केंद्रीय बिंदु का पता चला,जिसे वास्तव में केन्द्रक कहते हैं,क्या हम क्लस्टर के बिंदुओं का प्रतिनिधित्व करने के लिए केन्द्रक का उपयोग कर सकते हैं।शायद कर सकते हैं,दरअसल यह विधि एक विशिष्ट उदाहरण है हानिपूर्ण संपीड़न ,यदि चित्र से उदाहरण दें तो वह इस प्रकार होगा:
31.png32.png

हालाँकि इससे वेक्टर के कुछ मान खो जाते हैं, लेकिन क्लस्टर के केंद्रक और उसके वर्ग के वेक्टरों के बीच संबंध को देखते हुए मूल जानकारी काफ़ी हद तक बची रहती है। इस हानिपूर्ण संपीड़न से कुछ बारीकियाँ खोने के मुकाबले इसके लाभ बहुत उल्लेखनीय हैं। नीचे दिए गए चित्र के अनुसार भंडारण किया जा सकता है; इस तरह किसी वेक्टर का उपयोग करते समय उसके कोड मान से कोडबुक में संबंधित केंद्रक खोजा जाता है, फिर केंद्रक से जुड़े ठोस मान पुनः प्राप्त किए जाते हैं। वेक्टर को केंद्रक के कोड से व्यक्त करना ही वेक्टर क्वांटीकरण(Quantization) कहलाता है
33.png

5.3、गुणनफल क्वांटीकरण PQ(Product Quantization)
वेक्टर क्वांटाइज़ेशन के बाद एक अतिरिक्त कोडबुक बन जाती है,वेक्टरों की अपनी मेमोरी लागत निश्चित रूप से घटती है,लेकिन यह कोडबुक नई मेमोरी लागत पैदा करती है,और वह काफ़ी बड़ी होती है। कम आयामों में यह स्पष्ट नहीं होता,लेकिन वास्तविक परिस्थितियों के सैकड़ों या हज़ारों आयाम वाले वेक्टरों में यह कोडबुक भयावह रूप से बड़ी हो जाती है। संख्या निश्चित होने पर,क्वांटाइज़ेशन की गुणवत्ता बनाए रखने के लिए,वेक्टरों का वितरण जितना विरल होगा,उतने ही अधिक क्लस्टर वेक्टरों की आवश्यकता होगी।
34.png35.png36.png37.png39.png39.png


व्यावहारिक अनुप्रयोगों में सैकड़ों या हज़ारों आयामों वाले वेक्टरों का डेटा बहुत विरल होता है,इसलिए उच्च आयामी स्थान में क्वांटाइज़ेशन की गुणवत्ता सुनिश्चित करने के लिए हमें बहुत बड़ी संख्या में क्लस्टर की आवश्यकता पड़ सकती है,एक सामान्य स्थिति नीचे के चित्र में दिखाई गई है:128 आयामों वाले एक वेक्टर के लिए 2 की 64 घात जितने क्लस्टर केंद्रों की आवश्यकता पड़ सकती है,जिससे केंद्रकों के कोड दर्ज करने वाली कोडबुक बहुत विशाल हो जाती है। और इस कोडबुक को सहेजने में लगने वाली मेमोरी क्वांटाइज़ेशन से बचाई गई मेमोरी से कहीं अधिक हो जाती है
40.pngइस समस्या का समाधान है कि पहले उच्च आयाम वाले वेक्टर को कई कम आयाम वाले उपवेक्टरों में बाँटा जाए, फिर इन उपवेक्टरों पर स्वतंत्र रूप से क्वांटाइज़ेशन किया जाए। उदाहरण के लिए, 128 आयाम वाले वेक्टर को 8 ऐसे उपवेक्टरों में बाँटें जिनमें प्रत्येक 16 बिट का हो, फिर 8 ऐसे उपवेक्टरों में स्वतंत्र रूप से क्लस्टरिंग प्रशिक्षण करें जिनमें प्रत्येक 16 आयाम का हो।
42.png42.png

इस प्रकार प्रत्येक वेक्टर अपने 8 उपवेक्टरों का क्वांटीकरण 8 उपस्थानों के प्रशिक्षण परिणामों से कर सकता है,और प्रत्येक कोडवर्ड वेक्टर की विमा 16 है,जो बहुत अधिक नहीं है,इसलिए प्रत्येक 16 विमीय उपस्थान में केवल 256 क्लस्टरों से भी काफ़ी अच्छा क्वांटीकरण प्राप्त हो सकता है,इसलिए प्रत्येक कोडवर्ड वेक्टर का कोड मान 0-255 की सीमा में होता है,8 उपवेक्टरों के क्वांटीकरण कोड जोड़ने पर मूल वेक्टर का अंतिम क्वांटीकरण कोड मिल जाता है,यानी अब एक वेक्टर 8 कोड मानों में क्वांटीकृत हो गया है,इसी तरह प्रत्येक उपस्थान अपनी उपकोडबुक भी बनाएगा,उपयोग के समय,8 कोड मानों से संबंधित उपकोडबुकों में से 8 ऐसे कोडवर्ड वेक्टर खोजे जाते हैं जिनकी विमा 16 है और फिर उन्हें जोड़ा जाता है,जिससे 128 विमीय वेक्टर पुनर्निर्मित होता है
45.png45.png45.png46.png


टिप्पणियाँ

भेजा जा रहा है

लोकप्रिय पोस्ट

अपनी थीम चुनें

आपकी थीम पूरी साइट पर लागू होगी।