Интуиция за ограниченной машиной Больцмана (RBM)

15

Я прошел курс Джеффа Хинтона по нейронным сетям на Coursera, а также познакомился с ограниченными машинами Больцмана , все еще не понимая интуицию, лежащую в основе УОКР.

Зачем нам нужно вычислять энергию в этой машине? И какая польза от вероятности в этой машине? Я также видел это видео . В видео он просто написал уравнения вероятности и энергии перед этапами вычисления и, похоже, нигде не использовал его.

Помимо вышесказанного, я не уверен, для чего предназначена функция правдоподобия?

Born2Code
источник
Я попытался навести порядок в вопросе, но думаю, что нужно больше работать. Вы должны объяснить , что вы действительно понимаете, и более конкретно , где вы застряли, в противном случае вопрос является слишком широким.
Нил Слэйтер
Единственное, что попало в голову, - это три шага: сначала положительный этап, затем отрицательный этап, за которым следует восстановление весов. Но как насчет энергии и функции вероятности? какая тут польза? и сколько раз мы должны сделать этот процесс (положительная фаза -> отрицательная фаза> реконструкция весов)?
Born2Code

Ответы:

5

RBM - интересный зверь. Чтобы ответить на ваш вопрос и оставить в памяти мою память, я выведу УОР и расскажу о выводе. Вы упомянули, что вы запутались в вероятности, поэтому мой вывод будет с точки зрения попытки максимизировать вероятность. Итак, начнем.

RBM содержат два разных набора нейронов, видимых и скрытых, я буду обозначать их и соответственно. Учитывая конкретную конфигурацию и , мы отображаем это пространство вероятностей.vhvh

p(v,h)=eE(v,h)Z

Есть еще пара вещей, которые нужно определить. Суррогатная функция, которую мы используем для отображения из конкретной конфигурации в пространство вероятностей, называется энергетической функцией . Константа - это нормализующий фактор, который гарантирует, что мы на самом деле отобразим пространство вероятностей. Теперь давайте перейдем к тому, что мы действительно ищем; вероятность набора видимых нейронов, другими словами, вероятность наших данных. E(v,h)Z

Z=vVhHeE(v,h)
p(v)=hHp(v,h)=hHeE(v,h)vVhHeE(v,h)

Хотя в этом уравнении много терминов, все сводится к написанию правильных уравнений вероятности. Будем надеяться, что до сих пор, это помогло вам понять , почему нам нужна функция энергии , чтобы вычислить вероятность того , или то , что делается чаще ненормированного вероятности . Ненормализованная вероятность используется, потому что функция разделения очень дорога для вычисления.p(v)ZZ

Теперь давайте перейдем к фактическому этапу обучения УКР. Чтобы максимизировать вероятность, для каждой точки данных мы должны сделать шаг градиента, чтобы сделать . Чтобы получить выражения градиента, нужна математическая акробатика. Первое, что мы делаем, это берем журнал . Теперь мы будем работать в логарифмическом вероятностном пространстве, чтобы сделать математику выполнимой.p(v)=1p(v)

log(p(v))=log[hHeE(v,h)]log[vVhHeE(v,h)]
Let's take the gradient with respect to the paremeters in p(v)

log(p(v))θ=1hHeE(v,h)hHeE(v,h)E(v,h)θ+1vVhHeE(v,h)vVhHeE(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)=eE(v,h), p(v)=hHp(v,h) and that p(h|v)=p(v,h)p(h)

log(p(v))θ=1p(v)hHp(v,h)E(v,h)θ+vVhHp(v,h)E(v,h)θlog(p(v))θ=hHp(h|v)E(v,h)θ+vVhHp(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)=aTvbThvTWh.

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.

Armen Aghajanyan
источник
How do we make hidden layer binary too? Bcoz after the activation function operation, we would be getting values in the range between 0 and 1.
Born2Code
This is usually done by thresholding the activation. Anything above 0.5, would become 1, anything below would be zero.
Armen Aghajanyan
But in this link , in section 3.1: Hinton has stated "the hidden unit turns on if this probability is greater than a random number uniformly distributed between 0 and 1". What does this actually mean? And also in this link, they say "Then the jth unit is on if upon choosing s uniformly distributed random number between 0 and 1 we find that its value is less than sig[j]. Otherwise it is off." I didn't get this.
Born2Code
????? How to say whether that particular unit is turned on or off?
Born2Code
I've added an edit. I suggest reading up on Monte Carlo methods because the stochasticity of this algorithm is derived from there.
Armen Aghajanyan
5

В дополнение к существующим ответам, я хотел бы немного поговорить об этой энергетической функции и ее интуиции. Извините, если это немного долго и физически.

Функция энергии описывает так называемую модель Изинга , которая является моделью ферромагнетизма в терминах статистической механики / квантовой механики. В статистической механике мы используем так называемый гамильтонов оператор, чтобы описать энергию квантово-механической системы. И система всегда пытается быть в состоянии с самой низкой энергией.

