Опубликован: 13.09.2006 | Уровень: специалист | Доступ: платный | ВУЗ: Новосибирский Государственный Университет
Лекция 11:

Решение задач комбинаторной оптимизации рекуррентными сетями

< Лекция 10 || Лекция 11: 1234 || Лекция 12 >

Машина Больцмана

Математической основой для решения комбинаторных оптимизационных задач на машине Больцмана является алгоритм, моделирующий затвердевание жидкостей или расплавов (алгоритм имитации отжига). Он базируется на идеях из двух различных областей: статистической физики и комбинаторной оптимизации. Машина Больцмана (МБ) способна реализовать этот алгоритм параллельно и асинхронно. МБ задается четверкой B = (N,E,W,V_0), N - число нейронов, E=\{(i,j)\} - множество связей между нейронами, при этом все автосвязи принадлежат этому множеству, т.е. (i,i)\in E. Каждый нейрон может иметь состояние 0 или 1. Состояние V_k МБ определяется состояниями нейронов V_k=(v_1^k, \ldots, v_N^k), V_0 - начальное состояние. Каждая связь (i,j) имеет вес w_{ij} - вещественное число, множество связей - W. Связь (i,j) называется активной в состоянии V_k, если v_i^kv_j^k=1. Вес связи (i,j) интерпретируется как количественная мера желательности, чтобы эта связь была активной. При w_{ij} \gg 0 - активность очень желательна, при w_{ij}
\ll 0 - активность очень нежелательна. Как и в модели Хопфилда, связи в МБ симметричны, т.е. w_{ij} = w_{ji}.

Функция консенсуса

Для состояния V_k МБ вводится понятие консенсуса

\begin{align*}
C_k= \sum_{i,j} w_{ij} v_i^k v_j^k .
\end{align*}

Каждая связь в этой сумме учитывается один раз. Консенсус C_k интерпретируется как количественная мера желательности, чтобы все связи (i,j) в состоянии V_k были активны. Для состояния V_k определяется множество соседей V^{(k)}. Соседнее состояние V_{k(i)} \in
V^{(k)} получается из V_k при изменении состояния нейрона i,

\begin{align*}
 V_{j}^{k(i)} =
 \left\{
   \begin{array}{rl}
    v_j^k \mbox{ если } j \neq i\\
    1 - v_j^k  \mbox{ если } j = i\\
   \end{array}
 \right.
\end{align*}

Разница консенсусов соседних состояний V_k и V_{k(i)} равна

\begin{align*}
 \Delta C_{kk(i)} = C_{k(i)} - C_k = (1-2v_i^k)(\sum_{(i,j) \in E(i)}
w_{ij}v_i^k + w_{ii}),
\end{align*}

где E(i) - множество связей нейрона i. Видно, что \Delta C_{kk(i)} для всех V_{k(i)}\in V^{(k)} могут вычисляться параллельно.

< Лекция 10 || Лекция 11: 1234 || Лекция 12 >
Ирина Ткаченко
Ирина Ткаченко
Россия, Москва
Николай Ткаченко
Николай Ткаченко
Россия