5

मैं कनाडा में Probabilistic Matrix Factorization मॉडल लागू कर रहा हूं और Adam gradient descent नियमों का उपयोग करना चाहता हूं।क्या संभाव्य मैट्रिक्स फैक्टरेशन के लिए Lasagne के एडम कार्यान्वयन का उपयोग करने की उम्मीद है?

मेरा लक्ष्य एक कोड होना संभव है जो जितना संभव हो उतना अव्यवस्थित है, जिसका अर्थ है कि मैं एडम के एल्गोरिदम से 'एम' और 'वी' मात्राओं को स्पष्ट रूप से ट्रैक नहीं करना चाहता हूं।

ऐसा लगता है कि यह संभव है, खासकर seeing how Lasagne's Adam is implemented के बाद: यह theano.function के अद्यतन नियमों के अंदर 'एम' और 'वी' मात्रा छुपाता है।

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

मैं भी posted on Lasagne's group, वास्तव में twice, जहां कुछ और विवरण और कुछ उदाहरण हैं।

  1. प्रत्येक मौजूदा रेटिंग (जो वैश्विक NLL उद्देश्य समारोह में प्रत्येक मौजूदा शब्द का अर्थ है) अपनी ही एडम एक theano.function के लिए एक समर्पित कॉल के माध्यम से अद्यतन किया गया है:

    मैं के बारे में दो संभावित कार्यान्वयन में सोचा। दुर्भाग्य से यह एडम के एक गैर सही उपयोग के लिए नेतृत्व करता है, क्योंकि वही गुप्त वेक्टर एडम एल्गोरिदम द्वारा उपयोग की जाने वाली विभिन्न 'एम' और 'वी' मात्राओं से जुड़ा होगा, जो कि एडम को कैसे काम करना चाहिए।

  2. पूरे उद्देश्य एनएलएल पर एडम को कॉल करना, जो एसजीडी के बजाय सरल ग्रेडियेंट डेसेंट जैसे अद्यतन तंत्र (उच्च गणना समय, स्थानीय मिनीमा आदि में रहना) के साथ अद्यतन तंत्र बना देगा।

मेरे प्रश्न हैं:

  • शायद वहाँ कुछ है कि मैं कैसे Lasagne के एडम काम करता है पर सही ढंग से समझ में नहीं आया है?

  • क्या विकल्प संख्या 2 वास्तव में एसजीडी की तरह होगा, इस अर्थ में कि एक लेटेस्ट वेक्टर के लिए प्रत्येक अपडेट किसी अन्य अपडेट (उसी एडम कॉल में) पर प्रभाव डालने वाला है जो उस अद्यतन वेक्टर का उपयोग करता है?

  • क्या आपके पास इसे कार्यान्वित करने के तरीके पर कोई अन्य सुझाव है?

इस समस्या को हल करने और मैन्युअल रूप से 'वी' और 'मी' मात्रा के लिए दोहराया वैक्टर और मैट्रिक्स रखने से बचने के लिए पर कोई विचार?

+0

इस क्यू की तरह लगता है http://stats.stackexchange.com/ – redcalx

+0

@redcalx पर घर पर और अधिक होगा: मैं असहमत हूं, यहां समस्या केवल यह है कि कैसे * लागू * एडम। – fstab

+0

मैंने पीएमएफ को विस्तार से नहीं पढ़ा और मैं लासगेन उपयोगकर्ता नहीं हूं, लेकिन क्या आपके ऑप्टिमाइज़ेशन लक्ष्य को आपके मॉडल पैरामीटर के एक ही थानो फ़ंक्शन के रूप में व्यक्त करना संभव है? यदि ऐसा है, तो यह निश्चित रूप से शुद्ध सैरानो में किया जा सकता है। – Kh40tiK

उत्तर

0

ऐसा लगता है कि समाचार पत्र में वे सुझाव दे रहे हैं कि आप पूरे समारोह में एक बार अनुकूलन ढाल वंश का उपयोग कर लग रहा है:,

हम तो वाई, वी में ढाल वंश प्रदर्शन कर सकते हैं और डब्ल्यू दिया उद्देश्य समारोह को कम करने के ईक द्वारा 10.

तो मैं कहूंगा कि आपका विकल्प 2 उनके द्वारा किए गए कार्यों को लागू करने का सही तरीका है।

वहां कई जटिलताओं या गैर-रैखिकताएं नहीं हैं (सिग्मोइड के बगल में) ताकि संभवतः आप न्यूरल नेटवर्क से जुड़े विशिष्ट ऑप्टिमाइज़ेशन समस्याओं में भाग लेने की संभावना नहीं रखते हैं, जिन्हें एडम जैसे कुछ की आवश्यकता होती है। तो जब तक यह सब स्मृति में फिट बैठता है, मुझे लगता है कि यह दृष्टिकोण काम करेगा।

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

संबंधित मुद्दे