Теперь модель Изинга в основном описывает взаимодействие между электронами со спином σК +1 или -1, в присутствии внешнего магнитного поля час, Взаимодействие двух электроновя и J описывается коэффициентом JяJ, Этот гамильтониан (или энергетическая функция)

H^=i,jJijσiσjμjhjσj
where H^ denotes the Hamiltonian. A standard procedure to get from an energy function to the probability, that a system is in a given state (i.e. here: a configuration of spins, e.g. σ1=+1,σ2=1,...) is to use the Boltzmann distribution, which says that at a temperature T, the probability pi of the system to be in a state i with energy Ei is given by
pi=exp(Ei/kT)iexp(Ei/kt)
На данный момент, вы должны признать, что эти два уравнения являются точно такими же уравнениями, как в видео Хинтона и ответ Армена Агаджаняна . Это приводит нас к вопросу:

Какое отношение имеет RBM к этой квантово-механической модели ферромагнетизма?

Нам нужно использовать конечную физическую величину: энтропию. Как мы знаем из термодинамики, система будет располагаться в состоянии с минимальной энергией, что также соответствует состоянию с максимальной энтропией.

Как представил Шенон в 1946 году, в теории информации энтропия ЧАС также может рассматриваться как показатель содержания информации в Иксопределяется следующей суммой по всем возможным состояниям Икс:

ЧАС(Икс)знак равно-Σяп(Икся)журналп(Икся)
Теперь самый эффективный способ кодирования информационного контента в Икс, это использовать способ, который максимизирует энтропию ЧАС,

Наконец , вот где мы возвращаемся к RBM: в основном, мы хотим, чтобы этот RBM кодировал как можно больше информации. Итак, поскольку мы должны максимизировать (теоретико-информационную) энтропию в нашей RBM-системе. Как предложил Хопфилд в 1982 году, мы можем максимизировать теоретико-информационную энтропию точно так же, как физическую энтропию: моделируя RBM, как модель Изинга выше, и используя те же методы, чтобы минимизировать энергию. И именно поэтому нам нужна эта странная энергетическая функция для RBM!

Хороший математический вывод в ответе Армена Агаджаняна показывает все, что нам нужно сделать, чтобы минимизировать энергию, таким образом максимизируя энтропию и сохраняя / сохраняя как можно больше информации в нашей УОКР.

PS: Пожалуйста, дорогие физики, простите любые неточности в выводе этого инженера. Не стесняйтесь комментировать или исправлять неточности (или даже ошибки).

hbaderts
источник
I saw this video, Just watch the video from that point. how do you get that sampled number? whether we have just run rand() in matlab and obtain it? and then it would be different for each h(i) . Oh nooo! I don't think machine will learn properly.
Born2Code
@Born2Code this is another question. Can you post it as a new question to this site? Please try to add the equations you are talking about to the new question, and explain what parts you don't understand.
hbaderts
0

The answer of @Armen has gave myself a lot of insights. One question hasn't been answered however.

The goal is to maximize the probability (or likelihood) of the v. This is correlated to minimizing the energy function related to v and h:

E(v,h)=aTvbThvTWh

Our variables are a, b and W, which have to be trained. I'm quite sure this training will be the ultimate goal of the RBM.

Laurens Meeus
источник
Как мы можем сделать скрытый слой двоичным слоем тоже? Поскольку после срабатывания функции активации мы получим значения в диапазоне от 0 до 1.
Born2Code
@Born2Code: The activation function gives you the probability that a neuron has value 1. Therefore to "make it binary", you sample from the probabilities calculated for either h or v - in other words you literally do something like h_bin = (rand() < h_val) ? 1 : 0 - this has to be done for each neuron, and each time you want a sample.
Нил Слэйтер
@NeilSlater: but why a random number? Also, whether the random should be generated for each iteration or the same number should be used for all the iterations? one more serious doubt, how many iterations have to be done? I have a training set V, which has only one vector, i.e. v1. With v1, how many times should I have to iterate?
Born2Code
@NeilSlater: Еще одно сомнение: нужно ли сравнивать одно и то же случайное число со всеми значениями скрытого слоя? Я знаю, что это такой идиотский вопрос, но все же
Born2Code
1
Это случайное число, потому что именно так вы разрешаете вероятности в двоичные значения. Это другое число для каждого нейрон внутри hили v- вы выборка вектора двоичных значений hили для vтого, чтобы сгенерировать пример , что сеть «считает» существует - то есть пример , который имеет высокую статистическую вероятность быть представителем из Обучающий набор. Во время тренировки вы определяете, насколько хорошо он соответствует существующему примеру тренировки, и соответствующим образом корректируете вес.
Нил Слэйтер