Program sentezi için sözdizimi ağacı diffusion'ı
Genel bakış
- Sorun: Büyük dil modelleri (LLM), kodu aynı anda bir token üreterek oluşturur. Bu süreçte programın yürütme sonucunu gözlemleyen geri bildirim yetersiz kalır.
- Çözüm: Sözdizimi ağacı üzerinde çalışan bir sinirsel diffusion modeli öneriliyor. Görüntü diffusion modellerine benzer şekilde, sözdizimi ağacına uygulanan gürültü tersine çevrilir.
- Yöntem: Kod üretmek yerine tekrar tekrar düzenleme yaparak sözdizimsel geçerlilik korunur. Bu sayede aramayla birleştirmek kolaylaşır.
- Uygulama: Ters grafik görevlerine uygulanarak görüntüler, o görüntüleri üreten programlara dönüştürülür. Aramayla birleştirilerek grafik programları yazılır, yürütme sonuçları kontrol edilir ve hata ayıklama yapılır.
Programa gürültü eklemek ne anlama geliyor?
- Gürültü ekleme: Sözdizimi ağacındaki rastgele bir düğüm seçilir ve bu düğüm doğru türde başka bir düğümle değiştirilir.
- Gürültüyü tersine çevirme: Gürültü eklendikten sonra süreç ters yönde işlenerek özgün duruma geri dönülür.
Arama yoluyla program üretimi
- Arama kullanımı: Model, verilen hedef görüntüyü üretmek için en uygun programı bulmak üzere aramayı kullanır.
- Verimlilik: Yalnızca birkaç arama katmanıyla doğru program bulunabilir.
Alıntı
- Makale: "Diffusion On Syntax Trees For Program Synthesis"
- Yazarlar: Shreyas Kapur, Erik Jenner, Stuart Russell
- Yayımlanma: arXiv, 2024
Teşekkür
- Teknik destek: Kathy Jang, David Wu, Cam Allen, Sam Toyer, Eli Bronstein, Koushik Sen, Pieter Abbeel
Lisans
- Creative Commons Attribution-ShareAlike 4.0 International License: Bu web sitesinin kaynak kodu serbestçe kullanılabilir; sayfanın alt kısmına bir bağlantı eklenmesi gerekir.
GN⁺ görüşü
- İlginç nokta: Programın yürütme sonucunu yansıtarak kodu düzenleme yaklaşımı, mevcut sıralı kod üretim yöntemlerinden daha sezgisel.
- Neden faydalı: Ters grafik görevlerinde yararlıdır ve özellikle elle çizilmiş eskizleri programa dönüştürmede güçlü bir araç olabilir.
- Eleştirel bakış: Gürültü ekleme ve tersine çevirme süreci karmaşık olabilir; gerçek kullanımda performans ve verimlilik için ek doğrulama gerekir.
- İlgili ürün önerisi: Benzer işlevler sunan diğer projeler arasında OpenAI'nin Codex'i gibi kod üretim modelleri bulunur.
- Teknoloji benimseme değerlendirmeleri: Bu teknoloji benimsenirken modelin eğitim verileri ile gerçek uygulama ortamındaki performansı dikkatle incelenmelidir.
1 yorum
Hacker News görüşleri
Racket ve MOOC ipucu üretimi: Racket ile MOOC ipucu üretim yaklaşımının benzer olduğu belirtiliyor. Sözdizimi ağaçlarını dönüştürüp analiz ederek hedef çözüme ulaşma yöntemi kullanılıyor. Bunun modern makine öğrenimi yaklaşımlarıyla birleştirilip birleştirilemeyeceği merak ediliyor.
Genetik algoritmalar ve alt ağaç dönüşümü: 90'larda Koza ve Adami, genetik algoritmaların bir parçası olarak alt ağaç dönüşümünü derinlemesine inceledi. Optimizasyon fonksiyonu biraz farklı.
Program ağacı üretimi: 2000 yılında genetik algoritmalar kullanılarak program ağacı üretimi üzerine bir kaynak olduğu belirtiliyor. Ancak ana içerik eksik.
Markov Chain Monte Carlo: Markov Chain Monte Carlo'nun program sentezinde yeni olmadığı, Josh Tenenbaum'un çalışmalarının hemen akla geldiği söyleniyor.
WebPPL demosu: WebPPL'de 3D uzay gemisi sentezi gibi çeşitli demolar bulunuyor. İlgili kitaplar ve MIT Probabilistic Computing Project yayınları da öneriliyor.
Derleyici/yorumlayıcı optimizasyonu: Bunun derleyici/yorumlayıcı optimizasyonuna nasıl uygulanabileceği merak ediliyor. Assembly seviyesinde çalışan kısımlar analiz edilip optimizasyon çıkarılıp çıkarılamayacağı sorgulanıyor.
Program token'larının değiştirilmesi: Geleneksel yaklaşımlarda rastgele görüntüler üretilip optimizasyon yöntemleri kullanılıyor. Program token'larını değiştirmenin nasıl türevlenebilir olduğu anlaşılması zor bulunuyor.
GitHub ve build araçları entegrasyonu: GitHub'ın genel build araçlarıyla entegre edilebileceği söyleniyor. Tüm llvm-compile edilmiş projelerin derlenip ara temsil üzerinde diffusion model uygulanıp uygulanamayacağı merak ediliyor.
Diffusion model ve ikili dosyalar: Diffusion model'in binary seviyesinde çalışıp çalışamayacağı soruluyor. Bir prompt verildiğinde programın nihai binary'sinin üretilebilip üretilemeyeceği merak ediliyor.
SDF ile entegrasyon: SDF ile entegrasyon görülmek isteniyor.
PDF render hızı: PDF'lerin programatik olarak üretilen çizim komutları nedeniyle yavaş render edildiği söyleniyor. Bunun akademik makale havası verdiği ve özlendiği ifade ediliyor.
Beam search ve ters diffusion: Beam search fikri ilginç bulunuyor. Ters diffusion ile beam search'ün nasıl entegre edildiği merak ediliyor. Ters diffusion adımında m > k düğüm örneklenip yalnızca en iyi k düğümün mü genişletildiği soruluyor.