TensorFlow 1.8

Embeddings




tensorflow

Embeddings

यह दस्तावेज़ एम्बेडिंग की अवधारणा का परिचय देता है, TensorFlow में एम्बेडिंग को प्रशिक्षित करने का एक सरल उदाहरण देता है, और बताता है कि TensorBoard एम्बेडिंग प्रोजेक्टर ( लाइव उदाहरण ) के साथ एम्बेडिंग कैसे देखें। पहले दो भाग मशीन सीखने या टेन्सरफ्लो के लिए नए लोगों को लक्षित करते हैं, और एंबेडिंग प्रोजेक्टर सभी स्तरों के उपयोगकर्ताओं के लिए कैसा है।

इन अवधारणाओं पर एक वैकल्पिक ट्यूटोरियल मशीन लर्निंग क्रैश कोर्स के एंबेडिंग सेक्शन में उपलब्ध है।

एक एम्बेडिंग असतत वस्तुओं से एक मानचित्रण है, जैसे कि शब्द, वास्तविक संख्या के वैक्टर तक। उदाहरण के लिए, अंग्रेजी शब्दों के लिए 300-आयामी एम्बेडिंग में शामिल हो सकते हैं:

blue:  (0.01359, 0.00075997, 0.24608, ..., -0.2524, 1.0048, 0.06259)
blues:  (0.01396, 0.11887, -0.48963, ..., 0.033483, -0.10007, 0.1158)
orange:  (-0.24776, -0.12359, 0.20986, ..., 0.079717, 0.23865, -0.014213)
oranges:  (-0.35609, 0.21854, 0.080944, ..., -0.35413, 0.38511, -0.070976)

इन वैक्टरों में व्यक्तिगत आयामों का आमतौर पर कोई निहित अर्थ नहीं होता है। इसके बजाय, यह मशीन सीखने वाले वैक्टरों के बीच स्थान और दूरी के समग्र पैटर्न का लाभ उठाता है।

मशीन लर्निंग के इनपुट के लिए एंबेडिंग महत्वपूर्ण है। क्लासिफायर और तंत्रिका नेटवर्क अधिक आम तौर पर, वास्तविक संख्या के वैक्टर पर काम करते हैं। वे घने वैक्टर पर सबसे अच्छा प्रशिक्षण देते हैं, जहां सभी मान किसी वस्तु को परिभाषित करने में योगदान करते हैं। हालांकि, मशीन लर्निंग के कई महत्वपूर्ण इनपुट, जैसे कि पाठ के शब्द, एक प्राकृतिक वेक्टर प्रतिनिधित्व नहीं है। एंबेडेड फ़ंक्शन ऐसे असतत इनपुट ऑब्जेक्ट को उपयोगी निरंतर वैक्टर में बदलने का मानक और प्रभावी तरीका है।

मशीन लर्निंग के आउटपुट के रूप में एंबेडिंग भी मूल्यवान हैं। क्योंकि ऑब्जेक्ट्स को वैक्टर में एम्बेड करना, अनुप्रयोग वेक्टर स्पेस (उदाहरण के लिए, यूक्लिडियन दूरी या वैक्टर के बीच का कोण) में समानता का उपयोग कर सकते हैं, वस्तु समानता का एक मजबूत और लचीला माप। एक सामान्य उपयोग निकटतम पड़ोसियों को खोजने के लिए है। उदाहरण के लिए, उपरोक्त शब्द एम्बेडिंग का उपयोग करते हुए, यहाँ प्रत्येक शब्द और संबंधित कोण के लिए तीन निकटतम पड़ोसी हैं:

blue:  (red, 47.6°), (yellow, 51.9°), (purple, 52.4°)
blues:  (jazz, 53.3°), (folk, 59.1°), (bluegrass, 60.6°)
orange:  (yellow, 53.5°), (colored, 58.0°), (bright, 59.9°)
oranges:  (apples, 45.3°), (lemons, 48.3°), (mangoes, 50.4°)

