19 पॉइंट द्वारा GN⁺ 2025-01-07 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • 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 पूरी की।
  • संबंधित सामग्री:
    1. paper: developers जानकारी कैसे खोजते हैं, इस पर data analysis
      Foraging and Navigations, Fundamentally: Developers Predictions of Value and Cost (PDF))
    2. 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:
      1. beginner programmers के program behavior संबंधी misunderstandings को पहचानने के लिए program analysis techniques और predictive models का उपयोग।
      2. programmer को disturb किए बिना misunderstandings को ठीक करना और logic समझाना।
      3. अनचाहे 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:
  • उपलब्धियाँ और सीमाएँ:
    • project को grant मिला और इसकी सफल शुरुआत हुई, लेकिन research पूरी गति पकड़ने से पहले ही professor पद से इस्तीफ़ा दे दिया।
  • यह दौर intelligent user interfaces पर research को ठोस रूप देने और बड़ी vision डिजाइन करने का एक महत्वपूर्ण turning point था

program synthesis और large language models (LLMs): Microsoft में अनुभव

समापन

  • ये 25 साल बेहद आनंददायक रहे
  • आगे क्या? सिखाना, सीखना और बनाना जारी रखूँगा

1 टिप्पणियां

 
GN⁺ 2025-01-07
Hacker News राय
  • मैं AI टीम में था, लेकिन जब तक कोई सचमुच ठोस वजह न हो, AI लागू करने से बचता था। यह सोचना ज़रूरी था कि क्या हम यूज़र की समस्या हल कर रहे हैं, क्या सच में LLM की ज़रूरत है, या फिर कुछ if statements ही काफ़ी हैं। यह भी पक्का करना ज़रूरी है कि natural language सही interface है या नहीं
    • AI क्षेत्र में यह व्यावहारिक approach ताज़गीभरा लगता है। मुझे एक ऐसा टूल बनाने का अनुभव है जिसमें एक simple regression model ने neural network से बेहतर प्रदर्शन किया था। AI पर पूरी तरह दांव न लगाने को लेकर टीम की नाराज़गी से बचना मुश्किल था
  • मैंने 14 साल तक इसी तरह की यात्रा की, और हमेशा सोचता रहा कि आज यह कितना अलग होता
    • हम industry के साथ-साथ बढ़े और धीरे-धीरे ज़्यादा जटिल चीज़ें सीख सके। आज graduate होने वाले छात्र अपनी पहली नौकरी में ही कई दशकों की जटिलता का सामना करते हैं
  • मैंने हाल ही में किसी को UTK छोड़ते देखा, और उसके लिखे ब्लॉग पोस्ट ने मुझे graduate school के बाद academia में जाने के बारे में फिर से सोचने पर मजबूर किया
  • विज्ञापनों और pop-up से भरा न होने वाला web page ताज़गीभरा लगता है। इसमें साफ़-सुथरा, अच्छी तरह व्यवस्थित text और simple structure है
  • बहुत से लोगों के लिए AI, हैरान कर देने वाली चीज़ें बनाने की एक मज़ेदार यात्रा है। मैं मानता हूँ कि इसके नतीजे चौंकाने वाले हैं। लेकिन यह दुखद है कि scientists अपने काम के समाज पर पड़ने वाले बड़े असर के बारे में नहीं सोचते। जैसे-जैसे उनकी सामाजिक स्थिति बढ़ती है, उनकी रचनाएँ समाज की संरचना को मूल रूप से बदल देती हैं। AI खतरनाक तत्वों में से एक है, और बड़ी कंपनियों का intelligence का महिमामंडन करके लोगों को आकर्षित करना विनाश के संकेत जैसा है