RBM - интересный зверь. Чтобы ответить на ваш вопрос и оставить в памяти мою память, я выведу УОР и расскажу о выводе. Вы упомянули, что вы запутались в вероятности, поэтому мой вывод будет с точки зрения попытки максимизировать вероятность. Итак, начнем.
RBM содержат два разных набора нейронов, видимых и скрытых, я буду обозначать их и соответственно. Учитывая конкретную конфигурацию и , мы отображаем это пространство вероятностей.vhvh
p(v,h)=e−E(v,h)Z
Есть еще пара вещей, которые нужно определить. Суррогатная функция, которую мы используем для отображения из конкретной конфигурации в пространство вероятностей, называется энергетической функцией . Константа - это нормализующий фактор, который гарантирует, что мы на самом деле отобразим пространство вероятностей. Теперь давайте перейдем к тому, что мы действительно ищем; вероятность набора видимых нейронов, другими словами, вероятность наших данных.
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)
Хотя в этом уравнении много терминов, все сводится к написанию правильных уравнений вероятности. Будем надеяться, что до сих пор, это помогло вам понять , почему нам нужна функция энергии , чтобы вычислить вероятность того , или то , что делается чаще ненормированного вероятности . Ненормализованная вероятность используется, потому что функция разделения очень дорога для вычисления.p(v)∗ZZ
Теперь давайте перейдем к фактическому этапу обучения УКР. Чтобы максимизировать вероятность, для каждой точки данных мы должны сделать шаг градиента, чтобы сделать . Чтобы получить выражения градиента, нужна математическая акробатика. Первое, что мы делаем, это берем журнал . Теперь мы будем работать в логарифмическом вероятностном пространстве, чтобы сделать математику выполнимой.p(v)=1p(v)
log(p(v))=log[∑h∈He−E(v,h)]−log[∑v∈V∑h∈He−E(v,h)]
Let's take the gradient with respect to the paremeters in
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)∂θ
Now I did this on paper and wrote the semi-final equation down as to not waste a lot of space on this site. I recommend you derive these equations yourself. Now I'll write some equations down that will help out in continuing our derivation. Note that: Zp(v,h)=e−E(v,h′), p(v)=∑h∈Hp(v,h) and that 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.