Contrastive Language-Image Pre-प्रशिक्षण मॉडल और ChromaDB का उपयोग कर खरोंच से एक कला सिफारिश प्रणाली बनाएँ
एक Swipe -आधारित कला अनुशंसक कलाकार और संग्रहालयों का सुझाव देने के लिए पसंद की गई और नापसंद की गई कलाकृतियों, उल्टे नकारात्मक और वेक्टर खोज से उपयोगकर्ता embeddings का उपयोग करता है
मुख्य बिंदुओं का सारांश
- लेख में Swipe आधारित कला अनुशंसा प्रणाली की रूपरेखा दी गई है जो कलाकृतियों और संग्रहालयों का सुझाव देने के लिए CLIP- शैली छवि वैक्टर और क्रोमाडीबी समानता खोज का उपयोग करती है।
- एक उपयोगकर्ता embedding पसंद और नापसंद कलाकृतियों को एक एकल वेक्टर में सारांशित करता है, जो पसंद किए गए वैक्टरों को रखते हुए, नपसंदीदा वैक्टर को उलटा कर देता है, और परिणाम को सामान्य बनाता है।
- मूल कार्यप्रवाह विभिन्न कलाकृतियों को पुनर्प्राप्त करता है, बातचीत के बाद उपयोगकर्ता वेक्टर को अपडेट करता है और बार-बार सुझावों से बचते हुए सबसे समान टुकड़ों की सिफारिश करता है।
- विधि को एक प्रारंभिक प्रोटोटाइप के रूप में प्रस्तुत किया गया है, जिसमें सीमित सत्यापन है क्योंकि पूर्ण बहु-उपयोगकर्ता डेटा संग्रह और सभी इच्छित सुविधाएं अभी तक लागू नहीं की गई हैं।
- संभावित सुधारों में अन्वेषण और दोहन कतारें, साथ ही नई खोजों के साथ व्यक्तिगत सिफारिशों को संतुलित करने के लिए एक जुड़ाव तापमान पैरामीटर शामिल हैं।
मेटा विवरणः जानें कि कैसे एक उपयोगकर्ता embedding आगंतुकों के लिए टुकड़े और संग्रहालयों का सुझाव देने के लिए पसंद की गई और नापसंद कलाकृतियों का उपयोग करके, Swipe -आधारित कला अनुशंसाकर्ता को शक्ति प्रदान कर सकता है।
टैगः उपयोगकर्ता embedding , अनुशंसा प्रणाली, कला प्रौद्योगिकी, संग्रहालय apps , वेक्टर खोज
विशेष रुप से प्रदर्शित छवि: (अंग्रेज़ी में) ">"</string> एक व्यक्तिगत संग्रहालय मार्ग में जाने वाले कलाकृति कार्डों का अमूर्त मैत्रीपूर्ण चित्रण, बिना किसी वास्तविक व्यक्ति, लोगो या पाठ के।
यह गाइड डेवलपर्स के लिए है जो Swipe -आधारित कला अनुशंसाकर्ता का निर्माण कर रहे हैं। Part III पर आधारितः अनुशंसक, यह बताता है कि कैसे एक उपयोगकर्ता embedding पसंद और नापसंद कलाकृतियों को सारांशित कर सकता है, नए टुकड़े सुझा सकता है और किसी शहर में संग्रहालयों से वरीयताओं को जोड़ सकता है। स्रोत श्रृंखला के अंतिम अध्याय को फ्रेम करता है जो भाग I और Part II में शुरू हुआ था, और जेरार्ड वैन होन्थोर्स्ट द्वारा Merry Fiddler के साथ खुलता है, जिसे Rijksmuseum API से पुनः प्राप्त किया गया था।
सिस्टम को कला के लिए टिंडर क्यों बनाया गया है?
यह अवधारणा उपयोगकर्ताओं को Swipe के माध्यम से कलाकृतियां प्रदान करती है, जिसमें बाएं और दाएं आंदोलन एक उपयोगकर्ता प्रोफ़ाइल को खिलाते हैं। वह प्रोफाइल तब किसी विशिष्ट शहर में जाने के लिए अधिक कलाकृतियों और संग्रहालयों की सिफारिश कर सकता है। लेखक नोट करता है कि यह सबसे व्यक्तिपरक अध्याय है, क्योंकि एक अलग दृष्टि विभिन्न घटकों और विशेषताओं का उत्पादन कर सकती थी।
नियोजित क्षमताओं में पसंद या नापसंद प्रतिक्रिया के लिए कलाकृतियों को दिखाना, बार-बार कलाकृति की उपस्थिति को रोकना, अनुशंसित टुकड़ों के शोषण के साथ अनदेखे टुकड़ों की खोज का संतुलन बनाना, सबसे अधिक पसंदीदा लेखक, शैली, सामग्री और स्थान के लिए एक व्यक्तिगत विश्लेषण पृष्ठ प्रदान करना और वरीयताओं और स्थान से संग्रहालयों का सुझाव देना शामिल है। लेख इन सभी को पूरी तरह से लागू नहीं करता है। लेखक कहते हैं कि एक पूर्ण संस्करण कम से कम तीन अन्य लेखों के लिए पर्याप्त सामग्री प्रदान करेगा, लेकिन बुनियादी संस्करण अभी भी भाग I और Part II में पहले से बनाए गए काम के साथ फिट हो सकते हैं।
उपयोगकर्ता embedding कैसे पसंद और नापसंद को एक वेक्टर में बदल देता है
प्रारंभिक विचार समानता है: उन लोगों के करीब कलाकृतियों की सिफारिश करें जिन्हें उपयोगकर्ता ने पसंद किया। जैसे-जैसे इंटरैक्शन जमा होते हैं, हर पसंद किए गए आर्टवर्क को स्कैन करना कठिन हो जाता है। उपयोगकर्ता embedding उन संकेतों को एक ऑब्जेक्ट में संपीड़ित करता है। लेखक स्वीकार करता है कि यह विकल्प पहले मनमाने ढंग से लग सकता है, लेकिन कहते हैं कि यह उपयोगी होता है क्योंकि यह उपयोगकर्ताओं और कलाकृति को उसी वेक्टर स्पेस में रखता है, जिससे संस्थाओं की तुलना करने का एक सुसंगत तरीका मिलता है और अनुशंसाओं के लिए समानता खोज का उपयोग किया जा सकता है।
विधि APP कार्यप्रवाह का समर्थन कर सकते हैं कि अन्य कार्यक्षमता के साथ एक उपयोगकर्ता वर्ग के अंदर बैठता है। समारोह create_or_update_user_vector वेक्टर बनाता है या अद्यतन करता है. यह पहले नई पसंद और नए नापसंद छवि आईडी और वैक्टर से संभावित डुप्लीकेट को हटा देता है, तो नई पसंदों और नाप्सद रिकॉर्ड करता है। पसंद किए गए वैक्टर उन्हें रखा जाता है, जबकि नापाक वैक्टर -1.0 द्वारा गुणा किया जाता है। संयुक्त वैक्टर create_normalized_vectors के माध्यम से सामान्यीकृत होते हैं। अवांछित वैक्टरों को उलटने से embedding अंतरिक्ष में विपरीत दिशा के लिए समर्थन के रूप में एक नापंसद व्यवहार होता है। लेखक ने इसे अवांछनीय आइटम से जानकारी का उपयोग करने के लिए चुना, लेकिन कहते हैं कि पाठक इसे दूसरे तर्क से बदल सकते हैं। लेखक यह भी नोट करते हैं कि अंतिम संरचना तय होने तक एक अस्थायी numpy रूपांतरण सरणी का उपयोग किया गया है।
जब एक उपयोगकर्ता के पास पहले से ही self.vector होता है, तो अद्यतन प्रत्येक पुराने इंटरैक्शन से embedding की पुनः गणना नहीं करता है। यह अप्रभावी होगा। इसके बजाय, मौजूदा वेक्टर को भारित कारक द्वारा स्केल किया जाता हैः पसंद और नापसंद कलाकृतियों की कुल संख्या में नए वैक्टर जोड़े जा रहे हैं उनकी संख्या घटा दी जाती है। तब स्केलेड मौजूदा वैक्टर को सामान्यीकरण से पहले नए पसंद किए गए और उलटे हुए नापाक वैक्टरों में जोड़ दिया जाता है, और परिणाम userdbs सूचकांक पर user_preferences_db में user_vector के रूप में संग्रहीत किया जाता है।
स्केलर उदाहरण अंकगणित को स्पष्ट करता है। यदि कोई उपयोगकर्ता embedding 4 के साथ एक कलाकृति पसंद करता है और embedding 2 के साथ किसी को नापसंद करता है, तो प्रारंभिक उपयोगकर्ता वेक्टर (4 - 2) / 2 = 1 होता है। अगर उपयोगकर्ता बाद में embedding 1 के साथ आर्टवर्क पसंद करते हैं, तो वही परिणाम स्पष्ट रूप से गणना की जा सकती है जैसे कि 4 - 2 + 1 = 3, फिर 3 / 3 = 1. इसे (1 × 2 + 1) / 3= 1 के रूप में भी गणना किया जा सकता है, जहां पिछले यूजर वेक्टर को बनाने के लिए उपयोग की जाने वाली दो कलाकृतियों द्वारा मापा जाता है। लेखक का कहना है कि अधिक कुशल embedding विधियां मौजूद हो सकती हैं और पाठकों को उनका पता लगाने के लिए आमंत्रित करती हैं।
मूल सिफारिश प्रवाह का निर्माण करें
- विविध वेक्टरों को पुनः प्राप्त करने के लिए कुशल विधि द्वारा विभिन्न कलाकृतियों का प्रारंभिक चयन पाने के लिए efficient_diverse_vectors_retrieval का उपयोग करें।
- प्रत्येक चित्र से image_path प्राप्त करें और चित्र प्रदर्शित करें.
- उपयोगकर्ता कई टुकड़ों के साथ बातचीत करने के बाद, create_or_update_user_vector से user embedding की गणना करें।
- ChromaDB वर्ग से find_n_most_similar_to_vector के साथ अनुशंसित छवियों को पुनः प्राप्त करें.
- स्रोत उदाहरण में, उपयोगकर्ता को तीन कलाकृतियां पसंद हैं और एक नापसंद है, फिर संग्रह से शीर्ष तीन अनुशंसित कलाकृतियाँ दिखाई जाती हैं।
- प्रवाह को दोहराएं, इमेज_पाथ्स_टू_एवेट के रूप में संयोजित पसंद और नापसंद वाले वैक्टरों को efficient_diverse_vectors_retrieval पर पास करें ताकि पहले देखी गई कलाकृतियां फिर से दिखाई न दें।
लेखक चेतावनी देता है कि यहां सिफारिश की गुणवत्ता व्यक्तिपरक है। कई उपयोगकर्ताओं के इंटरैक्शन से उचित डेटा संग्रह के बिना, यह पुष्टि करने का कोई तरीका नहीं है कि शीर्ष तीन कलाकृतियां उपयोगकर्ता के स्वाद से मेल खाती हैं या नहीं। विधि एक शुरुआती रणनीति है, और प्रयोग पैरामीटर को समायोजित कर सकते हैं और बातचीत पर उनके प्रभाव को माप सकते हैं।
व्यक्तिगत कतारें और व्यस्तता का तापमान
लेखक का कहना है कि मूल कार्यप्रवाह दोहराव महसूस कर सकता है। कई अनुशंसा इंजन निरंतर धाराओं का उपयोग करते हैं, जहां उपयोगकर्ता स्क्रॉल के रूप में एक फ़ीड तुरंत अनुकूलित होता है। लेख उस स्तर तक नहीं पहुंचता है, लेकिन यह दो भागों के साथ एक बुनियादी कतार डिजाइन का प्रस्ताव करता हैः विविध छवियों के लिए एक अन्वेषण कतार और अनुशंसित चित्रों के लिए शोषण की कतार। नई छवियां नियमित अंतराल पर जोड़ी जा सकती हैं जबकि उपयोगकर्ता स्वाइप कर रहा है, और कतारों को बातचीत से समायोजित किया जा सकता है.
एक तापमान पैरामीटर सगाई को ट्रैक करने के लिए है। यदि तापमान गिरता है, तो उपयोगकर्ता कम व्यस्त माना जाता है, और सिस्टम को अधिक अनुशंसित कलाकृतियां दिखानी चाहिए। अगर तापमान बढ़ता है , तो लेखक का कहना है कि APP थोड़ा और अन्वेषण की हिम्मत कर सकता है, हालांकि स्रोत मार्ग सटीक उच्च-तापमान व्यवहार निर्दिष्ट करने से पहले बंद हो जाता है।
स्रोत में सुझाए गए अन्य प्रयोगों में अप्रिय कलाकृतियों के वजन को -1 से -0.5 तक बदलना शामिल है, जिससे अंतिम उपयोगकर्ता embedding में हाल ही में पसंद या नापसंद की गई कलाकृतियां दोगुनी हो जाती हैं और सुपर जैसे जोड़ने से एक कलाकृति अतिरिक्त भार प्राप्त करती है।
आम गलतियाँ
- embedding परिणाम को वस्तुनिष्ठ सत्य के रूप में व्यवहार करना लेखक इसे व्यक्तिपरक कहते हैं और नोट करते हैं कि स्वाद मिलान का न्याय करने से पहले बहु-उपयोगकर्ता बातचीत डेटा की आवश्यकता होती है।
- पिछले सभी embeddings से उपयोगकर्ता वेक्टर को हर बार पुनः गणना करना। स्केल किए गए मौजूदा वेक्टर का उद्देश्य उस अक्षमता से बचना है।
- डुप्लिकेट हैंडलिंग को भूलना. create_or_update_user_vector नई छवि आईडी और वेक्टर हटाता है जो पहले से ही पसंद या नापसंद रिकॉर्ड में दिखाई देते हैं.
- नापसंद संकेतों को अनदेखा करना. उलटा नपसन्द embeddings विधि का हिस्सा हैं, लेकिन उनका वजन बदला जा सकता है।
- अन्वेषण और शोषण कतारों को बहुत लंबा होने देना सरल दृष्टिकोण कतार कम रखता है ताकि यह जल्दी से समायोजित हो सके।
- नो-रिपीट नियम को छोड़ना. स्रोत चाहता है कि कलाकृति दो बार न दिखाई जाए, और image_paths_to_avoid उस मूल आवश्यकता का समर्थन करता है.

Comments (0)