यह एक ऐसा अनुप्रयोग बताएगा कि सेब और संतरे किसी तरह नींबू (और 48.3 ° अलग) की तुलना में अधिक समान (45.3 ° अलग) हैं।

TensorFlow में एंबेडिंग

TensorFlow में शब्द एम्बेडिंग बनाने के लिए, हम पहले टेक्स्ट को शब्दों में विभाजित करते हैं और फिर शब्दावली में प्रत्येक शब्द के लिए एक पूर्णांक असाइन करते हैं। आइए मान लें कि यह पहले ही हो चुका है, और यह word_ids इन पूर्णांकों का एक वेक्टर है। उदाहरण के लिए, वाक्य "मेरे पास एक बिल्ली है।" [“I”, “have”, “a”, “cat”, “.”] में विभाजित किया जा सकता है और फिर संबंधित word_ids का आकार [5] 5 पूर्णांक से मिलकर बनता है। इन शब्द आईडी को वैक्टर में मैप करने के लिए, हमें एम्बेडिंग वैरिएबल बनाने और निम्नानुसार tf.nn.embedding_lookup फ़ंक्शन का उपयोग करने की tf.nn.embedding_lookup है:

word_embeddings = tf.get_variable(“word_embeddings”,
    [vocabulary_size, embedding_size])
embedded_word_ids = tf.nn.embedding_lookup(word_embeddings, word_ids)

इसके बाद, हमारे उदाहरण में टैंसर embedded_word_ids ग्रिड का आकार [5, embedding_size] और इसमें 5 शब्दों में से प्रत्येक के लिए एम्बेडिंग (घने वैक्टर) शामिल होंगे। प्रशिक्षण के अंत में, word_embeddings में शब्दावली में सभी शब्दों के एम्बेडिंग शामिल होंगे।

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

विज़ुअलाइज़िंग एम्बेडिंग

TensorBoard में एम्बेडिंग प्रोजेक्टर शामिल है, एक उपकरण जो आपको अंतःक्रियात्मक रूप से एम्बेडिंग की कल्पना करने देता है। यह उपकरण आपके मॉडल से एम्बेडिंग पढ़ सकता है और उन्हें दो या तीन आयामों में प्रस्तुत कर सकता है।

एम्बेडिंग प्रोजेक्टर में तीन पैनल होते हैं:

  • ऊपर बाईं ओर डेटा पैनल , जहां आप रन चुन सकते हैं, एम्बेडिंग चर और डेटा कॉलम को रंग और लेबल बिंदुओं द्वारा।
  • नीचे बाईं ओर प्रोजेक्शन पैनल , जहां आप प्रक्षेपण के प्रकार का चयन कर सकते हैं।
  • दाईं ओर इंस्पेक्टर पैनल , जहां आप विशेष बिंदुओं की खोज कर सकते हैं और निकटतम पड़ोसियों की सूची देख सकते हैं।

अनुमान

एम्बेडिंग प्रोजेक्टर डेटा सेट की गतिशीलता को कम करने के लिए तीन तरीके प्रदान करता है।

  • t-SNE : एक नॉनलाइनर नॉनडेटर्मिनिस्टिक एल्गोरिदम (टी-वितरित स्टोचैस्टिक पड़ोसी एम्बेडिंग) जो डेटा में स्थानीय पड़ोस को संरक्षित करने की कोशिश करता है, अक्सर वैश्विक संरचना को विकृत करने की कीमत पर। आप चुन सकते हैं कि दो या तीन आयामी अनुमानों की गणना करें।

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

  • कस्टम : क्षैतिज और ऊर्ध्वाधर अक्षों पर एक रैखिक प्रक्षेपण जिसे आप डेटा में लेबल का उपयोग करके निर्दिष्ट करते हैं। उदाहरण के लिए, आप क्षैतिज अक्ष को "वाम" और "दाएं" के लिए पाठ पैटर्न देकर परिभाषित करते हैं। एम्बेडिंग प्रोजेक्टर उन सभी बिंदुओं को पाता है जिनके लेबल "वाम" पैटर्न से मेल खाते हैं और उस सेट के केंद्रक की गणना करते हैं; इसी तरह "राइट" के लिए। इन दो सेंट्रोइड्स से गुजरने वाली रेखा क्षैतिज अक्ष को परिभाषित करती है। "अक्ष" और "डाउन" टेक्स्ट पैटर्न से मेल खाने वाले बिंदुओं के लिए ऊर्ध्वाधर अक्ष को इसी तरह सेंट्रोइड्स से गणना की जाती है।

