2 poin oleh GN⁺ 2024-06-05 | 1 komentar | Bagikan ke WhatsApp

Difusi Pohon Sintaks untuk Sintesis Program

Ikhtisar

  • Masalah: Large Language Model (LLM) menghasilkan kode satu token pada satu waktu. Dalam proses ini, umpan balik dari hasil eksekusi program masih kurang.
  • Solusi: Mengusulkan model difusi neural yang bekerja pada pohon sintaks. Mirip dengan model difusi gambar, model ini membalikkan noise yang diterapkan pada pohon sintaks.
  • Metode: Alih-alih menghasilkan kode, model ini melakukan pengeditan berulang sambil mempertahankan validitas sintaks. Dengan demikian, metode ini mudah digabungkan dengan pencarian.
  • Aplikasi: Diterapkan pada tugas inverse graphics untuk mengubah gambar menjadi program yang menghasilkan gambar tersebut. Dikombinasikan dengan pencarian untuk menulis program grafis, memeriksa hasil eksekusi, dan melakukan debugging.

Apa itu menambahkan noise ke program?

  • Menambahkan noise: Memilih node acak pada pohon sintaks dan mengganti node tersebut dengan node lain bertipe yang benar.
  • Membalikkan noise: Setelah menambahkan noise, prosesnya dibalik untuk mengembalikannya ke keadaan semula.

Pembuatan program melalui pencarian

  • Menggunakan pencarian: Model menggunakan pencarian untuk menemukan program terbaik yang dapat menghasilkan gambar target yang diberikan.
  • Efisiensi: Program yang benar dapat ditemukan hanya dengan beberapa lapisan pencarian.

Kutipan

  • Makalah: "Diffusion On Syntax Trees For Program Synthesis"
  • Penulis: Shreyas Kapur, Erik Jenner, Stuart Russell
  • Publikasi: arXiv, 2024

Ucapan terima kasih

  • Dukungan teknis: Kathy Jang, David Wu, Cam Allen, Sam Toyer, Eli Bronstein, Koushik Sen, Pieter Abbeel

Lisensi

  • Creative Commons Attribution-ShareAlike 4.0 International License: Kode sumber situs web ini dapat digunakan secara bebas, dan tautan harus ditambahkan di bagian bawah halaman.

Opini GN⁺

  • Hal yang menarik: Cara mengedit kode dengan merefleksikan hasil eksekusi program terasa lebih intuitif dibanding pendekatan pembuatan kode sekuensial yang ada.
  • Mengapa ini membantu: Berguna untuk tugas inverse graphics, dan khususnya bisa menjadi alat yang kuat untuk mengubah sketsa tangan menjadi program.
  • Sudut pandang kritis: Proses menambahkan dan membalikkan noise bisa kompleks, dan perlu verifikasi tambahan terkait kinerja serta efisiensi dalam penerapan nyata.
  • Rekomendasi produk terkait: Proyek lain dengan fungsi serupa mencakup model pembuatan kode seperti Codex dari OpenAI.
  • Pertimbangan adopsi teknologi: Saat mengadopsi teknologi ini, data pelatihan model dan performa di lingkungan penerapan nyata perlu ditinjau dengan saksama.

1 komentar

 
GN⁺ 2024-06-05
Komentar Hacker News
  • Racket dan pembuatan petunjuk MOOC: Racket dan pendekatan pembuatan petunjuk MOOC tampak serupa. Caranya adalah dengan memodifikasi dan menganalisis pohon sintaks untuk mencapai solusi target. Menarik apakah ini bisa digabungkan dengan pendekatan machine learning modern.

  • Algoritme genetika dan transformasi subtree: Pada tahun 90-an, Koza dan Adami banyak meneliti transformasi subtree sebagai bagian dari algoritme genetika. Fungsi optimasinya sedikit berbeda.

  • Pembuatan pohon program: Ada referensi pustaka tentang pembuatan pohon program menggunakan algoritme genetika dari tahun 2000. Isi utamanya tidak ada.

  • Markov Chain Monte Carlo: Markov Chain Monte Carlo bukan hal baru dalam sintesis program. Riset Josh Tenenbaum langsung teringat.

  • Demo WebPPL: Ada berbagai demo di WebPPL, termasuk sintesis pesawat luar angkasa 3D. Buku terkait dan publikasi dari MIT Probabilistic Computing Project juga direkomendasikan.

  • Optimisasi compiler/interpreter: Menarik bagaimana ini bisa diterapkan pada optimisasi compiler/interpreter. Apakah mungkin menganalisis bagian eksekusi di level assembly dan menghasilkan optimisasi?

  • Perubahan token program: Dalam pendekatan tradisional, gambar acak dibuat lalu metode optimisasi digunakan. Sulit memahami bagaimana perubahan token program bisa dibuat terdiferensialkan.

  • Integrasi GitHub dan build tool: GitHub bisa diintegrasikan dengan build tool umum. Menarik apakah semua proyek yang dikompilasi dengan llvm bisa dikompilasi lalu model difusi diterapkan pada intermediate representation.

  • Model difusi dan biner: Menarik apakah model difusi bisa bekerja di level biner. Jika diberi prompt, apakah ia bisa menghasilkan biner akhir sebuah program?

  • Integrasi dengan SDF: Ingin melihat integrasi dengan SDF.

  • Kecepatan rendering PDF: PDF lambat dirender karena perintah gambar yang dibuat secara programatik. Rasanya seperti makalah akademik lama, jadi terasa nostalgik.

  • Beam search dan reverse diffusion: Gagasan beam search menarik. Ingin tahu bagaimana reverse diffusion dan beam search diintegrasikan. Apakah pada tahap reverse diffusion dilakukan sampling m > k node lalu hanya k node teratas yang diperluas?