क्या यह एक मशीन को पढ़ाने के लिए कल्पना करना है कि एक परिभाषित विनिर्देश के लिए खुद को कैसे प्रोग्राम किया जाए? [बन्द है]


12

प्रोग्रामिंग ज्ञान के बिना मेरे एक दोस्त ने मुझसे यह सवाल पूछा और मुझे यह दिलचस्प लगा।

मुझे लगता है कि यह संभव नहीं है क्योंकि इसके लिए समस्या के पाठ का विश्लेषण करने में सक्षम वास्तव में उन्नत कृत्रिम बुद्धिमत्ता की आवश्यकता होगी, एक समाधान के बारे में सोचें और इसे प्रोग्राम करें। एक साधारण कैलकुलेटर को प्रोग्राम करने में सक्षम होने वाली मशीन के बारे में सोचने से मुझे बहुत उन्नत लगता है।

लेकिन शायद मैं गलत हूं और मैं जानना चाहूंगा कि आप इसके बारे में क्या सोचते हैं और यदि आप इस विषय पर किसी भी लेख / शोध से अवगत हैं, या यदि यह पहले से मौजूद है या यदि विनिर्देश का चयन करने की संभावना मौजूद है, और हो रही है मशीन इस "कल्पना करने के लिए आत्म-कार्यक्रम?"


4
प्रोग्रामिंग को परिभाषित करें। मैं एक प्रोग्राम बना सकता था जो अन्य प्रोग्राम बनाता। लेकिन क्या यह वास्तव में सीखेगा?
पीटर बी

हाँ सवाल कोड जनरेशन के बारे में नहीं है बल्कि असली प्रोग्रामिंग के बारे में है जैसा कि हम डेवलपर्स के रूप में करते हैं।
फ्लोरिअन

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

@florian: हम स्वयं ऐसी मशीनें हैं जिन्होंने प्रोग्रामिंग करना सीख लिया है (यह मानते हुए कि एलियंस / भगवान ने हमें बनाया :-))। बेशक, हमने अभी तक डीएनए अनुक्रमों आदि को प्रोग्राम करने की क्षमता हासिल नहीं की है, इसलिए यदि आप एक मशीन बनाते हैं जिसे सीखना है कि आखिरकार कैसे प्रोग्राम करना है, तो आपको इसे "विकसित" करने के लिए प्रोग्राम करना होगा और अंततः यह सीखना होगा कि यह कैसे प्रोग्राम किया गया था।
नव

2
@maple_shaft: मैंने प्रश्न को मौजूदा उत्तरों के अनुरूप लाकर अधिक उद्देश्यपूर्ण बना दिया था, और सोच रहा था कि क्या यह अपने वर्तमान स्वरूप में फिर से खोला जा सकता है।
टॉम अयू

जवाबों:


15

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

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

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

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

इसके आस-पास जाने का एकमात्र तरीका यह होगा कि एक वास्तविक सैपिएंट कंप्यूटर का निर्माण किया जाए जिसमें पर्याप्त अंतर्ज्ञान के साथ सभी फिलिंग-इन-ब्लॉक्स हों जो कि आप और मैं स्वचालित रूप से करते हैं, हर समय, जब सॉफ्टवेयर का निर्माण करते हैं ... जिस स्थिति में आप एक कंप्यूटर है कि खुद के बारे में एक मानव डेवलपर के रूप में के रूप में अच्छी तरह से कार्यक्रम के साथ अंत। ;)


7
मैं एक छँटाई एल्गोरिथ्म के लिए एक पूरी कल्पना लिख ​​सकता हूं बहुत आसानी से मैं सम्मिलन प्रकार, त्वरित प्रकार या बाल्टी सॉर्ट के साथ आ सकता हूं। फिर भी आप दावा करते हैं कि पहले को दूसरे में बदलना आसान है।
raptortech97

