
Pengarang: Kevin Berlemont, PhD
Awalnya diterbitkan di Towards AI the World’s Leading AI and Technology News and Media Company. Jika Anda sedang membangun produk atau layanan terkait AI, kami mengundang Anda untuk mempertimbangkan untuk menjadi sponsor AI. Di Towards AI, kami membantu menskalakan AI dan startup teknologi. Biarkan kami membantu Anda melepaskan teknologi Anda kepada massa.
Gambar yang dihasilkan menggunakan judul sebagai prompt pada Difusi Stabil
Anda baru saja mendapatkan satu set data yang bagus, misalnya, harga real estat dengan karakteristik rumah. Sebuah pertanyaan yang bisa Anda tanyakan pada diri sendiri adalah: Bagaimana cara memprediksi harga rumah berdasarkan karakteristiknya?
Model pertama yang terlintas dalam pikiran adalah model linier yang mengambil karakteristik sebagai input. Katakanlah kita memiliki akses ke karakteristik berikut:
Rekaman persegi rumah Jumlah kamar tidur Lokalisasi Tahun pembangunan
Masalah memprediksi harga rumah dengan kumpulan data seperti itu telah dipelajari secara intensif (https://www.kaggle.com/c/house-prices-advanced-regression-techniques), dan dimungkinkan untuk mendapatkan model yang akurat. Saya menggunakan kerangka kerja ini sebagai model mainan untuk menyoroti betapa mudahnya parameter dapat dikorelasikan dalam sebuah model. Ukuran rumah dan jumlah kamar tidur berkorelasi, tetapi tidak ada yang benar-benar dapat digunakan untuk menggantikan yang lain dalam estimasi, sehingga estimasi parameter model menjadi sulit. Secara khusus, metode pengambilan sampel seperti Markov Chains Monte-Carlo dapat menjadi tidak efisien ketika target distribusi parameter tidak diketahui. Jika ini adalah masalah yang mungkin tidak muncul saat memperkirakan harga rumah, maka perlu diingat saat memasang model yang lebih rumit.
Dalam posting ini, saya akan menjelaskan metode pengambilan sampel yang paling banyak digunakan, Markov Chains Monte-Carlo (MCMC), dan menyoroti alasan potensial untuk ketidakefektifan metode ini ketika parameter dikorelasikan. Pada bagian kedua, saya akan menjelaskan algoritma pengambilan sampel baru yang tidak terpengaruh oleh korelasi antar parameter, evolusi diferensial MCMC (DE-MCMC). Selain itu, saya akan memberikan beberapa contoh kode Python untuk kedua metode tersebut.
Rantai Markov Monte-Carlo
MCMC adalah metode pengambilan sampel yang telah banyak digunakan dalam statistik Bayesian, terutama ketika memperkirakan prior posterior. Dalam satu kalimat, MCMC dapat dianggap sebagai proses random walk yang digunakan untuk memperkirakan distribusi target (distribusi parameter). Metropolis-Hastings adalah algoritma yang paling banyak digunakan dalam kelas MCMC [1].
Mari kita P = (p1, p2,…) vektor parameter model kita. Kemudian, algoritme mengambil nilai awal P1 untuk parameter dan mengambil sampel nilai kandidat P* menggunakan distribusi proposal P =* K(P1). Salah satu distribusi proposal tipikal biasanya adalah distribusi Gaussian yang berpusat di sekitar P1. Setelah itu, kandidat P* diterima dengan probabilitas:
Mari kita menguraikan rumus ini. M(P*) mewakili distribusi target. Misalnya, dalam kasus pemasangan model, distribusi target dapat berupa eksponensial dari fungsi kesalahan. Menggunakan fungsi eksponensial memungkinkan peralihan dari fungsi kesalahan ke distribusi probabilitas. q(Pt|P*) mewakili densitas distribusi proposal yang dievaluasi pada Pt dengan parameter P*. Dengan kata lain, ini mewakili seberapa besar kemungkinan untuk memilih Pt jika kita mengambil sampel dari P*. Istilah ini diperlukan untuk stasioneritas algoritma.
Jika proposal diterima, maka titik awal rantai yang baru adalah P*. Jika tidak, rantai tidak akan bergerak. Proses ini berlanjut sampai jumlah sampel yang ditentukan telah tercapai. Proses ini dapat diartikan sebagai konvergen ke proses pengambilan sampel distribusi target dan, dengan demikian, memperkirakan parameter P.
Di bawah ini adalah contoh kode Python menggunakan paket mc3 (dimodifikasi dari tutorialnya) untuk mensimulasikan algoritma MCMC agar sesuai dengan parameter model kuadrat:
https://medium.com/media/1e4fd0857b6008fd9eb520cdd89d8393/href
Sekarang, jika kita kembali ke kasus di mana beberapa parameter kita berkorelasi. Jika distribusi proposal tidak secara eksplisit memperhitungkan korelasi antar-parameter, maka banyak nilai kandidat tidak akan berada dalam distribusi target. Misalnya, pada gambar di bawah, awan abu-abu mewakili distribusi fiktif dari dua parameter. Lingkaran mewakili distribusi proposal. Sebagian besar lingkaran terletak di luar distribusi abu-abu.
Langkah waktu MCMC. Lingkaran mewakili distribusi kandidat. (Gambar oleh saya)
Ini akan menyebabkan tingkat penolakan yang substansial, dan MCMC akan sangat memakan waktu. Jadi, mungkin tidak selalu tepat untuk menggunakan teknik Bayesian ini agar sesuai dengan model Anda. Kabar baiknya adalah bahwa ada kelas algoritme yang dapat menangani masalah berdimensi tinggi dan sangat berkorelasi: MCMC berbasis populasi.
Rantai Markov Evolusi Difusi Monte-Carlo
Evolusi diferensial dibawa ke algoritma MCMC pada tahun 2006 [2]. Ide di balik metode ini adalah sebagai berikut. Daripada menambahkan noise ke nilai kandidat saat ini untuk menghasilkan langkah berikutnya, ia menggunakan beberapa rantai yang berinteraksi untuk menghasilkan nilai kandidat. Ketika rantai memiliki status yang berbeda, mereka akan digunakan untuk menghasilkan proposal baru untuk rantai lain. Atau dengan kata lain, nilai kandidat dari satu rantai didasarkan pada beberapa kombinasi berbobot dari nilai rantai lainnya.
Kombinasi nilai dilakukan dengan cara berikut. P_k mewakili keadaan rantai k saat ini. Kemudian nilai kandidat, P*, dibangkitkan menggunakan perbedaan antara keadaan dua rantai, dipilih secara acak, P_m dan P_n. Singkatnya, prosesnya adalah sebagai berikut:
Dimana faktor mewakili tingkat lompatan. Tingkat penerimaan kandidat baru mirip dengan algoritma MCMC, menggunakan, misalnya, aturan Metropolis-Hastings. Aturan praktis untuk menggunakan tingkat lompatan adalah:
dengan d jumlah dimensi parameter. Algoritma DE-MCMC direpresentasikan pada gambar di bawah ini:
Contoh langkah DE-MCMC (Gambar oleh saya)
Mengapa DE-MCMC efisien dalam pengambilan sampel di seluruh parameter yang berkorelasi?
Rantai MCMC yang berbeda digunakan untuk menginformasikan status dalam satu rantai. Dengan demikian, korelasi antar rantai (maka korelasi antar sampel) digunakan secara langsung untuk menginformasikan status rantai. Menggunakan perbedaan antara rantai untuk menghasilkan nilai kandidat baru memungkinkan cara alami untuk memperhitungkan korelasi antar parameter. Selain itu, nilai default untuk parameter rantai bekerja dengan baik untuk berbagai masalah, menjadikannya algoritme yang baik untuk masalah berdimensi tinggi.
Algoritma DE-MCMC dapat diimplementasikan menggunakan paket MC3, dengan kode sampel yang mirip dengan yang sebelumnya, dengan menetapkan “demc” sebagai algoritma pengambilan sampel MCMC. Ini mengarah pada kecocokan berikut dari model kuadrat sebelumnya:
Fit model kuadrat menggunakan DE-MCMC
Menggunakan paket sebelumnya untuk menjalankan algoritme MCMC Anda, dimungkinkan untuk mendapatkan akses mudah ke distribusi posterior parameter, korelasi berpasangan, dan informasi lebih lanjut. Jika Anda ingin melihat lebih jauh, Anda dapat membaca tutorial mereka di https://mc3.readthedocs.io/en/latest/mcmc_tutorial.html#sampler-algorithm
Singkatnya, jika algoritma MCMC dan Bayesian benar-benar efisien dalam menyesuaikan parameter untuk berbagai model, dimensi tinggi dan korelasi dapat menghasilkan waktu komputasi yang tak terbatas. Saat itulah algoritma evolusi berguna. Menggunakan algoritma MCMC evolusi diferensial, rantai yang berbeda dapat menginformasikan satu sama lain tentang korelasi parameter, sehingga membuat konvergensi algoritma lebih cepat. Jadi, lain kali Anda memiliki korelasi antara parameter model Anda, coba tambahkan DE-MCMC ke set alat Bayesian Anda.
Referensi
[1] Nedelman, JR Ulasan buku: “Bayesian Data Analysis,” Edisi Kedua oleh A. Gelman, JB Carlin, HS Stern, dan DB Rubin Chapman & Hall/CRC, 2004. Statistik Komputasi 20, 655–657 (2005). https://doi.org/10.1007/BF02741321
[2] Braak, Cajo JF. “Versi Markov Chain Monte Carlo dari algoritma genetika Evolusi Diferensial: komputasi Bayesian yang mudah untuk ruang parameter nyata.” Statistik dan Komputasi 16 (2006): 239–249.
Parameter Model Anda Berkorelasi. Sekarang apa? awalnya diterbitkan di Towards AI on Medium, di mana orang-orang melanjutkan percakapan dengan menyoroti dan menanggapi cerita ini.
Diterbitkan melalui Menuju AI