- AI/ML में काम करने का मेरा कोई इरादा बिल्कुल नहीं था
- बस काम के लिए ज़रूरी tools इस्तेमाल करते-करते मैं स्वाभाविक रूप से AI और ML का उपयोग करने लगा, और आखिरकार इसी क्षेत्र में आ गया (CMU associate professor)
- नए साल के मौके पर 2000 से शुरू करके उन प्रमुख AI/ML projects को पीछे मुड़कर देखता हूँ जिनमें मैंने भाग लिया
if statements और random numbers: शुरुआती programming अनुभव
- वीडियो गेम्स से शुरुआत:
- Tamagotchi से प्रेरित होकर VB6 में virtual pet game बनाने की कोशिश की।
- timer और conditional statements का उपयोग करके simple logic implement किया:
- हर 10 सेकंड में hunger value बढ़ती थी।
- hunger एक खास स्तर से ऊपर जाते ही हर 3 सेकंड में health घटती थी।
- health 0 हो जाने पर pet गिर जाता था।
- नतीजा: गेम एकरस और मज़ेदार नहीं था।
- स्कूल के दिनों में game development:
- 2D space shooting game बनाया:
- player दुश्मनों की waves को defend करता और power-ups इकट्ठा करता था।
- दुश्मनों के spawn patterns को random numbers और gameplay stats (play time, shot count, HP आदि) के साथ एक लंबे
if statement से implement किया।
- नतीजा:
- गेम थोड़ा dynamic और unpredictable महसूस होता था।
- लेकिन रुचि ज़्यादा देर टिकती नहीं थी, इसलिए players जल्दी छोड़ देते थे।
- AI concepts की खोज:
- 2000s के मध्य में Programming Game AI by Example किताब खरीदी और गेम में AI implement करना सीखा।
- शुरुआत में इसका उपयोग नहीं कर पाया, लेकिन बाद के projects में इससे बहुत मदद मिली।
- इस दौर का अनुभव आगे चलकर ज़्यादा complex और interesting game mechanics के साथ प्रयोग करने की नींव बना
state machines और higher-order functions: कॉलेज के दौरान game development
- गेम्स का विकास:
- कॉलेज के दौरान game development को अगले स्तर पर ले गया और ऐसे games बनाए जिन्हें लाखों लोगों ने खेला।
- कुछ games ने revenue भी कमाया।
- programming skills परिपक्व होने के साथ, किताब से सीखी हुई बातें वास्तविक काम में लागू कर सका।
- तकनीकी उपयोग:
- Finite State Machine:
- दुश्मनों के behavior patterns implement करने में उपयोग।
- Factory Pattern:
- objects बनाने और manage करने के लिए।
- Higher-order Functions:
- enemies और weapons के behavior को composable तरीके से design किया।
- उदाहरण:
- weapon बाएँ-दाएँ 25-degree amplitude में oscillate करता हुआ एक संकरे cone में bullets fire करता था।
- bullets पास के targets की ओर थोड़ा home करती थीं, और 1% संभावना पर ricochet होता था।
- गेम्स में जीवंतता:
- game state और player input के आधार पर धीरे-धीरे dynamic elements जोड़े।
- randomness और composability के ज़रिए विविधता जोड़ी।
- यह approach सिर्फ enemy behavior तक सीमित नहीं था, बल्कि sprites, particle effects, sound effects, bullets, animation आदि पूरे गेम पर layered तरीके से लागू हुआ।
- नतीजा:
- games ज़्यादा जीवंत और मज़ेदार हो गए।
- लेकिन तब एहसास हुआ कि यह AI नहीं था, बल्कि अच्छी तरह design किए गए
if statements और function calls का संयोजन भर था।
- गेम को "जीवित" जैसा महसूस कराया जा सकता था, लेकिन इस चरण में भी यह हाथ से लिखी logic और functions का ही उपयोग था
first-order logic, knowledge representation, support vector machines, neural networks: graduate school के शुरुआती अनुभव
- master's program की शुरुआत:
- graduation के बाद deadline से ठीक पहले master's program में दाखिला लिया।
- चुनने के लिए classes सीमित थीं, इसलिए AI और neural networks courses लिए।
- जिन compiler classes की उम्मीद थी, उनकी जगह ये courses लेने पर निराशा हुई:
- hands-on practice या implementation के बिना बहुत high-level theory पर केंद्रित।
- definitions पर बहुत चर्चा होती थी।
- AI course:
- Artificial Intelligence: A Modern Approach (Third Edition) textbook इस्तेमाल की।
- planning, agents, first-order logic, knowledge representation जैसी concepts सीखी।
- समस्याओं के बारे में सोचने की नई vocabulary मिली, लेकिन वास्तविक उपयोग मुश्किल लगा।
- neural networks course:
- perceptrons, support vector machines (SVM), feedforward networks, Hopfield models, backpropagation आदि की theory पढ़ी।
- practice के लिए स्पष्ट दिशा-निर्देश नहीं थे:
- professor का "MATLAB package खोजो" वाला जवाब निराशाजनक था।
- low-bandwidth video chat program development:
- OpenCV से face detection और regions extract किए:
- mouth corners की स्थिति, बाएँ eyebrow की position, दायाँ eye open है या नहीं, जैसी चीज़ों को classify किया।
- database से सैकड़ों labeled face images इकट्ठा कीं।
- classified binary states को sockets के ज़रिए भेजा, और OpenGL से avatar render किया।
- नतीजा:
- lighting changes के प्रति बहुत sensitive, parameters tweak करना मुश्किल, और training में बहुत समय लगता था।
- OpenCV का उपयोग कठिन था और program बदलना भी झंझटभरा था।
- उपलब्धि:
- कई trials and errors के ज़रिए बहुत कुछ सीखा।
- जनवरी 2013 में शुरुआती demo video अपलोड करके साझा किया:
- demo video भले ही amateur था, लेकिन 1000 से ज़्यादा views मिले।
- यह दौर theory को वास्तव में implement करके समस्याएँ हल करना सीखने की एक महत्वपूर्ण growth process था
decision trees, clustering, recommendation algorithms: PhD के दौरान अनुभव
- research goal:
- code editor के log data का विश्लेषण करके निम्न समस्याओं को हल करने की कोशिश की:
- पहचानना कि programmer code में अटक गया है या रास्ता भटक गया है।
- अनुमान लगाना कि programmer अगला कौन-सा file explore करेगा।
- रुचि के code को सटीक रूप से recommend करना।
- इस्तेमाल की गई statistical methods:
- C4.5 algorithm: decision trees बनाना।
- K-means और DBSCAN: event clustering।
- Apriori और collaborative filtering: events के बीच associations ढूँढना।
- नतीजा:
- साधारण methods होने के बावजूद इन्होंने चौंकाने वाली ताकत दिखाई।
- ज़्यादातर मामलों में, complex neural networks की तुलना में ये methods पर्याप्त रूप से प्रभावी थे।
- उपलब्धियाँ:
- papers प्रकाशित किए, कई internships किए, और developer tools बनाए।
- सफलतापूर्वक PhD पूरी की।
- संबंधित सामग्री:
- paper: developers जानकारी कैसे खोजते हैं, इस पर data analysis
Foraging and Navigations, Fundamentally: Developers Predictions of Value and Cost (PDF))
- Microsoft internship report: code review bot बनाने का अनुभव
When users never use the features they asked for
- PhD के दौरान statistical techniques का उपयोग करके व्यावहारिक समस्याएँ हल कीं और academia व industry दोनों में सार्थक उपलब्धियाँ हासिल कीं
intelligent user interfaces: professor के रूप में research की शुरुआत
- नई research direction तय करना:
- 2018 में tenure-track professor के रूप में Intelligent Developer Tools को research theme चुना।
- शुरुआत में concept अस्पष्ट था, लेकिन predictive models का उपयोग करके programmers की misunderstandings को पहले से पहचानकर सुधारने वाले project से शुरुआत की।
- पहला research proposal:
- project goals:
- beginner programmers के program behavior संबंधी misunderstandings को पहचानने के लिए program analysis techniques और predictive models का उपयोग।
- programmer को disturb किए बिना misunderstandings को ठीक करना और logic समझाना।
- अनचाहे program behavior changes को पकड़ने वाले test code generate करना, ताकि भविष्य की misunderstandings रोकी जा सकें।
- सारांश:
- दूसरा project:
- programmers की information needs का अनुमान लगाकर real time में user interfaces generate करने पर research।
- उदाहरण:
- Git history explore कर रहे programmer को recommended commits का visualization देना।
- research integration:
- "Inquisitive Programming Environments as Learning Environments for Novices and Experts" जैसी बड़ी vision प्रस्तावित की।
- संबंधित सामग्री:
- उपलब्धियाँ और सीमाएँ:
- project को grant मिला और इसकी सफल शुरुआत हुई, लेकिन research पूरी गति पकड़ने से पहले ही professor पद से इस्तीफ़ा दे दिया।
- यह दौर intelligent user interfaces पर research को ठोस रूप देने और बड़ी vision डिजाइन करने का एक महत्वपूर्ण turning point था
program synthesis और large language models (LLMs): Microsoft में अनुभव
- Microsoft से जुड़ना:
- जनवरी 2022 में Microsoft की program synthesis team में शामिल हुआ।
- उसी साल ChatGPT लॉन्च हुआ, और AI technology हर क्षेत्र में लागू होने लगी; AI कार्य में पूरी तरह डूबने के लिए यह बेहतरीन समय था।
- AI लागू करने पर सावधान रुख:
- AI team में होने के बावजूद, ठोस वजह न होने पर AI के उपयोग के खिलाफ़ था:
- क्या user problem हल करने का स्पष्ट लक्ष्य है?
- क्या इसे एक simple
if statement से बदला जा सकता है?
- क्या natural language interface वास्तव में सही विकल्प है?
- संबंधित विचार साझा किए:
- मुख्य projects
-
- LLM attention weights का उपयोग करने वाला research:
-
- data science के लिए AI tutor:
- IntelliCode user experience में सुधार:
- data scientists के लिए LLM-based tools:
- प्रेरक blog post:
- मुख्य tools:
- students के लिए LLM-based tools:
- प्रेरक blog post:
- मुख्य tools:
- enterprise copilot बनाने पर research:
- वर्तमान और आगे की गतिविधियाँ
- independent AI tools development:
- Microsoft छोड़ने के बाद personal AI projects में पूरी तरह जुट गया।
- मुख्य tools:
- AI और LLMs पर आधारित विविध projects के माध्यम से innovative solutions विकसित किए, और आज भी AI tools की research और development जारी है
समापन
- ये 25 साल बेहद आनंददायक रहे
- आगे क्या? सिखाना, सीखना और बनाना जारी रखूँगा
1 टिप्पणियां
Hacker News राय
ifstatements ही काफ़ी हैं। यह भी पक्का करना ज़रूरी है कि natural language सही interface है या नहीं