Bagaimana saya mengambil sampel dari distribusi diskrit (kategorikal) dalam ruang log?

12

Misalkan saya memiliki distribusi diskrit yang ditentukan oleh vektor sehingga kategori akan digambar dengan probabilitas dan seterusnya. Saya kemudian menemukan bahwa beberapa nilai dalam distribusi sangat kecil sehingga mereka melemahkan representasi angka floating point komputer saya, jadi, sebagai kompensasi, saya melakukan semua perhitungan saya dalam ruang-log. Sekarang saya punya log vektor spasi-ruang (\ theta_0), log (\ theta_1), ..., log (\ theta_N) .θ0,θ1,...,θN0θ0log(θ0),log(θ1),...,log(θN)

Apakah mungkin untuk mengambil sampel dari distribusi sedemikian rupa sehingga probabilitas asli tahan (kategori i digambar dengan probabilitas θi ) tetapi tanpa pernah meninggalkan ruang log? Dengan kata lain, bagaimana saya mengambil sampel dari distribusi ini tanpa arus bawah?

Josh Hansen
sumber

Jawaban:

15

Dimungkinkan untuk mengambil sampel dari distribusi kategoris yang diberikan probabilitas log tanpa meninggalkan ruang log menggunakan trik Gumbel-max . Idenya adalah bahwa jika Anda diberi probabilitas log yang tidak normal α1,,αk , itu dapat diterjemahkan ke probabilitas yang tepat menggunakan fungsi softmax

pi=exp(αi)jexp(αj)

kemudian untuk mengambil sampel dari distribusi tersebut, Anda dapat menggunakan fakta bahwa jika g1,,gkG(0) adalah sampel independen yang diambil dari distribusi Gumbel standar yang ditentukan oleh lokasi m ,

F(Gg)=exp(exp(g+m))

maka bisa ditunjukkan (lihat referensi di bawah) itu

argmaxi{gi+αi}exp(αi)jexp(αj)maxi{gi+αi}G(logiexp{αi})

dan kita bisa ambil

z=argmaxi{gi+αi}

sebagai sampel dari distribusi kategorikal yang oleh . Pendekatan ini dijelaskan secara lebih rinci dalam entri blog oleh Ryan Adams dan Laurent Dinh , apalagi Chris J. Maddison, Daniel Tarlow dan Tom Minka memberikan speach ( slide ) pada konferensi Neural Information Processing Systems (2014) dan menulis makalah berjudul A * Pengambilan sampel yang menggeneralisasi ide-ide tersebut (lihat juga Maddison, 2016; Maddison, Mnih dan Teh, 2016; Jang dan Poole, 2016), yang merujuk pada Yellott (1977) menyebut dirinya sebagai salah satu di antara mereka yang pertama kali menggambarkan properti ini.p1,,pk

Sangat mudah untuk mengimplementasikannya menggunakan inverse transform sampling dengan mengambil mana diambil dari distribusi yang seragam pada . Ini tentu saja bukan algoritma yang paling efisien waktu untuk pengambilan sampel dari distribusi kategorikal, tetapi memungkinkan Anda untuk tetap berada di ruang log apa yang mungkin menjadi keuntungan dalam beberapa skenario.u i ( 0 , 1 )gi=log(logui)ui(0,1)


Maddison, CJ, Tarlow, D., & Minka, T. (2014). Pengambilan sampel *. [Dalam:] Kemajuan dalam Sistem Pemrosesan Informasi Saraf Tiruan (hlm. 3086-3094).

Yellott, JI (1977). Hubungan antara aksioma pilihan Luce, teori penilaian komparatif Thurstone, dan distribusi eksponensial ganda. Jurnal Psikologi Matematika, 15 (2), 109-144.

Maddison, CJ, Mnih, A., & Teh, YW (2016). Distribusi Beton: Relaksasi Berkelanjutan dari Variabel Acak Acak. arXiv preprint arXiv: 1611.00712.

Jang, E., Gu, S., & Poole, B. (2016). Reparameterisasi Kategorikal dengan Gumbel-Softmax. arXiv preprint arXiv: 1611.01144.

Maddison, CJ (2016). Model proses Poisson untuk Monte Carlo. arXiv preprint arXiv: 1602.05986.

Tim
sumber
5

Berikut adalah salah satu cara umum untuk menghindari underflow / overflow.

Biarkan .m=maxilog(θi)

Biarkan .θi=exp(log(θi)m)

Anda dapat mengambil sampel dari .θ=[θ1,θ2,...]

Siddharth Gopal
sumber
1
Ini berfungsi selama perbedaan antara satu nilai dan max tidak terlalu besar --- ketika itu terjadi, expdapat kehilangan presisi, yang mengarah ke distribusi seperti [1.0, 3.45e-66, 0.0, 7.54e-121] . Saya ingin bertahan untuk beberapa jawaban yang kuat bahkan dalam kasus itu. Tapi untuk saat ini, saya mengangkat jawaban Anda.
Josh Hansen