Опубликован: 01.03.2007 | Доступ: свободный | Студентов: 1589 / 211 | Оценка: 4.58 / 4.39 | Длительность: 20:15:00
Специальности: Программист
Лекция 2:

Решение задач нейронными сетями

Сети Хопфилда

Перейдем от одноэлементных систем к нейронным сетям. Пусть \alpha_{ij} - вес связи, ведущей от j -го нейрона к i -му (полезно обратить внимание на порядок индексов). Для полносвязных сетей определены значения \alpha_{ij} при всех i,j, для других архитектур связи, ведущие от j -го нейрона к i -му для некоторых i,j не определены. В этом случае положим \alpha_{ij} = 0.

В данном разделе речь пойдет в основном о полносвязных сетях. Пусть на выходах всех нейронов получены сигналы xj ( j -номер нейрона). Обозначим x вектор этих выходных сигналов. Прохождение вектора сигналов x через сеть связей сводится к умножению матрицы ( \alpha_{ij} ) на вектор сигналов x. В результате получаем вектор входных сигналов нелинейных элементов нейронов: y_i = \sum\limits_j {\alpha_{ij} x_j}.

Это соответствие " прохождение сети \equiv умножение матрицы связей на вектор сигналов " является основой для перевода обычных численных методов на нейросетевой язык и обратно. Практически всюду, где основной операцией является умножение матрицы на вектор, применимы нейронные сети. С другой стороны, любое устройство, позволяющее быстро осуществлять такое умножение, может использоваться для реализации нейронных сетей.

В частности, вычисление градиента квадратичной формы

$ {H =}{{\frac{1}{2}}{\rm{(}}{{x,Qx)}}} $
может осуществляться полносвязной сетью с симметричной матрицей связей: {\rm{grad}}H = Qx ( \alpha_{ij} = q_{ij} = q_{ji} ). Именно это наблюдение лежит в основе данного раздела.

Что можно сделать, если мы умеем вычислять градиент квадратичной формы?

В первую очередь, можно методом наискорейшего спуска искать точку минимума многочлена второго порядка. Пусть задан такой многочлен: P(x) = \frac{1}{2}(x,Qx) + (b,x). Его градиент равен {\rm{grad}}P = Qx + b. Этот вектор может быть получен при прохождении вектора x через сеть с весами связей \alpha_{ij} = q_{ij} = q_{ji} при условии, что на входной сумматор каждого нейрона по дополнительной связи веса b подается стандартный единичный сигнал.

Зададим теперь функционирование сети формулой

x' = x - h{\rm{grad}}P = x - h(Qx + b) ( 8)

Нелинейных элементов вовсе не нужно! Каждый ( j -й) нейрон имеет входные веса \alpha_{ij} = - hq_{ij} для связей с другими нейронами ( {\rm{i}} \ne {\rm{j}} ), вес - b_j для постоянного единичного входного сигнала и вес \alpha_{jj} = 1 - hq_{jj} для связи нейрона с самим собой (передачи на него его же сигнала с предыдущего шага). Выбор шага h>0 может вызвать затруднение (он зависит от коэффициентов минимизируемого многочлена). Есть, однако, простое решение: в каждый момент дискретного времени T выбирается свое значение h_T. Достаточно, чтобы шаг стремился со временем к нулю, а сумма шагов - к бесконечности (например, h_T = \frac{1}{T}, или h_T = \frac{1}{{\sqrt T}} ).

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

Решение системы линейных уравнений Ax = b сводится к минимизации многочлена

P = \frac{1}{2}((Ax - b),(Ax - b)) = \frac{1}{2}(x,A^{\rm T} Ax) - (A^{\rm T} b,x) - \frac{1}{2}(b,b).

Поэтому решение системы может производиться нейронной сетью. Простейшая сеть, вычисляющая градиент этого многочлена, не полносвязна, а состоит из двух слоев: первый с матрицей связей A, второй - с транспонированной матрицей A^{\rm T}. Постоянный единичный сигнал подается на связи с весами b_j на первом слое. Минимизация этого многочлена, а значит и решение системы линейных уравнений, может проводиться так же, как и в общем случае, в соответствии с формулой x' = x - h{\rm{grad}}P. Усовершенствованные варианты алгоритма решения можно найти в работах Сударикова [2.8].

Небольшая модификация позволяет вместо безусловного минимума многочлена второго порядка P искать точку условного минимума с условиями x_i = c_i для i = i_1 ,...,i_k, то есть точку минимума P в ограничении на аффинное многообразие, параллельное некоторым координатным плоскостям. Для этого вместо формулы

x' = x - h{\rm{grad}}P = x - h(Qx + b)

следует использовать:

x'_i = c_i
при i = i_1 ,...,i_k ;

x'_i = x_i - h\frac{{\partial P}}{{\partial x_i}} = x_i - h\left( {\sum\limits_j {q_{ij} x_j} + b_i} \right) ( 9)
при {i \ne i_1 ,...,i_k}.