Е.С.Борисов
понедельник, 26 мая 2014 г.
В этой статье мы поговорим о модели, которая носит название ограниченная машина Больцмана (Restricted Boltzmann Machines, RBM ).
RBM [2] представляет собой модификацию искусственной нейронной сети машина Больцмана, нейроны были разделены на две группы, и убраны некоторые связи, таким образом был образован второй (скрытый) слой.
Алгоритм функционирования ограниченной машины Больцмана выглядит следующим образом.
где W – матрица весов, bv – вектор сдвигов первого слоя, σ – функция активации (сигмоид)
где W – матрица весов, bh – вектор сдвигов второго слоя, σ – функция активации (сигмоид)
Алгоритм обучения ограниченной машины Больцмана называется 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] 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