RBM'ler ilginç bir canavar. Sorunuzu cevaplamak ve hafızamı onlara aktarmak için, RBM'leri türeteceğim ve türev yoluyla konuşacağım. Olasılık konusunda kafanız karıştığından bahsettiniz, bu yüzden türetim, olasılığı en üst düzeye çıkarmaya çalışmak açısından olacaktır. Öyleyse başlayalım.
RBM'ler görünür ve gizli iki farklı nöron seti içerir, bunları sırasıyla ve h olarak göstereceğim . V ve h'nin belirli bir yapılandırması göz önüne alındığında , olasılık uzayını eşleriz.vhvh
p(v,h)=e−E(v,h)Z
Tanımlanacak birkaç şey daha var. Belirli bir konfigürasyondan olasılık uzayına eşlemek için kullandığımız vekil fonksiyona enerji fonksiyonu denir . Z sabiti aslında olasılık boşluğa eşleme emin olmak için bir normalizasyon faktördür. Şimdi gerçekten aradığımız şeye bakalım; bir dizi görünür nöron olasılığı, başka bir deyişle, verilerimizin olasılığı.
Z = ∑ v ∈ V ∑ h ∈ H e - E ( v , h ) p ( v )E(v,h)Z
Z=∑v∈V∑h∈He−E(v,h)
p(v)=∑h∈Hp(v,h)=∑h∈He−E(v,h)∑v∈V∑h∈He−E(v,h)
Bu denklemde çok fazla terim olmasına rağmen, basitçe doğru olasılık denklemlerini yazmaya gelir. Umarım, şimdiye kadar, bu, olasılığı hesaplamak için neden enerji fonksiyonuna ihtiyacımız olduğunu veya daha genel olarak normal olmayan olasılık p'nin ne yapıldığını anlamanıza yardımcı oldu.. Normal olmayan olasılık kullanılır çünkü Z bölme fonksiyonununhesaplanması çok pahalıdır.p(v)∗ZZ
Şimdi RBM'lerin gerçek öğrenme aşamasına geçelim. Olasılığı en üst düzeye çıkarmak için, her veri noktası için yapmak için gradyan adımı atmamız gerekir . Degrade ifadeleri almak için bazı matematiksel akrobasi gerekir. İlk yaptığımız şey p ( v ) kütüğünü almak . Matematiği mümkün kılmak için bundan sonra log olasılık alanında faaliyet göstereceğiz.p(v)=1p(v)
Gradyanı p ( v ) ' deki paremetreler
log(p(v))=log[∑h∈He−E(v,h)]−log[∑v∈V∑h∈He−E(v,h)]
p(v)
∂log(p(v))∂θ=−1∑h′∈He−E(v,h′)∑h′∈He−E(v,h′)∂E(v,h′)∂θ+1∑v′∈V∑h′∈He−E(v′,h′)∑v′∈V∑h′∈He−E(v′,h′)∂E(v,h)∂θ
Şimdi bunu kağıt üzerinde yaptım ve yarı final denklemini bu sitede çok fazla yer kaybetmeyecek şekilde yazdım. Bu denklemleri kendiniz türetmenizi tavsiye ederim. Şimdi, türevimizi devam ettirmemize yardımcı olacak bazı denklemler yazacağım. Unutmayın: , p ( v ) = ∑ h ∈ H p ( v , h ) ve bu p ( h | v ) =Zp(v,h)=e−E(v,h′)p(v)=∑h∈Hp(v,h)p(h|v)=p(v,h)p(h)
∂log(p(v))∂θ∂log(p(v))∂θ=−1p(v)∑h′∈Hp(v,h′)∂E(v,h′)∂θ+∑v′∈V∑h′∈Hp(v′,h′)∂E(v′,h′)∂θ=−∑h′∈Hp(h′|v)∂E(v,h′)∂θ+∑v′∈V∑h′∈Hp(v′,h′)∂E(v′,h′)∂θ
And there we go, we derived maximum likelihood estimation for RBM's, if you want you can write the last two terms via expectation of their respective terms (conditional, and joint probability).
Notes on energy function and stochasticity of neurons.
E(v,h)=−aTv−bTh−vTWh.
It might be easier to reason about the gradient terms above via the expectation form.
∂log(p(v))∂θ=−Ep(h′|v)∂E(v,h′)∂θ+Ep(v′,h′)∂E(v′,h′)∂θ
The expectation of the first term is actually really easy to calculate, and that was the genius behind RBMs. By restricting the connection the conditional expectation simply becomes a forward propagation of the RBM with the visible units clamped. This is the so called wake phase in Boltzmann machines. Now calculating the second term is much harder and usually Monte Carlo methods are utilized to do so. Writing the gradient via average of Monte Carlo runs:
∂log(p(v))∂θ≈−⟨∂E(v,h′)∂θ⟩p(h′|v)+⟨∂E(v′,h′)∂θ⟩p(v′,h′)
Calculating the first term is not hard, as stated above, therefore Monte-Carlo is done over the second term. Monte Carlo methods use random successive sampling of the distribution, to calculate the expectation (sum or integral). Now this random sampling in classical RBM's is defined as setting a unit to be either 0 or 1 based on its probability stochasticly, in other words, get a random uniform number, if it is less than the neurons probability set it to 1, if it is greater than set it to 0.