Memperbarui bias dengan RBM (Mesin Boltzmann Terbatas)

8

Saya sangat baru di RBM, mencoba menulis program RBM sekarang. Maaf jika ini pertanyaan konyol dan / atau sudah dijawab di sini.

Saya telah membaca beberapa artikel online, dan pertanyaan di sini, tetapi saya tidak dapat menemukan apa pun tentang cara memperbarui bias (atau bobot bias). Saya telah membaca tentang pengaturannya pada awalnya. Referensi sekilas yang harus diperbarui. Geoff Hinton menyebutkan bias, tentu saja, dan fitur itu ada dalam persamaannya, (Saya sudah membaca beberapa makalahnya, melihat beberapa presentasi video) tetapi saya tidak dapat menemukan penyebutan dalam makalahnya tentang bias yang diubah setelah disetel. , atau bagaimana / kapan / mengapa melakukannya. Saya pasti melewatkan sesuatu!

Makalah Edwin Chen direkomendasikan di sini: http://blog.echen.me/2011/07/18/introduction-to-restricted-boltzmann-machines/ Dia tidak menyebutkan cara memperbarui / 'mempelajari' bias; mereka diubah dalam programnya tetapi saya tidak mengerti kodenya. (Dia memiliki meja yang memberikan bobot yang diperbarui yang sepertinya tidak benar - anehnya memberikan bobot bias-bias, apa pun itu bisa berarti.)

Um, jadi saya tidak yakin mengapa ini sangat sulit untuk menemukan bahan !! Terima kasih atas bantuannya.

Adam P
sumber
Lihat di sini: image.diku.dk/igel/paper/AItRBM-proof.pdf di bagian 4.1 (untuk turunan dari kemungkinan wrt syarat bias) dan 5 (untuk perkiraan algoritma pemasangan).
shadowtalker
Terima kasih banyak! Yah, sebagian besar matematika jauh di atas kepala saya, tapi saya mengerti baris tentang cara memperbarui bias pada hal. 28 :-) dan itu akan bagus untuk dimiliki ketika saya ingin menggali lebih dalam ke dalam teori. ps saya membuatnya bekerja dengan baik hari ini tanpa unit bias atau bobot sama sekali. (Smolenksy yang menemukan mereka memanggil mereka Harmonium, nama yang jauh lebih bagus, saya pikir saya akan memanggil mereka itu.)
Adam P
Senang mendengarnya! Saya sarankan menuliskan apa yang Anda temukan dan menjawab pertanyaan Anda sendiri di sini. Dengan cara itu orang lain dapat mencari di sini dan menemukannya dengan mudah (komentar tidak dicari, hanya pertanyaan dan jawaban)
shadowtalker
Saya juga bertaruh jika Anda benar-benar membaca dengan cermat matematika Anda akan menemukan itu tidak begitu rumit. Ini benar-benar hanya sekelompok turunan. Banyak waktu mereka hanya membuang banyak pada halaman sekaligus dan melewatkan langkah-langkah, tetapi makalah ini biasanya tidak begitu esoteris kecuali ketika membuktikan hal-hal seperti teorema keberadaan dan konvergensi
shadowtalker

Jawaban:

5

TLDR

Untuk -langkah Contrastive Divergence, perbarui bias terlihat , berdasarkan vektor data menggunakan:nbjd

bj(t)bj(t1)+η(djv^j(n))

Perbarui bias tersembunyi menggunakan:hi

ci(t)ci(t1)+η(h^i(0)h^i(n))

Di mana dan adalah bias setelah memperbarui nomor t, adalah tingkat pembelajaran, adalah komponen dari vektor data, dan di mana dan adalah probabilitas unit tersembunyi dan unit terlihat menjadi aktif setelah RBM telah terpapar ke data dan dijalankan untuk langkah . Ini mengasumsikan ukuran minibatch 1; untuk ukuran minibatch praktis , rata-rata pembaruan yang diperoleh dari vektor data .bj(t)ci(t)ηdjjh^j(n)v^j(n)ijnkk


Penjelasan lengkap

Saya memiliki masalah yang sama. Cara yang baik untuk memikirkannya adalah bahwa bias itu sendiri hanyalah bobot. Seringkali dalam model jaringan saraf, bias suatu unit dimodelkan sebagai bobot tautan yang menghubungkan unit tersebut ke unit "selalu aktif", yaitu unit imajiner yang aktivasinya selalu 1.

