Я пытаюсь понять, как работают машины Больцмана, но я не совсем уверен, как узнать вес, и не смог найти четкого описания. Правильно ли следующее? (Кроме того, ссылки на любые хорошие машинные объяснения Больцмана также были бы хорошими.)
У нас есть набор видимых единиц (например, соответствующих черно-белых пикселей на изображении) и набор скрытых единиц. Веса каким-то образом инициализируются (например, равномерно из [-0,5, 0,5]), а затем мы чередуем следующие две фазы, пока не будет достигнуто какое-то правило остановки:
Фаза фиксации - на этом этапе все значения видимых единиц фиксированы, поэтому мы обновляем только состояния скрытых единиц (согласно правилу стохастической активации Больцмана). Мы обновляем, пока сеть не достигла равновесия. Как только мы достигаем равновесия, мы продолжаем обновлять еще раз (для некоторой предопределенной N ), отслеживая среднее значение x i x j (где x i , x j - состояния узлов i и j ). После этих обновлений N равновесия мы обновляем w i j = w i j +, гдеC- некоторая скорость обучения. (Или вместо того, чтобы делать пакетное обновление в конце, мы обновляем после шага равновесия?)
Свободная фаза - на этом этапе обновляются состояния всех юнитов. Как только мы достигнем равновесия, мы аналогичным образом продолжаем обновлять N 'больше раз, но вместо добавления корреляций в конце мы вычитаем: .
Итак, мои основные вопросы:
Всякий раз, когда мы находимся в фиксированной фазе, сбрасываем ли мы видимые единицы в один из паттернов, которые мы хотим изучить (с некоторой частотой, которая представляет важность этого паттерна), или мы оставляем видимые единицы в том состоянии, в котором они находились? в конце свободной фазы?
Делаем ли мы пакетное обновление весов в конце каждой фазы или обновляем весы на каждом шаге равновесия в фазе? (Или один штраф?)
источник