योएल ... पर्याप्त कहा! ;-) मैं समझता हूँ कि ऐसा करने के लिए, हमें किसी दिए गए भाषा में एक युक्ति की आवश्यकता होगी। लेकिन मैं इस तर्क के बारे में पूरी तरह से आश्वस्त नहीं हूं कि कल्पना बहुत विस्तृत होनी चाहिए। हम, डेवलपर्स के रूप में, एक बहुत विस्तृत कल्पना के बिना एक कार्यक्रम विकसित करने में सक्षम हैं। क्या हम एक कृत्रिम बुद्धिमत्ता विकसित नहीं कर सकते हैं जो किसी कार्यक्रम के डिजाइन के बारे में कुछ "यादृच्छिक" निर्णय लेने में सक्षम हो?
फ्लोरिअन

6
@florian तो क्या आप चाहते हैं कि प्रोग्राम मानव-कार्य करने वाले की कल्पना करने वाला कार्य करे? फिर यह "मजबूत एआई" की सदियों पुरानी समस्या बन जाती है, जिसे कई बुद्धिमान लोगों ने दशकों तक बिना किसी प्रगति के इसके लिए दिखाने के लिए शोध किया है। एक गरमाई हुई दार्शनिक बहस है कि क्या AI भविष्य में भी संभव है, बहुत कम व्यावहारिक रूप से दूर के भविष्य में संभव है, और मेरे अनुभव में कोई भी नहीं है, लेकिन सर्पिल सेल्समैन निकट भविष्य में मजबूत एआई की भविष्यवाणी करता है।

मैं वास्तव में यह नहीं चाहता कि मैं खुद से पूछ रहा था (जैसा कि मेरे दोस्त ने मुझसे पूछा) अगर यह संभव था। मैं पूरी तरह से समझता हूं कि एआई वास्तव में मौजूद नहीं है और यह सिर्फ कुछ "यादृच्छिक" क्रमबद्ध विकल्पों के लिए आता है।
फ्लोरियन

2
@ raptortech97: नहीं, आप नहीं कर सकते। इस प्रश्न के अर्थ में 'पूर्ण' नहीं। आपकी कल्पना पूरी होने के लिए यंत्रवत् रूप से एक निष्पादन योग्य कार्यक्रम में बदलने में सक्षम होने के लिए, यह अनिवार्य रूप से एक प्रोग्रामिंग भाषा में लिखा जाना है। अन्यथा, आपके कल्पना में अपरिभाषित व्यवहार होगा, या आप MSWord दस्तावेज़ में कोड लिख रहे हैं।
whatsisname

4

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

व्यवसाय के लिए जटिल सॉफ़्टवेयर लिखने की समस्या कोड लिखने का कार्यक्रम नहीं बना रही है - यह आवश्यकताओं को प्राप्त करने के लिए एक कार्यक्रम लिख रहा है।


लिंक के लिए धन्यवाद। हालांकि Yacc & Xamarin विशुद्ध रूप से नियतात्मक कोड जनरेटर हैं। वे खरोंच से सामान नहीं बनाते हैं।
फूली

@ फ़्लोरियन - कुछ भी खरोंच से सामान नहीं बनाता है। हमेशा कुछ इनपुट होते हैं, वे सभी की तुलना में अधिक उपयुक्त होते हैं।
तेलास्टिन

1
@Telastyn: एक पार्सर जनरेटर के लिए इनपुट / आउटपुट की तुलना "इंसानी दिमाग" के लिए इनपुट / आउटपुट से "अधिक पिकी" होने के नाते सबसे अच्छा है।
whatsisname

2

मुझे लगता है कि @ मेसन व्हीलर का जवाब महत्वपूर्ण विचार है। यह इस प्रकार चलता है:

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

आगे क्या होगा? एक उपन्यास, या शेकेपियर के सोननेट्स की एन्ट्रॉपी क्या है?

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