आगे उपयोगी लेख टी-एसएनई का प्रभावी ढंग से उपयोग करने के तरीके हैं और प्रमुख घटक विश्लेषण स्पष्ट रूप से समझाया गया है

अन्वेषण

आप प्राकृतिक क्लिक-एंड-ड्रैग जेस्चर का उपयोग करके नेत्रहीन ज़ूमिंग, रोटेटिंग और पैनिंग द्वारा देख सकते हैं। किसी बिंदु पर अपने माउस को हॉवर करने से उस बिंदु के लिए कोई metadata दिखाई देगा। आप निकटतम पड़ोसी सबसेट का भी निरीक्षण कर सकते हैं। एक बिंदु पर क्लिक करने से दाएं फलक को निकटतम बिंदुओं की सूची के साथ-साथ वर्तमान बिंदु पर दूरी का कारण बनता है। निकटतम पड़ोसी अंक भी प्रक्षेपण में हाइलाइट किए गए हैं।

यह कभी-कभी बिंदुओं के सबसेट पर दृश्य को प्रतिबंधित करने और केवल उन बिंदुओं पर अनुमान लगाने के लिए उपयोगी होता है। ऐसा करने के लिए, आप कई तरीकों से बिंदुओं का चयन कर सकते हैं:

  • एक बिंदु पर क्लिक करने के बाद, इसके निकटतम पड़ोसियों का भी चयन किया जाता है।
  • खोज के बाद, क्वेरी से मेल खाने वाले बिंदु चुने जाते हैं।
  • चयन को सक्षम करना, एक बिंदु पर क्लिक करना और खींचना एक चयन क्षेत्र को परिभाषित करता है।

फिर दाहिने हाथ की तरफ इंस्पेक्टर फलक के शीर्ष पर "आइसोलेट एनएनएन अंक" बटन पर क्लिक करें। निम्नलिखित छवि से पता चलता है कि 101 अंक चुने गए हैं और उपयोगकर्ता "101 अंक अलग" पर क्लिक करने के लिए तैयार है:

Selection of nearest neighbors

एक शब्द एम्बेड करने वाले डेटासेट में "महत्वपूर्ण" के निकटतम पड़ोसियों का चयन।

उन्नत टिप: कस्टम प्रक्षेपण के साथ फ़िल्टर करना शक्तिशाली हो सकता है। नीचे, हमने "राजनीति" के 100 निकटतम पड़ोसियों को फ़िल्टर किया और उन्हें एक्स अक्ष के रूप में "सबसे खराब" - "सर्वश्रेष्ठ" वेक्टर पर अनुमानित किया। Y अक्ष यादृच्छिक है। नतीजतन, व्यक्ति दाईं ओर "विचारों", "विज्ञान", "परिप्रेक्ष्य", "पत्रकारिता" लेकिन बाईं ओर "संकट", "हिंसा" और "संघर्ष" पाता है।

Custom controls panel Custom projection
कस्टम प्रक्षेपण नियंत्रण। "सर्वश्रेष्ठ" पर "राजनीति" के पड़ोसियों का कस्टम प्रक्षेपण - "सबसे खराब" वेक्टर।

