на главную ] 

Ассоциативная память на основе ограниченной машины Больцмана (RBM).

Е.С.Борисов

понедельник, 26 мая 2014 г.


В этой статье мы поговорим о модели, которая носит название ограниченная машина Больцмана (Restricted Boltzmann Machines, RBM ).

1 Введение

RBM [2] представляет собой модификацию искусственной нейронной сети машина Больцмана, нейроны были разделены на две группы, и убраны некоторые связи, таким образом был образован второй (скрытый) слой.

PIC
Рис. 1: сеть RBM

2 Алгоритм функционирования

Сеть состоит из стохастических нейронов принимающих значения $0$ или $1$, формула вероятности нейрона выглядит следующим образом. $$ p(h=1|v,W,b_h) = \sigma (W \cdot v + b_h ) $$ где $v$ - вход нейрона, $W$ - вектор весов, $b_h$ - сдвиг нейрона, $\sigma(x)$ - экспоненциальный сигмоид $$ \sigma(x) = \frac{1}{1+\exp(-x)} $$ Это базовый вариант сети для бинарных входов (Bernoulli-Bernoulli RBM), существуют так же модификации для вещественных входов (Gaussian-Bernoulli RBM и др.).

Алгоритм функционирования ограниченной машины Больцмана выглядит следующим образом.

  1. устанавливаем начальные значения входного слоя v := x
  2. вычислить вероятности ph изменения нейронов второго слоя

    ph:=σ(v·W - bv)

    где W – матрица весов, bv – вектор сдвигов первого слоя, σ – функция активации (сигмоид)

  3. сохранить старые значения входного слоя v:= v
  4. определить состояние второго слоя h, присвоить нейронам состояния 0 или 1 с вероятностями ph
  5. вычислить вероятности pv изменения нейронов первого слоя

    pv:=σ(h·WT - bh)

    где W – матрица весов, bh – вектор сдвигов второго слоя, σ – функция активации (сигмоид)

  6. определить состояние первого слоя v, присвоить нейронам состояния 1 с вероятностями pv (или соответсвенно 0 с вероятностями 1-pv)
  7. если vv
    то повторить с п.2
    иначе перейти на следующий пункт
  8. выдача результата v
  9. конец работы

3 Метод обучения

Алгоритм обучения ограниченной машины Больцмана называется Contrastive Divergence (CD) и представляет собой немного модифицированный метод градиентного спуска.

В качестве функции оценки, которую необходимо оптимизировать, используется функция правдоподобия $L$ (likehood), будем искать её максимум. Функция правдоподобия $L$ для параметров $(W,b_v,b_h)$ и образа $v$ определяется как вероятности видимого слоя $v$ при данных параметрах. $$ L(W,b_v,b_h|v) = p(v|W,b_v,b_h) $$ Для удобства вычислений будем использовать логарифм $$ \ln L(W,b_v,b_h|v) = \ln \sum\limits_h \exp (-E(v,h)) - \ln \sum\limits_{v,h} \exp (-E(v,h)) $$ где $E$ - энергия сети $$ E(v,h) = - ( b_v \cdot v + b_h \cdot h + v\cdot h\cdot W ) $$

Градиент функции оценки выглядит следующим образом \begin{equation} \left\{\begin{array}{ r c l } \frac{\partial \ln L(W,b_v,b_h|v) }{\partial W} = \nabla W & = & (v\cdot h)_{data} - (v\cdot h)_{model} \\ \frac{\partial \ln L(W,b_v,b_h|v) }{\partial b_v} = \nabla b_v & = & (v)_{data} - (v)_{model} \\ \frac{\partial \ln L(W,b_v,b_h|v) }{\partial b_h} = \nabla b_h & = & (h)_{data} - (h)_{model} \end{array} \right. \label{eq:grad} \end{equation} здесь $(\cdot)_{data}$ - значение слоёв в начальном состоянии сети, $(\cdot)_{model}$ - мат.ожидание состояния слоёв.

Мат.ожидание состояния слоёв $(\cdot)_{model}$ вычисляется путём т.н. сэмплирования, т.е. $(\cdot)_{model}$ это стояние слоёв после нескольких итераций сети, на практике (для того, что бы алгоритм работал) бывает достаточно одного шага сэмплирования (одной итераций сети).

Веса изменяются следующим образом. \begin{equation} \left\{\begin{array}{ r c l } W & := & \varepsilon \cdot ( \nabla W + \mu \cdot \Delta W ) \\ b_v & := & \varepsilon \cdot ( \nabla b_v + \mu \cdot \Delta b_v ) \\ b_h & := & \varepsilon \cdot ( \nabla b_h + \mu \cdot \Delta b_h ) \end{array} \right. \label{eq:wgt} \end{equation} где $\mu$ - параметр момента, $\varepsilon $ - скорость обучения, $\Delta W,\Delta b_v,\Delta b_h$ - изменение параметров на предыдущем шаге.

В качестве критерия остановки обучения будем использовать среднеквадратичную ошибку между входом сети и её выходом - $E(v_0,v_k)$, значение ошибки должно уменьшиться до установленного порога $E_{min}$.

Алгоритм обучения выглядит следующим образом.

  1. инициализировать (нулями) матрицу весов W и векторы сдвигов bv, bh
  2. выбрать случайное пакет из всего набора учебных примеров (mini-batch) X
  3. для всех примеров пакета: присвоить начальное значение первому слою v := x
  4. выполнить k циклов сети, определить начальные и конечные состояния слоёв v0, h0, vk, hk (где k – параметр)
  5. вычислить градиент по (\ref{eq:grad}) и скорректировать веса по (\ref{eq:wgt})
  6. вычислить среднеквадратичную ошибку сети E
  7. если $E < E_{min}$ то переход п.8
    иначе переход п.2
  8. конец работы

4 Реализация ассоциативной памяти

Здесь представлена реализация, описанной выше модели. В начале в память "записываются" несколько разных картинок. Далее - памяти предъявляются другие, похожие картинки, по которым восстанавливаются оригиналы.

 

учебный набор


результат работы

вход:
выход:

вход:
выход:

вход:
выход:

вход:
выход:

вход:
выход:

вход:
выход:

вход:
выход:

вход:
выход:

вход:
выход:

вход:
выход:

вход:
выход:

вход:
выход:

вход:
выход:

вход:
выход:

вход:
выход:

вход:
выход:

история изменения ошибки обучения

карта весов

по количеству нейронов второго (hidden) слоя

 
Реализация в системе Octaveздесь ].
 

Список литературы

[1]   J.J.Hopfield   Neural Networks and Physical Systems with Emergent Collective Computational Abilities // in Proc. National Academy of Sciencies, USA 79, 1982, pp. 2554-2558.

[2]    Ackley, D. H., Hinton, G. E., and Sejnowski, T. J.   A learning algorithm for Boltzmann machines. // Cognitive Science, 1985, vol.9, pp. 147–169.

[3]   Restricted Boltzmann Machines (RBM) – http://deeplearning.net/tutorial/rbm.html

[4]   Павел Нестеров     Реализация Restricted Boltzmann machine на c# – http://habrahabr.ru/post/159909

[5]    Е.С.Борисов    О методах обучения многослойных нейронных сетей прямого распространения. Часть 2: Градиентные методы первого порядка. -- http://mechanoid.kiev.ua/neural-net-backprop2.html

[6]    Subha Manoharan     Gaussian Discrete Restricted Boltzmann Machine: Theory and its applications

При использовании материалов этого сайта, пожалуйста вставляйте в свой текст ссылку на мою статью.