मुझे लगता है कि सवाल यह है कि किसी दिए गए एन्ट्रापी में मास्टर करने में एआई को कितना समय लगता है ... और कितने कंप्यूटिंग संसाधनों की आवश्यकता होती है? मुझे लगता है कि यह अकल्पनीय है कि एक कंप्यूटर सर्वश्रेष्ठ मानव मस्तिष्क में प्रवेश करने में महारत हासिल नहीं कर सका - दिमाग के बारे में कुछ भी जादू नहीं है - लेकिन सवाल यह है कि आपको कितने कोर की आवश्यकता है, और वहां पहुंचने में कितनी शताब्दियों का समय लगेगा?

लेकिन ... क्या कोई कंप्यूटर कभी मेरा काम कर पाएगा ? समझ से बाहर!


मुझे लगता है कि यह कहना उचित है कि संकट एक विशेष मामला है: यह तथ्यों को वापस बुलाने और संबद्ध करने के लिए उबलता है। यहां तक ​​कि सबसे अच्छे विशेषज्ञ भी ले लो, और यहां तक ​​कि सार्वजनिक ज्ञान की डली भी होगी कि वे अनजान हैं, या दबाव में याद करने में असमर्थ हैं। दूसरी ओर, एक कंप्यूटर जो एक विश्वकोश (जैसे विकिपीडिया, विश्वकोश ब्रिटानिका, या किसी अन्य) का विश्लेषण करने में सक्षम है, में कोई भी तथ्य नहीं बताया गया है कि विश्वकोश किसी भी अन्य की तुलना में अधिक (या कम) विदेशी है।
बजे एक CVn

1

इसका उत्तर देना कठिन है, क्योंकि कृत्रिम बुद्धिमत्ता की तरह, एक बार जब हम इसे पूरा कर लेते हैं, तो ऐसा इसलिए होगा क्योंकि हमने ऐसा करने वाला एक प्रोग्राम लिखा होगा। और आलोचक कहेंगे, "ठीक है, यह मशीन वास्तव में स्वयं प्रोग्रामिंग नहीं है! यह सिर्फ उसी प्रोग्राम का अनुसरण करता है जो आपने इसे दिया था!"

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

तो - कुछ उदाहरणों पर विचार करें।

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

दूसरा - संपादक जो आपको बताते हैं कि आपने गलती की है (सिंटैक्स त्रुटि, गैर मौजूदा चर, आदि)। यह स्वयं कुछ भी प्रोग्राम नहीं करता है, लेकिन यह आपको बता सकता है कि आपने कुछ गलत किया है। यह केवल सतह पर बहुत अधिक है।

ऐसी भाषाएं जिनमें आप बस यूआई नियंत्रणों को क्लिक कर सकते हैं और खींच सकते हैं, और जो कोड वास्तव में उन्हें काम करेगा, वह स्वचालित रूप से उत्पन्न होता है।

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

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

हमने सामान्य दिशा में बहुत सारे छोटे कदम उठाए हैं।

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


0

वर्तमान में नहीं और भविष्य के लिए नहीं, क्योंकि आपको प्रोग्राम बनाने के लिए मानव मस्तिष्क की सभी भयानक जटिलताओं की आवश्यकता है। और फिर भी उन दिमागों को ठीक से करने के लिए उच्च प्रशिक्षित होने की आवश्यकता होती है, और फिर भी वे सभी कार्य करने में सक्षम नहीं होते हैं हालांकि कोई यह तर्क दे सकता है कि पर्याप्त समय के साथ आप किसी को भी कार्यक्रम के लिए प्रशिक्षित कर सकते हैं।

मैंने इसे उस तरह से लिया जब आपने अपने प्रश्न को हल किया था कि आप सरल अनुकरण कार्यों के बारे में बात नहीं कर रहे हैं।

आपने लेख और इस विज्ञान ब्लॉग के बारे में पूछा, जो कि इंटेलिजेंस डेवलपिंग इंटेलिजेंस पर है, जो कई तरह से सवाल का जवाब देता है।

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