अपने निष्कर्षों को साझा करने के लिए, आप नीचे दायें कोने में बुकमार्क पैनल का उपयोग कर सकते हैं और एक छोटी फ़ाइल के रूप में वर्तमान स्थिति (किसी भी प्रक्षेपण के गणना निर्देशांक सहित) को बचा सकते हैं। नीचे दिए गए पैनल का निर्माण करके प्रोजेक्टर को इनमें से एक या एक से अधिक फाइलों के लिए इंगित किया जा सकता है। अन्य उपयोगकर्ता तब बुकमार्क के अनुक्रम से चल सकते हैं।

बुकमार्क पैनल

मेटाडाटा

यदि आप एक एम्बेडिंग के साथ काम कर रहे हैं, तो आप संभवतः डेटा बिंदुओं पर लेबल / चित्र संलग्न करना चाहेंगे। आप प्रत्येक बिंदु के लिए लेबल युक्त मेटाडेटा फ़ाइल उत्पन्न करके और एंबेडेड प्रोजेक्टर के डेटा पैनल में "लोड डेटा" पर क्लिक करके ऐसा कर सकते हैं।

मेटाडेटा या तो लेबल या चित्र हो सकते हैं, जो एक अलग फ़ाइल में संग्रहीत होते हैं। लेबल के लिए, प्रारूप एक TSV फ़ाइल (लाल रंग में दिखाया गया टैब वर्ण) होना चाहिए, जिसकी पहली पंक्ति में कॉलम हेडर (बोल्ड में दिखाए गए) और बाद की लाइनें मेटाडेटा मान समाहित करती हैं। उदाहरण के लिए:

Word \t Frequency
Airplane \t 345
Car \t 241
...

मेटाडेटा फ़ाइल में लाइनों का क्रम हेडर को छोड़कर, एम्बेडिंग चर में वैक्टर के क्रम से मेल खाने के लिए माना जाता है। नतीजतन, मेटाडेटा फ़ाइल में (i + 1) -थ लाइन एम्बेडिंग चर की i-th पंक्ति से मेल खाती है। यदि TSV मेटाडेटा फ़ाइल में केवल एक स्तंभ है, तो हम शीर्ष लेख पंक्ति की अपेक्षा नहीं करते हैं, और मान लें कि प्रत्येक पंक्ति एम्बेडिंग का लेबल है। हम इस अपवाद को शामिल करते हैं क्योंकि यह आमतौर पर उपयोग किए जाने वाले "वोकैब फ़ाइल" प्रारूप से मेल खाता है।

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

0 1 2
3 4 5
6 7

एंबेडिंग प्रोजेक्टर में थंबनेल छवियों का एक मजेदार उदाहरण देखने के लिए इस लिंक का पालन करें

मिनी पूछे जाने वाले प्रश्न

"एक्शन" करना एक क्रिया है या कोई चीज़? दोनों। लोग एक वेक्टर स्थान (क्रिया) में शब्दों को एम्बेड करने और शब्द एम्बेडिंग (चीजों) के उत्पादन के बारे में बात करते हैं। दोनों के लिए आम असतत वस्तुओं से वैक्टर तक एक मानचित्रण के रूप में एम्बेड करने की धारणा है। उस मैपिंग को बनाना या लगाना एक क्रिया है, लेकिन मैपिंग अपने आप में एक चीज है।

क्या एम्बेडिंग उच्च-आयामी या निम्न-आयामी हैं? निर्भर करता है। उदाहरण के लिए, शब्दों और वाक्यांशों का 300-आयामी वेक्टर स्थान, अक्सर लाखों शब्दों और वाक्यांशों की तुलना में कम-आयामी (और घना) कहलाता है। लेकिन गणितीय रूप से यह उच्च-आयामी है, कई गुणों को प्रदर्शित करता है जो हमारे मानव अंतर्ज्ञान के 2- और 3-आयामी रिक्त स्थान के बारे में सीखा है जो नाटकीय रूप से अलग हैं।

क्या एम्बेडिंग परत के समान ही एम्बेडिंग है? नहीं। एक एम्बेडिंग परत तंत्रिका नेटवर्क का एक हिस्सा है, लेकिन एक एम्बेडिंग एक अधिक सामान्य अवधारणा है।