Gli RBM sono una bestia interessante. Per rispondere alla tua domanda e fare jogging sulla mia memoria, trarrò gli RBM e parlerò attraverso la derivazione. Hai detto che sei confuso sulla probabilità, quindi la mia derivazione sarà dal punto di vista del tentativo di massimizzare la probabilità. Quindi cominciamo.
Gli RBM contengono due diversi insiemi di neuroni, visibili e nascosti, li indicherò rispettivamente e h . Data una configurazione specifica di v e h , lo mappiamo lo spazio di probabilità.vhvh
p(v,h)=e−E(v,h)Z
Ci sono un paio di cose in più da definire. La funzione surrogata che utilizziamo per mappare da una configurazione specifica allo spazio di probabilità è chiamata funzione energetica . La costante Z è un fattore di normalizzazione per garantire che effettivamente mappiamo allo spazio di probabilità. Ora andiamo a quello che stiamo davvero cercando; la probabilità di un insieme di neuroni visibili, in altre parole, la probabilità dei nostri dati.
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)
Sebbene ci siano molti termini in questa equazione, si riduce semplicemente a scrivere le equazioni di probabilità corrette. Speriamo che, finora, questo ha aiutato a capire il motivo per cui abbiamo bisogno funzione energia per calcolare la probabilità, o ciò che viene fatto più spesso il non normalizzato probabilità . La probabilità non normalizzata viene utilizzata perché la funzione di partizione Zp(v)∗ZZ è molto costosa da calcolare.
Ora passiamo alla fase di apprendimento effettiva degli RBM. Per massimizzare la probabilità, per ogni punto dati, dobbiamo fare un gradiente per rendere . Per ottenere le espressioni gradiente ci vogliono alcune acrobazie matematiche. La prima cosa che facciamo è prendere il registro di p ( v ) . D'ora in poi opereremo nello spazio delle probabilità dei log per rendere fattibile la matematica.p(v)=1p(v)
Prendiamo il gradiente rispetto a i paremeters in p ( v )
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)∂θ
Ora l'ho fatto su carta e ho scritto l'equazione semifinale per non perdere molto spazio su questo sito. Ti consiglio di derivare queste equazioni da solo. Ora scriverò alcune equazioni che aiuteranno a continuare la nostra derivazione. Nota che: , p ( v ) = ∑ h ∈ H p ( v , h ) e che 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.
As you can see above in my derivation, I left the definition of the energy function rather vague. And the reason for doing that is that many different versions of RBM implement various energy functions. The one that Hinton describes in the lecture linked above, and shown by @Laurens-Meeus is:
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.