Dalam kasus RBM, itu berarti bahwa Anda berpikir bahwa ada satu unit ekstra terlihat yang outputnya selalu 1. Unit terlihat ini menempel pada masing-masing unit tersembunyi (seperti halnya unit lain yang terlihat), dan bobot koneksi ini. adalah bias dari masing-masing unit tersembunyi. Demikian pula, bias dari unit terlihat dapat dimodelkan dengan membayangkan unit tersembunyi tambahan, yang nilainya selalu satu, dan yang menghubungkan ke masing-masing unit yang terlihat, dengan bobot koneksi ini menjadi bias yang terlihat.

Anda bahkan dapat mengimplementasikan RBM Anda dengan cara ini, tetapi saya tidak berpikir orang biasanya melakukan itu. Intinya adalah, dengan memikirkannya dengan cara ini, Anda dapat menggunakan (pada dasarnya) aturan pembaruan yang sama untuk bias seperti yang Anda lakukan untuk bobot, karena bias hanyalah bobot yang terhubung ke unit "selalu aktif".

Mari kita konkret. Saya akan menuliskan aturan pembaruan Contrastive Divergence -step yang biasa , mengabaikan regularisasi untuk kesederhanaan. Juga untuk kesederhanaan, aturan pembaruan ini adalah untuk "minibatch" dari 1 vektor data. Pembaruan untuk minibatch dengan vektor adalah pembaruan rata-rata di atas semua vektor . Aturan pembaruan adalah:nkk

Wi,j(t)Wi,j(t1)+η(h^i(0)djh^i(n)vj(n))
mana:
  • Wi,j(t) adalah bobot yang menghubungkan unit yang terlihat ke unit tersembunyi setelah nomor pembaruanvjhit
  • η adalah tingkat belajar
  • h^i(n) adalah probabilitas unit tersembunyi aktif setelah mesin telah terkena vektor data dan berevolusi untuk langkah . idn
    • yang berarti bahwa hanyalah aktivasi unit tersembunyi sebagai respons langsung terhadap vektor datah^i(0)i
  • dj adalah komponen dari vektor datajd
  • vj(n) adalah keadaan unit yang terlihat begitu mesin telah terkena vektor data dan berevolusi untuk langkah .jn

(Beberapa orang menggunakan untuk mengindeks unit yang terlihat dan untuk mengindeks unit yang tersembunyi, tetapi masih menulis --- itu tidak masalah selama Anda mengalikan nilai yang benar bersama-sama.)ijWi,j

Berhati-hatilah untuk membedakan "keadaan" suatu unit, yang dilambangkan dengan atau , dan "aktivasi" suatu unit, dilambangkan atau . The state unit adalah 0 atau 1, sedangkan aktivasi adalah setiap bilangan real antara 0 dan 1. Jika aktivasi adalah 0,8, maka negara akan cenderung 1, tetapi 20% dari waktu itu akan menjadi 0.hi(n)vj(n)h^i(n)v^i(n)

Dengan memperlakukan bias sebagai bobot untuk unit "selalu aktif", Anda akan menemukan bahwa persamaan di atas menyederhanakan persamaan yang diberikan untuk pembaruan bias di bawah " TLDR ". Namun, ada sedikit perbedaan dalam pembaruan untuk bias yang terlihat: di sini aktivasi yang terlihat digunakan sebagai ganti keadaan . Aktivasi memiliki nilai yang diharapkan sama, tetapi memiliki varians lebih rendah dari negara, jadi ini mengurangi noise dalam sinyal pembelajaran. Lihat panduan ini untuk diskusi singkat tentang kapan menggunakan aktivasi alih-alih keadaan diinginkan.§3

Edward Newell
sumber
Edward Newell Terima kasih banyak atas penjelasan yang jelas! Kebetulan Anda memiliki kode MATLAB untuk contoh ini (seperti yang dijelaskan dalam blog Edwin Chan) dan dapatkah Anda berbagi?
Bill Ancalagon the black
Senang itu membantu. Sayangnya saya hanya memiliki implementasi python. Dan, pada saat ini, implementasi saya berbeda dari yang di atas (saya sedang bereksperimen dengan aturan pembaruan yang berbeda ...). Semoga berhasil!
Edward Newell