2 पॉइंट द्वारा GN⁺ 2024-06-05 | 1 टिप्पणियां | WhatsApp पर शेयर करें

प्रोग्राम synthesis के लिए syntax tree diffusion

अवलोकन

  • समस्या: बड़े language models (LLM) कोड को एक बार में एक token बनाते हैं। इस प्रक्रिया में प्रोग्राम के execution result को देखकर मिलने वाला feedback कम होता है।
  • समाधान: syntax tree पर काम करने वाला एक neural diffusion model प्रस्तावित किया गया है। image diffusion models की तरह, यह syntax tree पर लगाए गए noise को उलटकर हटाता है।
  • तरीका: कोड को शुरू से generate करने के बजाय, इसे बार-बार edit किया जाता है ताकि syntactic validity बनी रहे। इससे search के साथ इसे जोड़ना आसान होता है।
  • अनुप्रयोग: इसे inverse graphics कार्यों में लागू किया गया है, जहाँ image को उस image को बनाने वाले प्रोग्राम में बदला जाता है। search के साथ मिलाकर graphics program लिखा जाता है, execution result देखा जाता है, और debug किया जाता है।

प्रोग्राम में noise जोड़ना क्या है?

  • noise जोड़ना: syntax tree के किसी random node को चुना जाता है और उसे सही type के किसी दूसरे node से बदल दिया जाता है।
  • noise reversal: noise जोड़ने के बाद, उसे उलटकर original state में वापस लाया जाता है।

search के ज़रिए प्रोग्राम बनाना

  • search का उपयोग: मॉडल दिए गए target image को बनाने के लिए सबसे अच्छा प्रोग्राम खोजने हेतु search का उपयोग करता है।
  • दक्षता: केवल कुछ search layers के साथ सही प्रोग्राम पाया जा सकता है।

उद्धरण

  • पेपर: "Diffusion On Syntax Trees For Program Synthesis"
  • लेखक: Shreyas Kapur, Erik Jenner, Stuart Russell
  • प्रकाशन: arXiv, 2024

आभार

  • तकनीकी सहयोग: Kathy Jang, David Wu, Cam Allen, Sam Toyer, Eli Bronstein, Koushik Sen, Pieter Abbeel

लाइसेंस

  • Creative Commons Attribution-ShareAlike 4.0 International License: इस वेबसाइट के source code का स्वतंत्र रूप से उपयोग किया जा सकता है, बशर्ते पेज के नीचे एक लिंक जोड़ा जाए।

GN⁺ की राय

  • दिलचस्प बात: प्रोग्राम के execution result को ध्यान में रखकर कोड edit करने का तरीका, पारंपरिक sequential code generation से अधिक सहज लगता है।
  • यह क्यों उपयोगी है: inverse graphics कार्यों में यह उपयोगी है, खासकर हाथ से बने sketch को प्रोग्राम में बदलने के लिए यह एक शक्तिशाली tool हो सकता है।
  • आलोचनात्मक दृष्टि: noise जोड़ने और उसे उलटने की प्रक्रिया जटिल हो सकती है, और वास्तविक उपयोग में performance तथा efficiency पर अतिरिक्त सत्यापन की आवश्यकता है।
  • संबंधित उत्पाद सुझाव: समान प्रकार की क्षमताएँ देने वाले अन्य प्रोजेक्ट्स में OpenAI का Codex जैसे code generation models शामिल हैं।
  • तकनीक अपनाने से पहले विचार: इस तकनीक को अपनाते समय मॉडल के training data और वास्तविक deployment environment में उसके प्रदर्शन की सावधानी से समीक्षा करनी चाहिए।

1 टिप्पणियां

 
GN⁺ 2024-06-05
Hacker News राय
  • Racket और MOOC hint generation: Racket और MOOC hint generation का तरीका मिलता-जुलता है। इसमें syntax tree को बदलकर और विश्लेषित करके target solution तक पहुँचा जाता है। यह जानने की जिज्ञासा है कि क्या इसे आधुनिक machine learning approaches के साथ जोड़ा जा सकता है।

  • Genetic algorithm और subtree mutation: 90 के दशक में Koza और Adami ने genetic algorithm के हिस्से के रूप में subtree mutation का गहराई से अध्ययन किया था। optimization function थोड़ा अलग है।

  • Program tree generation: 2000 में genetic algorithm का उपयोग करके program tree generation पर एक संदर्भ साहित्य मौजूद है। मुख्य सामग्री अनुपस्थित है।

  • Markov Chain Monte Carlo: program synthesis में Markov Chain Monte Carlo नया नहीं है। Josh Tenenbaum का शोध तुरंत याद आता है।

  • WebPPL demo: WebPPL में 3D spaceship synthesis सहित कई demo हैं। संबंधित किताबें और MIT Probabilistic Computing Project के प्रकाशन भी सुझाए गए हैं।

  • Compiler/interpreter optimization: यह कैसे compiler/interpreter optimization पर लागू होगा, इसे लेकर जिज्ञासा है। क्या assembly level पर execution हिस्सों का विश्लेषण करके optimization निकाला जा सकता है, इस पर सवाल है।

  • Program token changes: पारंपरिक approaches में random image बनाई जाती है और optimization methods का उपयोग होता है। program token changes कैसे differentiable हो सकते हैं, यह समझना कठिन है।

  • GitHub और build tool integration: GitHub को सामान्य build tools के साथ integrate किया जा सकता है। यह जिज्ञासा है कि क्या सभी llvm-compiled projects को compile करके intermediate representation पर diffusion model लागू किया जा सकता है।

  • Diffusion model और binary: यह जानने की जिज्ञासा है कि क्या diffusion model binary level पर काम कर सकता है। अगर prompt दिया जाए, तो क्या वह program का final binary generate कर सकता है, इस पर सवाल है।

  • SDF के साथ integration: SDF के साथ integration देखना चाहूँगा।

  • PDF rendering speed: programmatically generated drawing commands की वजह से PDF render होने में धीमा है। इसमें academic paper जैसा एहसास आता है, जो याद आता है।

  • Beam search और reverse diffusion: beam search का विचार दिलचस्प है। reverse diffusion और beam search को कैसे integrate किया जाता है, यह जानने की जिज्ञासा है। क्या reverse diffusion step में m > k nodes sample करके केवल top k nodes को expand किया जाता है?