Apa itu pemrograman probabilistik?

10

Selama setahun terakhir, saya telah banyak mendengar tentang kerangka kerja Programming Probabilistic (PP) seperti PyMC3 dan Stan , dan betapa hebatnya PP. Dan hari ini, seseorang membagikan tautan ini kepada saya: Pyro: Bahasa Pemrograman Probabilitas Jauh

Namun, saya tidak benar-benar mengikuti apa yang istimewa tentang itu karena rasanya seperti apa pun yang dapat Anda lakukan dalam PP yang dapat Anda lakukan dalam bahasa tujuan umum lainnya. Saya yakin ada aspek teknis tentang PP yang membuatnya menarik (mis. Komputasi paralel), tetapi selain itu, apakah PP benar-benar berbeda dari bahasa lain?

Pertanyaan: Saya bertanya-tanya apakah ada konsensus tentang apa itu PP dan bagaimana perbedaannya dari perangkat lunak yang berfokus pada statistik lainnya seperti R, Matlab, Mathematica. Perlu dicatat bahwa PyMC3dan Stanlebih difokuskan pada analisis Bayesian.

Melakukan sedikit riset di Google, saya menemukan dua definisi berikut. Yang pertama lebih abstrak, dan yang kedua tentang karakteristik teknis PP.

1.2. Pemrograman Probabilistik Adalah

Sebaliknya, pemrograman probabilistik adalah alat untuk pemodelan statistik. Idenya adalah untuk meminjam pelajaran dari dunia bahasa pemrograman dan menerapkannya pada masalah merancang dan menggunakan model statistik. Para ahli sudah membangun model statistik — dengan tangan, dalam notasi matematis di atas kertas — tetapi ini adalah proses khusus pakar yang sulit didukung dengan penalaran mekanis. Wawasan utama dalam PP adalah bahwa pemodelan statistik dapat, ketika Anda melakukannya dengan cukup, mulai terasa seperti pemrograman. Jika kita membuat lompatan dan benar-benar menggunakan bahasa nyata untuk pemodelan kita, banyak alat baru menjadi layak. Kita dapat mulai mengotomatiskan tugas-tugas yang digunakan untuk membenarkan penulisan makalah untuk setiap contoh.

Berikut definisi kedua : bahasa pemrograman probabilistik adalah bahasa pemrograman biasa dengan randdan banyak sekali alat terkait yang membantu Anda memahami perilaku statistik program.

Kedua definisi ini akurat. Mereka hanya menekankan sudut berbeda pada ide inti yang sama. Mana yang masuk akal bagi Anda akan tergantung pada apa yang ingin Anda gunakan untuk PP. Tapi jangan terganggu oleh kenyataan bahwa program PPL sangat mirip dengan implementasi perangkat lunak biasa, di mana tujuannya adalah untuk menjalankan program dan mendapatkan semacam output. Tujuan dalam PP adalah analisis, bukan eksekusi (penekanan ditambahkan).

- Pemrograman Probabilistik

Saya ingin tahu apakah komunitas statistik umum setuju dengan dua definisi PP ini, dan jika ada karakteristik lain definisi ini mungkin hilang.

Jon
sumber
1
Saya akan setuju dengan definisi pertama: PP membuat Anda mendefinisikan model statistik dan menangani bagian simulasi sendiri. Contoh selain Stan adalah BUGS, Gereja, Anglikan. R bukan PP.
Xi'an
@ Xi'an, apakah Anda akan mengatakan bahwa PP tampaknya lebih fokus pada pemodelan statistik Bayesian? Jika demikian, apakah PP dimaksudkan hanya untuk mendukung pendekatan Bayesian?
Jon
Fokusnya adalah pada "pemodelan hierarki". Ini secara inheren nyaman untuk metode Bayesian. Meskipun ada interpretasi yang sering kurang alami juga.
Knrumsey

Jawaban:

2

Pemrograman Probabilistik adalah teknik untuk mendefinisikan model statistik. Tidak seperti mendefinisikan model dengan fungsi distribusi probabilitasnya, atau menggambar grafik, Anda mengekspresikan model dalam bahasa pemrograman, biasanya sebagai sampler maju.

Kesimpulan otomatis dari spesifikasi model adalah fitur khas alat pemrograman probabilistik, tetapi itu tidak penting, dan tidak perlu menjadi Bayesian. Ada berbagai hal berguna yang dapat Anda lakukan dengan model yang ditentukan sebagai program probabilistik. Misalnya, makalah yang Mendapat Fungsi Kerapatan Probabilitas dari Program Fungsional Probabilistik menggambarkan suatu alat yang menganalisis program probabilistik dan menghitung fungsi distribusi probabilitasnya. Makalah Mendeteksi Parameter Simetri dalam Model Probabilistik menganalisis program probabilistik untuk simetri parameter. Jenis pekerjaan ini juga termasuk dalam program probabilistik.

Tom Minka
sumber