क्या 8-बिट माइक्रोकंट्रोलर पर तंत्रिका नेटवर्क को चलाना और प्रशिक्षित करना संभव है?


11

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

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

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

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


क्यूरियोस, क्या आप प्रत्येक सेंसर / एक्ट्यूएटर नोड पर या कुछ (अर्ध-) केंद्रीकृत "मस्तिष्क" पर एक तंत्रिका नेटवर्क चलाने का इरादा रखते हैं (तब बेशक 8-बिट प्रतिबंध जरूरी नहीं होगा)?
घनिमा

अगर संभव हो तो @Ghanima, मैं इसे जटिलता की अतिरिक्त परत को बचाने के लिए actuator नोड पर करना चाहूंगा, हालांकि मुझे यकीन नहीं है कि यह सीमित बाधाओं के साथ काम करेगा।
Aurora0001

@ Aurora0001 आपके द्वारा यहां विशेष नियंत्रक आपके एनएन को प्रशिक्षित करने के लिए अनुकूल नहीं हो सकता है, लेकिन वास्तव में ऐसा करने के लिए एम्बेडेड कंप्यूटर-विज़न की दुनिया में ठोस प्रयास हैं। यदि आप ऐसे कार्यों के लिए उपयुक्त आर्किटेक्चर के साथ एक माइक्रो-नियंत्रक खोजने की कोशिश कर रहे हैं, तो मेरा सुझाव है कि आप कंप्यूटर-दृष्टि उद्योग के लिए इस प्रकार के हार्डवेयर विकसित करने वाली कंपनियों को देखें। मुझे यकीन है कि इसमें से कुछ को फिर से तैयार किया जा सकता है और अपनी आवश्यकताओं के अनुकूल बनाया जा सकता है। शुरू करने के लिए एक अच्छी जगह
grursndrs

@grldsndrs शानदार, संदर्भ के लिए धन्यवाद। एक अतिरिक्त उत्तर के रूप में पोस्ट करने के लिए, अगर आपको लगता है कि यह काफी है स्वतंत्र महसूस (मैं निश्चित रूप से इसके साथ खुशी होगी)
Aurora0001

1
एक 8 बिट प्रोसेसर एक व्यापक शब्द प्रोसेसर कुछ भी कर सकता है, केवल शायद (कार्य पर निर्भर करता है) अधिक धीरे-धीरे। हालांकि, 8 बिट प्रोसेसर में सीमित देशी पता स्थान होता है, जिसका अर्थ है कि उन्हें बहुत बड़ी यादों को प्रबंधित करने के लिए अप्रत्यक्ष साधनों का उपयोग करना चाहिए, और माइक्रोकंट्रोलर के मामले में ऑन-चिप मेमोरी की तुलना में बहुत कम मात्रा में जहाज होते हैं। निम्नतम-छोर से परे बहुत कम लागत अंतर है - एमसीयू लागत का प्राथमिक चालक यकीनन यादें है, न कि ALU चौड़ाई।
क्रिस स्ट्रैटन

जवाबों:


9

पहले पेपर के अनुसार , रनिंग कोई समस्या नहीं है। यही उद्देश्य था। केवल अधिकतम वजन पर एक सीमा है:

वर्तमान में इस माइक्रोकंट्रोलर में एम्बेडेड आर्किटेक्चर पर सीमा केवल आवश्यक वजन की संख्या तक सीमित है। तंत्रिका नेटवर्क वर्तमान में 256 वज़न तक सीमित है। हालांकि अधिकांश एम्बेडेड अनुप्रयोगों के लिए इस 256 वजन को सिस्टम को सीमित नहीं करना चाहिए।


प्रशिक्षण के लिए, जहां तक ​​मैं वर्णित कार्यान्वयन को समझता हूं, PIC नियंत्रक एक बाहरी स्रोत से पैरामीटर प्राप्त करता है।

तंत्रिका नेटवर्क आगे की गणना लिखी जाती है ताकि प्रत्येक न्यूरॉन की गणना नेस्टेड लूप की एक श्रृंखला में व्यक्तिगत रूप से की जाए। प्रत्येक लूप के लिए गणना की संख्या और प्रत्येक नोड के लिए मान सभी स्मृति में एक साधारण सरणी में संग्रहीत होते हैं।

[...]

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

मुझे संदेह है कि प्रशिक्षण बाहरी रूप से भी किया जाता है।

पेपर न्यूरल नेटवर्क ट्रेनर्स के लिए भी संदर्भ देता है जो संभवतः PIC की मेमोरी में प्रीप्रोग्राम किए गए मानों को निर्धारित करने के लिए उपयोग किया जाता था।

अब, मैंने पहले एक पर ध्यान दिया है जो नेटवर्क आर्किटेक्चर और उनके साथ उपयोग करने के लिए एल्गोरिदम का वर्णन करता है। लेकिन यहां उपयोग किया जाने वाला न्यूरल नेटवर्क ट्रेनर सॉफ्टवेयर MATLAB में लागू किया गया है।

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

मुझे यह उल्लेख करना होगा कि पूरी तरह से जुड़े नेटवर्क में परत वास्तुकला द्वारा एक परत की तुलना में एक ही कार्य के लिए कम वजन संख्या है। यह माइक्रोकंट्रोलर के लिए अधिक उपयुक्त बनाता है।

मैं एक तंत्रिका नेटवर्क विशेषज्ञ नहीं हूं और यह काफी जटिल है इसलिए मैं गलत हो सकता हूं, लेकिन इन पत्रों के आधार पर मैं कहूंगा कि प्रशिक्षण के लिए कॉटन, विल्मोव्स्की और डंडर के दृष्टिकोण को बाहरी, अधिक शक्तिशाली मंच की आवश्यकता है।


एक माइक्रोकंट्रोलर पर एक न्यूरल नेटवर्क चलाने के बारे में, एसटी माइक्रोइलेक्ट्रॉनिक ने सिर्फ एक टूलकिट STM32Cube.AI की घोषणा की : न्यूरल नेटवर्क्स को STM32 के लिए ऑप्टिमाइज्ड कोड में कन्वर्ट करें। लोकप्रिय लाइब्रेरी से प्री-प्रशिक्षित न्यूरल नेटवर्क को उनके STM32 MCU में से अधिकांश में बदलें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.