авторефераты диссертаций БЕСПЛАТНАЯ БИБЛИОТЕКА РОССИИ

КОНФЕРЕНЦИИ, КНИГИ, ПОСОБИЯ, НАУЧНЫЕ ИЗДАНИЯ

<< ГЛАВНАЯ
АГРОИНЖЕНЕРИЯ
АСТРОНОМИЯ
БЕЗОПАСНОСТЬ
БИОЛОГИЯ
ЗЕМЛЯ
ИНФОРМАТИКА
ИСКУССТВОВЕДЕНИЕ
ИСТОРИЯ
КУЛЬТУРОЛОГИЯ
МАШИНОСТРОЕНИЕ
МЕДИЦИНА
МЕТАЛЛУРГИЯ
МЕХАНИКА
ПЕДАГОГИКА
ПОЛИТИКА
ПРИБОРОСТРОЕНИЕ
ПРОДОВОЛЬСТВИЕ
ПСИХОЛОГИЯ
РАДИОТЕХНИКА
СЕЛЬСКОЕ ХОЗЯЙСТВО
СОЦИОЛОГИЯ
СТРОИТЕЛЬСТВО
ТЕХНИЧЕСКИЕ НАУКИ
ТРАНСПОРТ
ФАРМАЦЕВТИКА
ФИЗИКА
ФИЗИОЛОГИЯ
ФИЛОЛОГИЯ
ФИЛОСОФИЯ
ХИМИЯ
ЭКОНОМИКА
ЭЛЕКТРОТЕХНИКА
ЭНЕРГЕТИКА
ЮРИСПРУДЕНЦИЯ
ЯЗЫКОЗНАНИЕ
РАЗНОЕ
КОНТАКТЫ


Pages:     | 1 | 2 || 4 | 5 |   ...   | 10 |

«Федеральное агентство по образованию САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ А.Н.ВАСИЛЬЕВ, Д.А.ТАРХОВ НЕЙРОСЕТЕВОЕ ...»

-- [ Страница 3 ] --

Аналогично многослойному персептрону рассматриваются полные сети с временными задержками, для которых на вход нейрона могут подаваться линейные комбинации выходов всех предыдущих слоёв, а не только непосредственно предшествующего. При этом формула (1.29) заменяется равенством pl1l l y l ( n) = Wl1,l (t )xl1 (n t ). (1.47) l1 = 0 t = На эти сети легко переносятся прежние формулы для вычисления градиента.

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

Временные сети с частичной структурой связей. Этот вид сетей удобно определить с помощью интерпретации на языке графов. При этом каждому временному отсчёту ставится в соответствие свой экземпляр множества вершин V (одинакового для всех временных отсчётов). Здесь мы рассматриваем случай, когда связи идут между разными временными слоями, но без циклических зависимостей. Множество дуг D является подмножеством V V, при этом нейроны можно пронумеровать так, чтобы связи шли от нейрона с меньшим номером к нейрону с большим номером, т.е. u v для каждой дуги. Дуге соответствует упорядоченная пара вершин u (n - t ), v(n) (из первой дуга исходит, а во вторую – входит), t=0,1,2,… Каждой вершине v(n) сопоставим активационную функцию v, каждой дуге u (n - t ), v(n) – вес wu,v (t ).

Обращаем внимание на то, что величина веса зависит только от разности временных отсчётов. Обозначим yv ( n) – вход соответствующего нейрона, а xv ( n) – его выход. Тогда формулы (1.43), (1.44) приобретают вид yv (n) = wu,v (t ) xu (n t ), (1.48) u:( u,v )D причём суммирование производится по всем входящим в нейрон дугам:

xv ( n) = v ( yv ( n)). (1.49) Для подсчёта градиента рассматриваем двойственную сеть. Входы двойственной сети соответствуют выходам исходной сети, причём формула (1.36) остаётся в силе. При этом формула применяется для всех временных отсчётов, которые входят в функционал ошибки. Формулы для вычисления градиента функционала принимают вид xu (t ) = wuv (n t ) yv ( n), (1.50) n v E ( N, T ) = xu ( ) yv (t + ).

(1.51) wuv (t ) Здесь суммирование производится по тем значениям индексов, для которых формулы определены. Организуя реальный вычислительный процесс, удобнее вести рассмотрение в обратном порядке, т.е. вычислив yv, определяем u и t, для которых имеются соответствующие слагаемые, и они значения добавляются в соответствующую сумму и т.д. по убыванию v.

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

Динамическая кластеризация и динамические сети Кохонена. Когда классифицируемая выборка меняется со временем, возникают различные варианты задач кластеризации.

Первый вариант – кластеризация пополняющейся выборки. При этом без особых изменений можно применять любой последовательный алгоритм кластеризации, включая сети Кохонена. Остаётся один вопрос – как быть со старыми данными? Самый разумный вариант ответа заключается в том, чтобы после обработки последнего пришедшего наблюдения выбрать случайно некоторые из старых данных, причём вероятность такого выбора должна быть тем меньше, чем более старым является наблюдение. Если уже существующие кластеры не равномощны, то имеет смысл выбирать кластеры по очереди или случайно, а потом уже из фиксированного кластера выбирать обрабатываемую точку в соответствии с её возрастом. Эта процедура обработки старых данных продолжается до прихода нового наблюдения, после обработки которого, процесс начинается сначала. Чем чаще приходят новые наблюдения, тем меньше остаётся времени на обработку старых данных – алгоритм получается адаптивным.

В процессе обучения сети Кохонена можно управлять не только вероятностью выбора точки, но и другими параметрами алгоритма. Самый простой способ состоит в замене формулы (1.39) на равенство w i ( n) = w i ( n 1) + i ( k, n)( x( n) w i ( n 1)), где i ( k, n) меньше для более старых примеров. Аналогичные изменения можно внести и в формулу (1.40).

Второй вариант, который в некотором смысле ещё ближе к статическому, заключается в том, что ось времени рассматривается в качестве одной из координат. При этом в один кластер относятся точки близкие не только по пространственным координатам, но и по времени (заметим, что в качестве пространственных координат могут выступать не только геометрически пространственные координаты, но и иные независимые переменные). При этом возникает проблема масштабирования: так характерные размеры кластера по пространственным координатам и по времени, скорее всего, различаются. Один из возможных вариантов решения этой проблемы заключается в том, чтобы сначала пространственные координаты разделить на характерный размер выборки по пространству, а временную координату – на характерный интервал времени. В дальнейшем, по мере появления кластеров, можно в качестве характерных размеров по пространству и по времени брать соответствующие средние размеры кластеров, перемасштабируя переменные время от времени.

Третий вариант возникает, когда одному моменту времени соответствует не один, а целый набор входных векторов и нас интересует динамика изменения кластеров (их центров, размеров и т.п.). Самый простой подход к решению такой задачи – провести кластеризацию для каждого момента времени отдельно, в нейросетевой постановке – обучить сети Кохонена для каждого временного отсчёта. Достоинством такой процедуры является её простота и возможность распараллеливания, недостатком – сложность интерпретации результата, т.е. анализа динамики весов сетей. Дело в том, что первый нейрон одной сети не обязательно соответствует первому нейрону другой. Процедуру такого сопоставления провести несложно (даже не одну).

Подробности см. в параграфе 2.5.

Следующий вопрос – что делать с полученной последовательностью наборов кластеров? Естественней всего – попытаться спрогнозировать будущие кластеры. Наиболее простой способ это сделать – использовать последовательность весов {w i (t )}t =1 для того, чтобы спрогнозировать w i ( n + 1).

n Более сложный, но и более перспективный способ состоит в использовании весов не только соответствующих, но и всех (или только ближайших) нейронов.

Другой, ещё более тонкий результат можно получить, если использовать не только веса сети Кохонена, но и размеры кластеров – среднеквадратичное отклонение от центра или набор главных компонент множества элементов кластера.

RBF-сети с временными задержками. Этот вид сетей можно было бы представлять себе как обычные RBF-сети с дополнительной координатой – временем, если бы не два обстоятельства. Во-первых, наблюдения {x n (t ), y n (t )} приходят в дискретные моменты времени, в то время как остальные координаты x в (1.42) считаются непрерывными вещественными. Это не самая большая проблема, так как эти дискретные моменты времени можно тоже считать расположенными на вещественной оси. Во-вторых, если рассматривать обучение сети в реальном времени, т.е. по мере прихода новых наблюдений, то временная ось становится неравноправной с остальными. Подробности см. в параграфе 2.6.

Рекуррентные сети [23, 24, 38, 96, 119, 122, 142, 149, 166, 183, 192, 217, 221, 228, 232]. Рекуррентными называются нейронные сети с обратными связями. Заметим, что на вход сети не обязательно подавать её выходы – можно подавать и выходы нейронов из промежуточных слоёв. Далее рассмотрено несколько известных архитектур таких сетей, каждая из которых имеет свою область применения. В результате получается достаточно много частных конструкций, рассмотрению которых предпошлём обсуждение самой общей ситуации.

Обычная задача, решаемая с помощью сетей такого рода – подбор по растущей выборке {x( n), y ( n)}, n = 1,..., N, где x(n) – входной, а y (n) – выходной вектор, зависимости вида y (n) = f (x(n), x(n -1),..., x(1), y (n 1),..., y (1), w ). (1.52) При этом по сравнению с сетями из предыдущих параграфов возникают дополнительные сложности. Первая проблема состоит в том, что сеть необходимо инициировать, т.е. в определённый момент (или набор моментов) времени задать не только вход сети, но и её выход. При этом заранее неясно, может ли конкретная пара векторов быть входом и выходом сети соответственно в некоторый момент времени. Вторая проблема заключается в том, что процесс функционирования сети может оказаться неустойчивым. Этой проблемы не было в сетях прямого распространения, так как там сигналы шли от входа к выходу, не распространяясь назад.

Пусть {V (n)} – множество вершин во все моменты времени. Множество дуг D является множеством упорядоченных пар вершин {u (n t ), v(n)}, где u и v – номера соединяемых вершин, t 0. Каждой вершине v(n) сопоставляется функция активации v, а каждой дуге – вес wu,v (t ).

В данной ситуации формулы (1.48)-(1.51) остаются такими же, но их смысл несколько меняется. Если при t=0 будет существовать как wu,v (0) 0, так и wv,u (0) 0, то мы не сможем вычислить выход сети при известных входах – точнее можем, но с помощью решения системы уравнений (1.48) – (1.49). Такая сеть неудобна для использования, поэтому будем предполагать, что нейроны можно пронумеровать таким образом, чтобы wu,v (0) 0 только при uv.

Если подставить (1.48) в (1.49), то получается выражение вида n yv (n) = wu,v (t )u ( yu (n t )). Так как на вход каждого нейрона могут t = u поступать сигналы с любого другого нейрона, сумму следует считать по всем нейронам сети. Если с некоторого нейрона сигнал не подаётся, то это можно учесть, считая wu,v = 0.

В результате получается дискретная динамическая система. Если её структура фиксирована, то t меняется не до n, а до некоторого фиксированного значения T. Как правило, рассматриваются только такие сети, их использование не наталкивается на проблемы, которые получаются в случае переменного интервала времени T = n.

Возможен вариант с подачей на сеть некоторого вектора с дальнейшим её автономным функционированием и релаксацией к некоторому конечному состоянию. Возможна и другая ситуация – входной вектор подаётся на сеть через определённые промежутки времени – периодически или случайно, и сеть определённым образом реагирует на эти воздействия. При этом расчёт функционирования сети может быть проведён в данный момент сколь угодно далеко во времени.

Описание с использованием вектора внутренних состояний.

Обратившись к применению формул (1.48) – (1.49), следует начать с того, что не все yv являются выходными, т.е. не все они могут быть взяты из опыта. Для дальнейших рассмотрений обозначим x(n) – вектор входов сети, z(n) – вектор внутренних состояний, которые не являются ни входами, ни выходами, y(n) – вектор выходов сети. Тогда (1.48) перепишется в виде:

T T T z (n) = Wzx (t )x(n t ) + Wzz (t )(z (n t )) + Wzy (t )y (n t ). (1.53) t =0 t =0 t = T T y (n) = Wyx (t )x(n t ) + Wyz (t )(z (n t )).

t =0 t = (1.54) Для большинства архитектур нейронных сетей отображение действует покоординатно, в зависимости от функции активации соответствующего нейрона. Такое представление позволяет применять к обучению сетей подобного рода широко известные алгоритмы теории управления [16, 33, 161, 192, 207, 211, 221, 242].

Прежде чем обсуждать собственно рекуррентные сети, опишем формулами (1.53) и (1.54) работу нейронных сетей, которые обсуждались ранее в этом и предыдущем параграфах. Начнём с многослойного персептрона. В данном случае нет зависимости от n, вектор z состоит из векторов y l, l = 0,1,..., L 1, вектор y является вектором выходов сети y L. Матрицы W будут иметь блочный вид с большим числом нулей, мы для простоты ограничимся их ненулевыми подматрицами. Тогда для первого слоя уравнение (1.53) примет вид y 0 = W0 x, для последующих слоёв y l = Wll ( y l 1 ), уравнение (1.54) для последнего слоя – y = WL L ( y L 1 ).

Следующая модель – полная сеть прямого распространения. Для неё приведённое выше уравнение для первого слоя останется без изменений, а для l последующих слоёв примет вид y l = Wl,s s (y s 1 ) + Wl,0 x, в том числе для s = L последнего слоя y = WL,s s (y s 1 ) + WL,0 x. Для сети с частичной структурой s = связей получаются такие же равенства, только часть коэффициентов обращается в ноль.

Сеть Кохонена тоже может быть представлена аналогичным образом, только отображение максимальную координату переводит в 1, остальные в 0.

Для сети Гроссберга на последнем слое добавляется линейное преобразование.

Таким же образом с помощью модели (1.53) и (1.54) можно проинтерпретировать RBF-сети. Самый простой вариант получается при рассмотрении модели, которая описывается равенством (1.42). В этом случае добавляется входная координата постоянно равная -1. Первый слой состоит из m блоков. На вход i-го нейрона j-го блока подаётся i-я координата входного за вычетом cij. Если норма в (1.42) обычная евклидова, то первый слой нейронов действует как возведение в квадрат. На следующем слое каждому блоку соответствует один нейрон, и на его входе происходит просто суммирование выходов нейронов первого слоя, т.е. матрица Wzz в (1.51) вырождается в вектор из единиц. Нейроны второго слоя осуществляют преобразование, соответствующее j. Матрица Wyz вырождается в вектор с координатами w j.

Если мы выбираем базисные функции в виде j = ( j x c j ), то Wzz состоит не из единиц, а из значений j, которые одинаковы для j-го блока.

Если базисная функция имеет неравноценные координаты, то Wzz имеет элементы, равные jl. Если на входе первого слоя нейронов будет осуществляться некоторое линейное преобразование, то получится RBF-сеть с базисными функциями эллиптического вида.

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

Для применения градиентных алгоритмов обучения необходимо вычислить производную функционала ошибки по весам сети. Рассмотрим задачу построения нелинейной регрессии, взяв в качестве минимизируемого N e функционала выражение вида E ( N, ) =, где en = y (n) y (n), причём n n= N y (n) – значение выхода сети, полученное по формулам (1.53) и (1.54), а y (n) – E ( N, ) e N = n, при значение, взятое из опыта. Если w – некоторый вес, то w n = N w en этом производная отлична от нуля только для тех весов, которые w соответствуют моменту времени не позже n. При этом en y (n) = ( yi (n) yi (n)) i.

w w yi (n) Проще всего вычислить, если w – элемент матрицы Wyx (t ), – w результат полностью соответствует формуле (1.45). Аналогичный результат получается, когда w – элемент матрицы Wyz (t ). Дифференцируя равенство (1.53), получаем:

z (n) T z (n t ) T y (n t ) = Wzz (t )(z (n t )) + Wzy (t ) (1.55) w w w t =0 t = y (n) T z (n t ) = Wyz (t )(z (n t )) Для других весов из (1.54).

w w t = Эти формулы нужно применять рекуррентно до тех пор, пока не дойдём во втором слагаемом (1.55) до экспериментального значения y (n). Более сложная проблема получается с первым слагаемым, так как экспериментального значения z (n) мы не имеем, и относительно него приходится делать некоторые предположения. Самый простой подход состоит z (n) в том, чтобы выбрать для вычисления такую же схему, что и для w вычисления z (n) с текущими значениями весов, например, принять их равными нулю для n 0. Более сложный вариант получается, если при реализации z (n) некоторого алгоритма обучения, вычислять и z (n) при пробных w значениях весов. Возможен и некоторый промежуточный вариант.

Рассмотрим некоторые частные нейросетевые модели подобного рода.

Сети Хопфилда [23, 24, 38, 96, 119, 122, 142, 149, 166, 183, 192, 217, 221, 228, 232]. Сетью Хопфилда называется нейронная сеть, для которой равенства (1.53) и (1.54) имеют вид z (n) = Wy (n 1), (1.56) y (n) = (z (n)). (1.57) Обычно отображение действует по каждой координате отдельно, т.е.

yi ( n) = ( zi ), где – некоторая функция активации, например sign(). При этом получается сеть Хопфилда, построенная на основе персептрона.

Можно строить сеть Хопфилда и на основе RBF-сети, для этого достаточно выбрать соответствующее отображение. Обычное применение сети Хопфилда – кодирование (запоминание) информации. При этом стандартное функционирование сети Хопфилда заключается в декодировании (вспоминании) одного из запомненных образов при подаче на вход сети некоторого вектора, который должен в некотором смысле этому образу соответствовать.

Стандартное (синхронное) функционирование сети Хопфилда состоит в том, что сеть эволюционирует в соответствии с формулами (1.56) и (1.57), пока не придёт (с достаточной точностью) в некоторый стандартный режим. Этот результат и соответствует тому образу, который вспоминает сеть. При непрерывном функционировании сети Хопфилда есть ещё одна возможность – с появлением нового входного вектора заменить его координатами соответствующие координаты y (n) и продолжить динамику сети.

Известно [166, 232], что если матрица W симметрична и имеет нулевую главную диагональ, то последовательность y(n) сходится. Если при этом ( x) = sign( x), то эта последовательность становится стационарной после достаточного множества шагов. Для исследования динамики системы (1.56) (1.57) в данном случае используется функция Ляпунова вида y T Wy.

Применяется также асинхронное функционирование [96, 142, 166, 217, 221, 232], при котором координаты обновляются по одной. Обновлять координаты можно по очереди или выбирая обновляемый нейрон случайно.

Выбор нейронов для обновления может быть и неравномерным, т.е. некоторые нейроны могут обновляться чаще других. Можно применять и промежуточный вариант, при котором обновляется некоторая выборка координат – например, наиболее сильно меняющихся от шага к шагу. При непрерывном функционировании сети Хопфилда с появлением части координат нового входного вектора можно заменить ими соответствующие координаты y (n) и продолжить динамику сети.

Если мы хотим применить сеть Хопфилда для запоминания некоторого M множества образцов x1, x 2,..., x M, то можно взять W = x k xT, нормировать эту k k = матрицу подходящим образом и обнулить диагональ. При этом динамика сети Хопфилда приводит к запоминаемому образцу, если на вход подаётся такой же вектор с некоторым небольшим искажением [96, 142, 166, 217, 221, 232].

Другой вариант построения сети Хопфилда [183] получается, если мы будем искать матрицу W из уравнения WX=X, где X – матрица наблюдений, составленная из векторов x1, x 2,..., x M. Тогда W=XX+, где X+ – псевдообратная матрица к X. Для ускорения вычислений можно также использовать итерационную форму построения псевдообратной матрицы для X. Можно также применить итерационную форму построения матрицы W Wk +1 = Wk + h(xi Wk xi )xT. (1.58) i При этом входная последовательность пробегается многократно. Такой способ позволяет удобным образом работать с пополняемой выборкой.

Упомянем ещё несколько возможностей для ускорения работы алгоритма обучения сети Хопфилда:

• Во-первых, наблюдения для подстановки в формулу (1.58) можно брать не все подряд: выбирать их с некоторой вероятностью, которая должна быть больше для более поздних наблюдений, или просто брать определённое число последних наблюдений.

• Во-вторых, можно увеличивать частоту повторения тех образцов, которые запоминаются хуже.

• Более быстро сходящийся метод получится, если заменить (1.58) подходящим вариантом фильтра Калмана [161].

Строя сеть Хопфилда, следует учитывать, что она может распознать p ограниченное число образцов – оно оценивается как, где p – число 4ln p нейронов (размерность вектора y (n) ).

Нейронные сети Хопфилда применяют не только для решения задачи запоминания информации, но и для решения задач дискретной оптимизации [113]. Например, таким образом можно сформулировать известную задачу коммивояжёра. Однако стандартное применение сетей Хопфилда в этих задачах не является очень эффективным, вероятно потому, что оно основано на методе градиентного спуска, который в сложных задачах сходится медленно. Разумно предположить, что, сформулировав с помощью сетей Хопфилда другие, более эффективные алгоритмы, можно значительно улучшить результаты решения таких задач.

Одним из известных методов такого улучшения является применение так называемой машины Больцмана [96, 142, 228, 232], действие которой заключается в том, что переход в (1.57) осуществляется случайным образом, т.е. в качестве рассматривается случайное отображение. Если ограничиться покоординатными функциями, то вероятность перехода в соответствующей системе стремится к единице, когда аргумент этой функции стремится к бесконечности – такое поведение напоминает процедуру имитации отжига (см.

алгоритм 3.27 из главы 3). Вероятность такого перехода от шага к шагу должна увеличиваться, при этом процесс становится всё более детерминированным.

Сети Хемминга. Сети Хемминга [38, 96, 119, 122, 142, 149, 166, 183, 192, 217, 221, 228, 232] являются некоторой модификацией сетей Хопфилда. Эта архитектура получается, если на входе сети Хопфилда добавить слой нейронов, которые вычисляют меру рассогласования входного вектора с набором эталонов. Пусть на вход сети подаётся вектор, который является бинарным, т.е.

координаты принимают значения 0 или 1. Нейроны входного слоя линейны, а 1m весь этот слой действует в соответствии с формулой y j = ( xi( j ) xi + n). Здесь 2 i = число xi( j ) является i -й координатой j -го образца, j = 1,..., M. Таким образом y j = n d (x j, x), где d (x j, x) – расстояние Хемминга (число отличающихся координат) между входным вектором и j -м образцом. Получившийся вектор подаётся на сеть Хопфилда, у которой отображение действует покоординатно, причём в качестве функции активации можно использовать a при x a x при x 0 или ( x) = x при a x 0, или иную функцию похожего ( x) = 0 при x 0 0 при x вида, например какую-либо сигмоидальную функцию. Весовая матрица слоя Хопфилда имеет единичную диагональ, а вне диагонали небольшие отрицательные элементы (рекомендуется в качестве них брать одинаковые числа, не превосходящие по модулю ). В результате обычного M функционирования слоя Хопфилда через некоторое число шагов останется одна положительная координата, номер которой соответствует номеру образца, ближайшего к входному вектору.

Рассмотренная архитектура сети Хемминга позволяет сохранить большее число образцов, чем стандартная сеть Хопфилда, однако можно ещё улучшить её работу, вводя некоторые дополнительные модификации [183].

Двунаправленная ассоциативная память (сеть Коско). Сеть Коско [96, 122, 142, 149, 174, 183, 228] является некоторой модификацией сети Хопфилда, предназначенной для установления связей между двумя векторами x и y;

она функционирует следующим образом. Если подать на сеть входной вектор x, то на её выходе образуется вектор y(1) в соответствии с формулой y (1) = ( Wx).

Этот выход подаётся обратно на вход сети и получается новое значение x(1) = ( WT y (1)) и т. д. На произвольном шаге мы можем записать z1 (n) = Wx(n 1);

y (n) = (z1 (n)). (1.59) z 2 (n) = WT y (n);

x(n) = (z 2 (n)) Сеть функционирует заданное число циклов или до стабилизации выхода.

Обычно задаётся два набора векторов x1, x 2,..., x M и y1, y 2,..., y M, между которыми устанавливаются ассоциации, и если на сеть подать x x i, то, после нескольких циклов функционирования, на выходе должен получиться ассоциированный с ним вектор y i. Матрица W обычно определяется изначально по векторам образцов формулой M W = y i xT. (1.60) i i= Такой сети ставится в соответствие функция Ляпунова, равная y T Wx.

Применение этой функции позволяет получить те же результаты, что и для сети Хопфилда, а именно сходимость итерационного процесса. Если пара ( x i, y i ) доставляет функции Ляпунова локальный минимум, то она успешно распознаётся сетью, если нет, то может и не распознаваться.

Сети Джордана [96, 142, 183, 228]. Этот вид сетей получается из многослойного персептрона, если на его вход подать помимо входного вектора выходной с задержкой на один или несколько тактов. Будем считать, что задержка составляет один такт и вектор z(n) состоит из векторов y l (n), l = 0,1,..., L 1, где L – число слоёв персептрона, вектор y(n) является вектором y (n) = y L (n). Тогда функционирование сети описывается выходов сети соотношениями y 0 ( n) = W0 x( n) + W (1) y ( n 1), (1.61) y l (n) = Wll ( y l 1 ( n)), (1.62) y ( n) = WL L ( y L 1 ( n)). (1.63) Легко видеть, что эти формулы получаются из приведённых выше соотношений для многослойного персептрона добавлением второго слагаемого в равенство (1.53).

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

Эта глубина может быть разной для различных координат вектора y.

Обучение такой сети зависит от поставленной задачи. Самый простой вариант возникает, если задано два ряда последовательностей – y i ( n) и xi ( n).

При этом веса сети подбираются исходя из минимизации суммарной ошибки N Ei = en (y i (n), y (n, xi (n), xi (n 1),..., xi (1))).

E = Ei, где Очевидно, что n = i градиент E можно вычислить, суммируя градиенты en, которые вычисляются так же, как и в общем случае.

Более сложный вариант получается, если сеть рассматривать как модель объекта, на который можно подавать некоторые последовательности входных векторов x i ( n), объект будет выдавать соответствующие последовательности выходов y i ( n), и по этой информации нужно построить нейронную сеть, т.е.

подобрать её структуру и веса. Этот вариант рассматривается в следующей главе.

Сети Элмана [96, 142, 183, 228]. Сети Элмана так же, как и сети Джордана, получаются из персептрона введением обратных связей, только связи идут не от выхода сети, а от выходов внутренних нейронов.

В классическом варианте сеть имеет один слой нейронов и функционирует в соответствии с формулами y 0 ( n + 1) = W0 x( n) + W (1) ( y 0 ( n)), (1.64) y ( n) = W1 ( y 0 ( n)). (1.65) Заметим, что равенство (1.64) определяет нелинейную динамическую систему, несколько более сложную, чем сеть Хопфилда, так как на вход системы подаётся вектор x(n). Если вектор x(n) отличен от нуля только в начальный момент времени, то мы получаем в качестве первого слоя обычную сеть Хопфилда. В качестве координат вектора x(n) могут быть использованы значения входов в разные моменты времени.

Частным случаем сети Элмана являются сети RTRN, которые получаются, если в качестве W1 взять единичную матрицу. Легко видеть, что эти сети являются также частным случаем сетей Джордана в случае однослойной сети и единичной матрицы весов выходного слоя.

Предложенное в данном параграфе единообразное представление разнообразных динамических нейросетевых моделей, которые обычно описываются различным образом, открывает возможности применения единого подхода к построению этих моделей в зависимости от целей моделирования.

Такие подходы будут предложены в следующей главе.

1.5. Многорядные дифференциальные уравнения При построении дифференциального уравнения по экспериментальным данным в случае, если заранее неизвестны не только коэффициенты, а ещё и порядок (и даже сама структура) уравнения, которое может достаточно точно смоделировать рассматриваемый объект, возникают дополнительные сложности. В этом случае для подбора дифференциальной модели можно использовать подход, аналогичный рассмотренному ранее многорядному алгоритму (см. 1.1 и [131-134]). Этот подход состоит в подборе усложняющихся моделей, при этом существенно, что коэффициенты моделей и их структура определяются оптимизацией различных функционалов.

Начнём с простейшей задачи построения модели в виде линейного однородного обыкновенного дифференциального уравнения с постоянными коэффициентами. Если требуется по данным y ( x1 ) = f1,..., y ( x p ) = f p подобрать наилучшим образом дифференциальное уравнение a0 y ( n ) +... + an1 y + an y = 0, то можно применить многорядный алгоритм, рассматривая на каждом ряду d селекции модели вида yl +1 = wi yi,l + w j y j,l + wd,k ( yk,l ). При этом часть данных dx используется для построения функционала вида (1.20) в описанной ранее модификации – для настройки весов, а часть – для построения другого функционала – для отбора лучших представителей из настроенных моделей, при этом точность удовлетворения уравнения можно проверить в необходимом числе точек.

В качестве иллюстрации опишем по шагам многорядный алгоритм построения линейной дифференциальной модели с постоянными коэффициентами:

1. Всё множество экспериментальных данных разбивается на две части.

2. Рассматриваем множество всех моделей первого ряда селекции d вида y (1) = w(1) y + wd (1) ( y ). Коэффициенты этих моделей подбираются dx минимизацией расхождения между решениями уравнений и первой частью экспериментальных данных.

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

4. Из m получившихся моделей строим модели второго ряда селекции d y (2) = wi (2) yi (1) + w j (2) y j (1) + wd,k (2) ( yk (1)), i, j, k = 1,...m, подбирая вида dx коэффициенты по первой части экспериментальных данных.

5. Процесс выбора повторяем необходимое число раз. На последнем шаге выбирается одна наилучшая модель.

Можно строить более сложную модель, для которой коэффициенты уравнения являются некоторыми нейросетевыми функциями. При этом второй и четвёртый шаги приведённого выше алгоритма существенно меняются.

Основная проблема, которая проявляется в данном случае, состоит в том, что получившееся в результате такого построения нелинейное дифференциальное уравнение аналитически не решается. Выход из ситуации состоит в применении итерационного алгоритма, сочетающего этапы подбора весов сетей, соответствующих коэффициентам моделей, и стадии построения приближённого решения соответствующих уравнений, исходя из минимизации очевидным образом модифицированного функционала (1.20). Для определения структуры этих функций можно использовать какой-либо генетический алгоритм из главы 2. Точно так же можно рассмотреть неоднородное уравнение с неизвестной правой частью, которая ищется в классе некоторых нейросетевых функций.

Принципиально новый класс моделей возникает, если рассмотреть многорядный алгоритм, у которого новый ряд селекции определяется d ( yk,l ), где – некоторая yl +1 = wi yi,l + w j y j,l + w,k ( yk,l ) + wd,k равенством dx нелинейная активационная функция (например, сигмоидного типа). Для построения каждой такой модели нужно определить всего четыре коэффициента, входящие линейно, хотя в результате получается весьма сложная нелинейная модель. Принципиально важно, что построение такой модели производится с помощью такого же алгоритма, как и для линейной модели с переменными коэффициентами.

Ещё более сложные модели возникают, если wi, w j, w,k и wd,k считать не константами, а функциями, которые можно представить нейронными сетями.

Для определения структуры таких моделей можно предложить дважды многорядный алгоритм, который заключается в следующем. Каждый этап определения основной модели состоит в том, что рассматривается набор линейных моделей определённой выше структуры, коэффициенты wi, w j, w,k и wd,k каждой из которых являются нейросетевыми функциями, и структура этих функций тоже может определяться многорядным алгоритмом (или иным, например, генетическим алгоритмом или кластеризацией ошибок). Таким образом, на каждом этапе основного алгоритма реализуется несколько этапов вспомогательного, причём число этапов само может подбираться с помощью некоторого генетического алгоритма из главы 2.

Можно сразу рассмотреть такую многорядную модель, когда на вход слоя нейронов будет подаваться результат действия линейного дифференциального оператора на выходы предыдущего слоя, а функция активации может быть просто сигмоидной функцией или некоторым нелинейным оператором (линейным «в малом» и имеющим ограниченный образ «в большом»).

Примером такого оператора может служить отображение ( ( y ))( x) = ( x, y ( x), x)dx, где : y ( x) – ограниченная функция, дифференцируемая в нуле по второму аргументу и обладающая необходимыми свойствами гладкости по первому.

Аналогичным образом можно рассмотреть и многослойную модель с частными производными. Многорядный алгоритм построения такой модели практически не отличается от рассмотренного выше, только на каждом ряду селекции следует рассматривать модели вида yl +1 = wi yi,l + w j y j,l + w,k ( yk,l ) + wp,k ( y k,l )..

x p Глава 2. Структурные алгоритмы построения статических и динамических нейронных сетей В данной главе строится комплекс методов и алгоритмов нахождения нейросетевой зависимости y =f (x, w ) по экспериментальным данным (которые могут быть заданы, в том числе, дифференциальными или иными соотношениями). При этом основное внимание будет сосредоточено на поиске структуры функции f в сочетании с поиском вектора весов w, так как поиск одних весов без подбора структуры, как это делается в подавляющем большинстве работ по нейронным сетям, оставляет важнейший вопрос выбора структуры на несовершенную интуицию пользователя. Имевшиеся до выхода [217] генетические алгоритмы оптимизации структуры нейронных сетей [126, 142, 196, 202, 239, 250] предполагают переход к её бинарному кодированию, что не позволяет выбрать параметры генетических операций разумным образом. В [238] предложен генетический алгоритм в естественных терминах, но в нём не проработаны вопросы начальной генерации сети, связи с целями моделирования, использование критериев МГУА [131-134] (см. предыдущую главу), сочетание с процедурами подбора параметров и т.д.

Общая схема работы подобных алгоритмов следующая:

Формулировка задачи в виде системы функционалов, типа 1.

искомой модели (нейросети), начальной структуры и других начальных параметров. Чаще всего задаётся не одна начальная структура, а целый набор.

2. Коэффициенты модели (моделей) адаптируются в соответствии с выбранным алгоритмом (алгоритмами) оптимизации целевого функционала. Подробнее об алгоритмах оптимизации см. главу 3.

3. Структура модели (набора моделей) меняется по определённым правилам, при этом обычно используется целевой функционал, отличный от того, который применялся на предыдущем шаге.

4. Шаги 2 и 3 повторяются до достижения требуемого качества модели или весь промежуток времени, в течение которого требуется строить адаптивную модель функционирующего объекта.

Во второй части главы сконструированы новые методы и алгоритмы построения нейронных сетей, специально приспособленных для обработки динамических данных. Основная задача, решаемая этими сетями – подбор по выборке {x(n), y (n)}, n = 1,..., N зависимости вида (1.52). При этом выборка может пополняться, т.е. N может расти.

Рассматриваемые методы существенно используют постановку задачи.

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

2.1. Построение статической нейронной сети прямого распространения по статической выборке Большой проблемой в применении наиболее употребительной нейронной сети – многослойного персептрона – является отсутствие проработанных алгоритмов подбора его структуры. То же можно сказать относительно сети с частичной структурой связей. Данный параграф посвящён ликвидации этого пробела в случае работы со статической выборкой.

Будем искать вектор w, для которого суммарная ошибка по всем примерам (опытам) минимальна N E ( w ) = en min. (2.1) n = Обычно для ошибки по одному примеру en применяют формулу 1 en = y n f (w, x n ), но можно использовать выражение en = y n f (w, x n ) для уменьшения влияния отдельных выбросов или заменить (2.1) с целью получения более равномерного приближения на выражение E ( w ) = max en.

1 n N Можно применить и более общую формулу N E ( w ) = nen, (2.2) n = где n 0 – заданная заранее последовательность.

В случае, когда точность измерений может быть разной и заранее неизвестна, можно в процессе подбора параметров менять n. Заметим, что вектор w обычно ищут с помощью некоторого итерационного алгоритма (см.

главу 3). Перед началом работы алгоритма задаём некоторое начальное значение вектора w и вычисляем соответствующие значения ошибок en. После этого вычисляем n таким образом, чтобы все слагаемые в (2.2) были одинаковы. После этого запускаем упомянутый выше итерационный алгоритм на заданное число шагов или до выполнения некоторого условия, означающего попадание в локальный минимум и повторяем процедуру подбора множителей n. При таком подходе вес отдельных экспериментов, плохо укладывающихся в модель, будет постоянно уменьшаться. Более аккуратным этот подход становится, если ввести ограничения min n max.

Для реализации приводимого ниже алгоритма обычно исходную выборку делят на две части – обучающую и тестовую. По обучающей выборке в соответствии с формулой (2.1) формируют функционал, который используют для подбора весов сети. Тестовую выборку используют для построения вспомогательного функционала (набора функционалов), который применяется для подбора структуры.

Алгоритм 2.1. Генетический алгоритм определения структуры многослойного персептрона.

1. Определяем исходный размер популяции, начальную структуру сетей, виды нейронов (функции активации) и другие параметры алгоритма.

2. Вычисляем главные компоненты входной выборки. Для каждой сети из популяции берём столько главных компонент, сколько должно быть у соответствующей сети нейронов первого слоя.

3. Главные компоненты пропускаем через слой нейронов в соответствии с выбранными функциями активации.

4. К выходам нейронов применяем пункты 2 и 3 столько раз, сколько слоёв должно быть в сетях, которые мы строим. При этом разные сети в популяции могут иметь различное число слоёв.

5. Строим линейную регрессию, входами которой являются выходы нейронов последнего слоя, а выходами – выходы сети в соответствии выборкой.

6. Проверяем условие останова.

7. К каждой сети из набора применяем заданное число шагов некоторого (одного и того же) алгоритма обучения (подбора весов) или этот алгоритм применяем к каждой сети в течение одного и того же времени.

8. Вычисляем значение некоторого вспомогательного функционала (например, критерия МГУА из 1.1) на каждой сети и отбрасываем заданное число худших сетей (это число может быть нулём).

9. Ко всем или некоторым сетям из набора применяем операции мутации. Мутация состоит в использовании с некоторой вероятностью одной из приведённых далее процедур удаления или добавления нейронов или добавления слоя. Вероятность применения мутации, вообще говоря, зависит от значения выбранного вспомогательного функционала – чем оно выше, тем больше эта вероятность.

10. Повторяем пункты 7 и 8.

11. Для лучших (по вспомогательному функционалу) пар сетей проводим операцию скрещивания. Скрещивание состоит в соединении случайно выбранного куска одной сети с аналогичным куском другой. При этом количество слоёв соединяемых сетей должно совпадать, слой одной сети соединяется со следующим по номеру слоем другой, и не должно получаться пустых слоёв. Перекрестные связи наделяются весами в соответствии с приведёнными далее процедурами добавления нейронов. Возможен выбор для скрещивания наиболее непохожих друг на друга пар из множества лучших. При этом непохожесть можно определять как по несходству структуры, весов, так и по отличию множеств правильно (с ошибкой не больше заданного уровня) решаемых примеров. Более точно – для скрещивания брать пару, для которой объединение множеств правильно решаемых примеров максимально.

12. Повторяем пункты 7 и 8.

13. Повторяем шаги 7-12 до выполнения условий останова. Одним из таких условий является наличие сети, дающей достаточно малую ошибку.

Заметим, что как основной, так и вспомогательный функционалы могут меняться от шага к шагу.

Рис.2.1. Блок-схема алгоритма построения многослойного персептрона Обсудим некоторые детали приведённого алгоритма и его возможные модификации.

Некоторые из шагов 9 и 11 можно опустить. Обычно параметры подбирают так, чтобы общее число сетей после проведения шагов 8-12 осталось неизменным, хотя можно рассматривать и популяции переменного размера.

При этом в процессе работы алгоритма имеет смысл уменьшать размер популяции одновременно с увеличением среднего размера сети.

Для определения начальных весов сети не обязательно применять метод главных компонент. Недостатком этого метода является ограничение числа нейронов каждого слоя размерностью входа. Если начальную структуру сети выбирать из каких-либо других соображений, то для того чтобы запустить процесс обучения, надо присвоить её весам какие-либо начальные значения.

Проще всего было бы взять их нулевыми, но тогда в соответствии с (1.27) производные тоже окажутся равными нулю, т.е. градиентные методы подбора весов запустить не удаётся. Уйти от этой проблемы можно, начав подбор весов не с градиентного метода, а с использования одного из методов нулевого порядка. Возможен и другой подход – взять в качестве начальных весов малые случайные числа [96, 98, 183, 232]. Можно выбирать wijl ) независимыми ( 1 случайными числами, равномерно распределёнными на отрезке, ml ml 1, ), где (более удачный выбор – число нейронов в ml ml ml соответствующем слое. Выходные веса можно инициализировать нулями.

Можно брать веса независимыми нормально распределёнными числами с нулевым математическим ожиданием и дисперсией. Можно отказаться от ml w = 1.

( l ) независимости и задать условие ij i, j Заметим, что рассмотренный в первой главе алгоритм Ойя и другие итерационные алгоритмы построения главных компонент обладают тем преимуществом, что позволяют строить сразу все слои, уточняя входы для метода главных компонент, соответствующего каждому слою, и коэффициенты линейной регрессии в процессе работы. Такой подход упрощает построение параллельной реализации алгоритма.

Число включаемых в обработку главных компонент не обязательно задавать априорно. Это число можно выбирать в процессе обработки, фиксируя часть дисперсии, отражаемой главными компонентами [4].

Если ошибка по обучающей выборке убывает слишком медленно и не становится достаточно малой в процессе обучения, то производят добавление нейронов или увеличивают вероятность такой операции в процессе мутаций.

Пусть в l -й слой мы хотим добавить один нейрон. При этом надо определить входные и выходные веса этого нейрона. Простейший способ сделать это состоит в том, что полагают входные веса wi(,lml1)1 равными + [ i, i ], случайным числам, равномерно распределённым на отрезке i = min wijl 1), а выходные веса wml )+1, j полагают равными случайным числам, ( ( 1 j ml l равномерно распределённым на отрезке [ j, j ], где j = min wijl ).

( 1i ml Помимо добавления отдельных нейронов можно добавлять в конструируемую сеть целые слои. Для того чтобы встроить между двумя слоями ещё один, требуется определить количество нейронов в нём, а также входные и выходные веса. Количество нейронов добавляемого слоя полагают равным числу нейронов последующего слоя, входные веса добавляемого слоя получаются делением весов связей разделяемых слоёв на заданное число A (например 100 или модуль максимального веса);

если производная активационной функции нейронов добавляемого слоя равна (0), то веса на A выходе добавляемого слоя wii =, а wij для i j – независимые равномерно (0) 1 распределённые числа на отрезке [, ].

(0) (0) Если (0) = 0 или не существует, то эта операция неприменима.

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

Применяются различные процедуры удаления нейронов [183]. Самая простая процедура состоит в том, что удаляется нейрон, имеющий минимальную сумму модулей выходных коэффициентов (или сумму их квадратов).

Следующая процедура несколько сложнее, но и точнее. Её удобно применять в случае, когда производятся вычисления градиента, т.е. до удаления нейронов реализуется некоторый градиентный алгоритм. Удаляется нейрон, для N N y yj,l (n) или которого (n) минимальны. Ещё лучше удалять нейрон с j,l n =1 n = N (x (n) x j,l ) 2. После этого среднее значение выхода удаляемого минимумом j,l n = нейрона, умноженное на его выходной вес, добавляется к соответствующему выходу 1, если она присутствует в слое. Если нейрон с единичным выходом отсутствует, то его необходимо добавить в данный слой с выходом, вычисленным в предыдущем пункте.

Помимо удаления нейронов можно удалять отдельные связи. При этом возможны два варианта: либо веса удаляют во время обучения – тогда мы получаем сеть с частичной структурой связей, описанную в следующем пункте, либо после обучения для уменьшения размера сети – тогда надо проверять, что ошибка осталась достаточно малой. Можно удалять наименее значимые связи, пока ошибка не выйдет за заранее заданные рамки.

Заметим, что приведённый выше генетический алгоритм подбора структуры многослойного персептрона не является единственным. Можно вместо него без особых проблем реализовывать и более изощрённые процедуры эволюции [120, 196, 246], применённые к популяции многослойных персептронов.

Алгоритмы модификации строения сети с частичной структурой связей. С точки зрения генетических алгоритмов основным недостатком многослойного персептрона является невозможность реализации генетических операций (мутаций, транслокаций и скрещивания) на уровне отдельных связей.

Рассмотренная в предыдущей главе конструкция сетей с частичной структурой связей лишена этого недостатка. Кроме того, она позволяет для начальной генерации сети использовать многорядный алгоритм вместо метода главных компонент, что существенно сокращает вычислительную трудоёмкость и позволяет реализовать процедуру целенаправленного отбора с самого начала.

Алгоритм 2.2. Генетический алгоритм определения структуры сети прямого распространения с частичной структурой связей.

1. Строим набор линейных моделей, делая шаг (несколько шагов) в соответствии с линейным многорядным алгоритмом (см. параграф 1.1).

На l + 1-м шаге работы алгоритма рассматриваем сети вида 2.

yl +1 = w0 + wi yi,l + w j y j,l + w,k ( yk,l ). Здесь yi,l – i -й выход сети, получившийся после l -го шага. Если рассматриваются степенные связи, то добавляется слагаемое вида wpq y p,l yq,l. В разных моделях можно выбрать различные функции активации. При этом у части моделей можно заранее обнулить часть коэффициентов, т.е. рассматривать модели с весами w0, wi, w j по отдельности (или вместе) равными нулю. Можно часть моделей брать с w,k = 0. Параметры моделей подбираются с помощью какого-либо алгоритма оптимизации функционала E. При этом для каждой выходной переменной в выборке на каждом ряду строится свой набор моделей. Если нет оснований считать выходы связанными, то эти наборы в дальнейшем не смешиваются и для каждого выхода строится своя сеть. Если мы считаем выходы зависимыми (т.е. подчиняющимися какой-то общей закономерности), то на каждом ряду селекции переменные смешиваются, т.е. в отбор включаются линейные комбинации переменных, отобранные и по разным выходам.

3. Выбираем некоторое множество моделей, соответствующих наименьшим значениям вспомогательного функционала.

4. Повторяем шаги 2 и 3 требуемое число раз 5. К каждой сети из набора применяем заданное число шагов некоторого (одного и того же) алгоритма обучения или этот алгоритм применяем к каждой сети в течение одного и того же времени.

6. Вычисляем значение некоторого критерия МГУА на каждой сети и отбрасываем заданное число худших сетей (это число может быть и нулём).

7. Ко всем или к некоторым сетям из набора применяем описанные ниже операции мутации и транслокации. Вероятность применения мутации и транслокации, вообще говоря, зависит от значения выбранного критерия – чем выше критерий, тем больше эта вероятность.

8. Повторяем пункт 5.

9. Для лучших (по вычисленному критерию) пар сетей проводим описанную ниже операцию скрещивания. Повторяем пункт 3.

10. Повторяем шаги 2-6 до выполнения условий останова.

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

Рис.2.2. Блок-схема генетического алгоритма построения сети с частичной структурой связей Для сокращения вычислений при реализации многорядного алгоритма (шаги 1-4) можно коэффициенты первых рядов вычислять по более коротким выборкам, рассматривая и отбирая больше моделей, а для дальних рядов выборки должны расти, а количество моделей – убывать. На последнем ряду можно оставить только одну лучшую модель. Перед доучиванием имеет смысл привести сеть, т.е. исключить лишние коэффициенты, совершив все возможные линейные подстановки.


Остановимся подробнее на определении основных генетических операций. Проще всего определить точечные мутации сети. Для них существует несколько вариантов:

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

2) Удаление связи. Если это была единственная входящая в вершину или исходящая из неё связь, то удаляется весь соответствующий нейрон.

3) Добавление нейрона. При этом нужно сгенерировать хотя бы одну входящую и хотя бы одну исходящую связь. Задать веса связей, входящих в этот нейрон и исходящих из него, можно таким образом, как это делалось при добавлении нейрона в многослойный персептрон или так же, как и при добавлении связи в первом варианте мутации.

4) Удаление нейрона со всеми входящими и исходящими связями. При этом может потребоваться удаление и других нейронов, у которых пропала последняя входящая или исходящая связь.

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

Сложнее разумным образом определить транслокацию, т.е. процедуру выделения части сети и присоединения её каким-то другим образом. Один вариант состоит в том, чтобы переместить одну связь или все связи (входящие или исходящие) какого-либо нейрона к другим нейронам. Другой подход – удалять наименее значимые связи, пока сеть не распадётся, а далее – добавить связи случайным образом по описанному выше способу. Можно выделить несколько нейронов с номерами, идущими подряд, и изменить нумерацию нейронов так, чтобы они оказались в другом месте сети. При этом все связи, ставшие неправильными, т.е. идущими от нейрона с большим номером к нейрону с меньшим, удаляются или их направление меняется на противоположное. Наконец, можно просто случайным образом разъединить сеть и объединить снова другим образом и генерировать веса новых связей опять случайно. Для того чтобы увидеть, является ли такая операция успешной, сеть придётся достаточно долго обучать.

Для процедуры скрещивания мы получаем те же самые проблемы, что и для транслокации, но их придётся решать для каждой из скрещиваемых сетей.

Скрещивание состоит в соединении случайно выбранного куска одной сети с куском другой и для рассматриваемого типа сети имеет несколько меньше структурных ограничений по сравнению с аналогичной процедурой для многослойного персептрона. Перекрестные связи наделяются случайными весами в соответствии с приведённой выше процедурой добавления нейронов.

Один из вариантов заключается в том, чтобы обучить две сети на разных подмножествах, например, кластерах, произвести процедуру выбрасывания нейронов, у сетей соединяются входы и выходы, а создание перекрёстных связей оставить на последующие мутации.

Последний вариант скрещивания может быть трансформирован в отдельный алгоритм построения коллектива сетей по аналогии с построением коллектива регрессий из [139]. Такой алгоритм будет приведён в следующем параграфе – см. алгоритм 2.4.

В следующих параграфах будут обсуждаться варианты модификации алгоритмов для нейронных сетей другого типа.

2.2. Кластерный анализ. Сети Кохонена и Гроссберга Представленные в предыдущей главе известные подходы к обучению сетей Кохонена не всегда оказываются удовлетворительными с точки зрения практики. Главная проблема стандартных сетей Кохонена – фиксированное заранее число нейронов и, тем самым, фиксированное число кластеров. В то же время существует достаточно много алгоритмов кластеризации, в процессе работы которых число кластеров подбирается в зависимости от свойств классифицируемой выборки [4, 111, 123]. Представляется весьма целесообразным придать аналогичную возможность сетям Кохонена, чему и посвящён данный параграф.

Определение структуры сети Кохонена. Для определения оптимального числа нейронов в сети Кохонена, как и для определения числа кластеров вообще, можно применить генетический алгоритм. При этом для построения вспомогательного функционала можно применить метод разбиения выборки на две подвыборки, минимизируя число по-разному классифицированных точек.

Алгоритм 2.3. Генетический алгоритм определения структуры сети Кохонена.

1. Точки исходной выборки разбиваем попарно, объединяя ближайшие друг к другу.

2. Строим две подвыборки, относя в каждую по одной точке из каждой пары.

3. На первом ряду обучается набор из пар нейронов.

4. Выбираем заданное число лучших пар.

5. Возможны варианты данного шага:

a. Можно перебирать попарные соединения точек, разделяя выборку на четыре класса с последующим дообучением.

b. Можно рассматривать асимметричные варианты, когда нейроны одной пары продолжают обучаться на обоих подмножествах другой пары или добавляются к нейронам другой пары по одному.

6. Определяем некоторый набор сетей Кохонена, различающихся между собой количеством нейронов и начальными весами.

7. К каждой сети из набора применяем заданное число шагов выбранного алгоритма обучения.

8. Вычисляем значение упомянутого выше вспомогательного функционала на каждой сети и отбрасываем заданное число худших сетей (это число может быть и нулём).

9. Ко всем или к некоторым сетям из набора применяем операции мутации и транслокации. Мутацию можно реализовать:

a. случайным возмущением весов или входного примера, b. удалением нейрона, c. добавлением нейрона со случайными весами, d. объединением двух классов, e. случайным разбиением одного класса на два.

Для сети Кохонена объединению классов соответствует взвешенное (в соответствии с числом элементов выборки, выделяемых данным нейроном) усреднение соответствующих весов, с последующим обучением получившегося нейрона. Разбиение на два класса осуществляется следующим образом – берём кластер, соответствующий данному нейрону, вводим вместо одного нейрона два, возмущая случайно его веса, и обучаем их на этом кластере по обычному правилу.

Для транслокации имеется ещё больше возможностей. Например, можно взять два разных нейрона, сделать несколько шагов их обучения на множествах друг друга и продолжить алгоритм обычным образом. Другой подход – разбить входное множество и множество нейронов на два, применить некоторое число шагов процедуры обучения отдельно к каждому множеству нейронов на своём множестве входных векторов, а потом снова объединить множества нейронов и входное множество и продолжить процедуру обучения.

Вероятность применения мутации и транслокации, вообще говоря, зависит от значения выбранного критерия – чем выше критерий, тем больше эта вероятность.

10. Повторяем пункт 7.

11. Для лучших (по вычисленному критерию) пар сетей проводим операцию скрещивания. Скрещивание осуществляется естественным образом – берём часть нейронов от одной сети, а часть – от другой сети и вместе продолжаем обучать дальше.

12. Повторяем пункт 7.

13. Повторяем шаги 8-12 до выполнения условий останова.

Рис.2.3. Блок-схема генетического алгоритма построения сети Кохонена Можно совместить генетический алгоритм кластеризации с генетическим алгоритмом построения нейронной сети (например, с одним из приведённых в предыдущем параграфе). В результате получается следующий алгоритм:

Алгоритм 2.4. Двойной генетический алгоритм построения коллектива нейронных сетей.

1. Исходная выборка ( x1, y1 ), ( x 2, y2 ),..., ( x N, y N ) кластеризуется, при этом кластеры могут пересекаться.

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

3. Производятся мутации – добавляются и исключаются переменные и точки кластеров.

4. Происходят транслокации – кластеры обмениваются точками, а сети – входными переменными и соответствующими коэффициентами.

5. Происходит скрещивание – сети, соответствующие двум кластерам объединяются и дообучаются, если это необходимо.

6. К каждой сети относятся те наблюдения, для которых она даёт минимальную ошибку. Если к какой-либо сети относится слишком мало точек, то она исчезает из популяции, а относящиеся к ней точки распределяются снова по тому же принципу между оставшимися сетями.

7. Шаги 2-6 повторяются необходимое число раз.

8. Определяется «область компетентности» каждой сети, т.е. область входных переменных, для которой данная сеть даёт наилучший результат из всех сетей.

Рис.2.4. Блок-схема алгоритма построения коллектива нейронных сетей Данный алгоритм можно применить не только к построению многослойного персептрона или сети с частичной структурой связей, но и к построению сетей других видов, например, представленных в следующих параграфах.

Для кластеризации возможны и другие варианты генетических операций.

Например, для скрещивания можно предложить вариант мелкого дробления, когда в один кластер попадают точки, соответствующие одинаковым кластерам обоих родителей или вариант крупного дробления, когда в один кластер попадают точки, входящие в одинаковые кластеры для хотя бы одного родителя. Возможно применение смешанного варианта – аналог доминантных и рецессивных генов. Классы каждого родителя можно разделить на жёсткие, которые не делятся, и мягкие, которые делятся. Можно в начале процесса обучать разные нейроны на различных подмножествах входных данных.


2.3. Сети с радиальными базисными функциями (RBF-сети) Определение структуры RBF-сетей является даже более актуальной задачей, чем определение структуры многослойного персептрона, так как обычно для той же точности аппроксимации требуется больше RB-функций. В данном параграфе представлены алгоритмы определения структуры этого вида сетей, использующие кластеризацию и генетические операции. Кроме того, обсуждаются некоторые новые виды нейронных сетей и области их возможного приложения.

В соответствии с предыдущей главой RBF–сеть зададим формулой k k jls ( xl c jl )( xs c js ) m y = w j j (x), где j = e. Обучение такой сети сводится к s =1 l = j = подбору оптимальных (по отношению к заданному функционалу или набору, и jls.

функционалов) весов w j, C js Вместо подбора коэффициентов jls в процессе нелинейной оптимизации (см. 1.3), можно поступить и по-другому – привести исходную входную выборку {xi } к главным компонентам и RB-функции строить уже в этих осях [232].

Можно применить и несколько иной вариант – кластеризовать выборку и главные компоненты выделять не по всей выборке, а только по отдельному кластеру. Этот метод является, по-видимому, более точным, но он требует аккуратного приведения к старым координатам уже обученной сети. В результате получается следующий алгоритм:

Алгоритм 2.5. Алгоритм построения RBF – сети, основанный на кластеризации ошибок и главных компонентах.

1. Проводим кластеризацию исходной выборки {x n, yn }, учитывая не только выходы, но и входы.

2. В качестве векторов c j, координатами которых являются параметры, берём центры кластеров.

C js 3. Для каждого кластера строим главные компоненты.

4. По разбросу точек кластера вдоль главных компонент определяем коэффициенты jls.

5. Находим w j как коэффициенты линейной регрессии.

6. При необходимости уточняем все параметры с помощью какого – либо алгоритма нелинейной оптимизации.

Вычисляем ошибки аппроксимации n.

7.

Повторяем шаги 1 – 6 для выборки {x n, n }.

8.

9. Повторяем процесс, пока ошибки не станут достаточно малыми.

Рис.2.5. Блок-схема алгоритма построения RBF-сети, основанного на кластеризации ошибок и главных компонентах Такой подход привлекателен тем, что позволяет обойти проблемы многомерной нелинейной оптимизации – наличие оврагов, ложные локальные экстремумы и т.п. – и подобрать правильную структуру сети.

Если использовать итерационные методы кластеризации (обучение сетей Кохонена), построения главных компонент (типа алгоритма Ойя) и определения коэффициентов линейной регрессии (например, итерационные методы решения линейных систем), то можно шаги 1-5 алгоритма 2.5 совершать параллельно.

Рассмотрим аналог алгоритма 2.4 для RBF-сетей. Этот алгоритм получается некоторой модификацией алгоритма 2.5 с учётом особенностей структуры RBF-сетей.

Алгоритм 2.6. Алгоритм построения коллектива RBF-сетей.

1. Исходную выборку ( x1, y1 ), ( x 2, y2 ),..., ( x N, y N ) кластеризуем, при этом кластеры могут пересекаться.

2. Так же, как и в предыдущем алгоритме, для строим аппроксимацию каждого кластера одной базисной функцией, т.е. по точкам, вошедшим в j -й кластер, определяем w j, j ( jl или jls ) и c j.

3. Из базисных функций образуем набор (популяцию) RBF-сетей, суммируя базисные функции с близкими кластерами. При этом одна базисная функция может войти в сумму для нескольких сетей.

4. К подмножеству данных, соответствующих конкретной RBF-сети относим те наблюдения, для которых она даёт минимальную ошибку. Если к какой-либо сети относится слишком мало точек, то убираем её из популяции, перераспределяя соответствующее ей подмножество данных.

5. Сети обучаем: каждую на своём подмножестве данных.

6. Производим мутации – добавляем и исключаем переменные и точки кластеров. Проводим транслокации – кластеры обмениваются точками, а сети – переменными и соответствующими коэффициентами. Осуществляем скрещивание – сети, соответствующие двум группам кластеров объединяем и дообучаем на общем множестве, если это необходимо.

7. Отбрасываем сети, худшие по вспомогательному функционалу.

8. К точкам, для которых не существует сети, дающей достаточно малую ошибку, применяем шаги 1-6.

9. Шаг 7 повторяем до тех пор, пока не будут исчерпаны все точки выборки.

10. Строим вспомогательную сеть, которая определяет, к какой RBF сети относится произвольная точка области, в которой располагается выборка.

Рис.2.6. Блок-схема алгоритма построения коллектива RBF-сетей, основанного на кластеризации ошибок и главных компонентах Комбинированные сети. Если многослойный персептрон или RBF-сеть по отдельности не позволяют построить адекватной модели, то можно применить гибридную сеть, сочетающую в себе и тот и другой вид сетей.

Построить такую сеть можно разными способами.

Самый простой способ состоит в том, чтобы задать выход комбинированной сети как сумму выходов сетей одного и другого вида.

Наиболее подходящими задачами для применения сетей подобной архитектуры являются такие, в которых логика, моделируемая многослойным персептроном отражает основные особенности моделируемых данных, но точность получается недостаточной. Для таких задач вначале обучаем многослойный персептрон, при этом число нейронов у него не должно быть слишком большим, далее вычисляем ошибки аппроксимации, которые даёт построенный персептрон, и по полученной остаточной выборке строим RBF-сеть, применяя алгоритм кластеризации ошибок.

Следующий очевидный подход состоит в том, чтобы подать выход RBF сети на вход многослойного персептрона или, наоборот, подать выход многослойного персептрона на вход RBF-сети. Следует заметить, что много новых видов сетей с помощью такого приёма построено на сетях другого вида и успешно применялось [122, 174]. Для рассматриваемых типов сетей такая конструкция не представляется особенно удачной, хотя первый вариант может быть полезен для неявной нечёткой кластеризации, в особенности, если RBF сеть строится с помощью алгоритма кластеризации ошибок или похожего на него.

Для последнего типа задач более перспективным видом сети представляется функция, получающаяся при замене элементов матриц Wl в формуле (1.25) на RBF-сети. При этом сначала строим набор RBF-сетей с помощью алгоритма 2.6, причём к каждой сети относим достаточно представительную часть кластеров, центры которых по возможности удалены друг от друга. Выходы RBF-сетей подаём на входы нейронов с активационной функцией персептронного типа и для выходов этих нейронов повторяем предыдущий шаг и т.д. столько раз, сколько слоёв должен иметь многослойный персептрон. Получившуюся сеть можно доучить каким-либо методом нелинейной оптимизации.

Результат, аналогичный коллективу RBF-сетей может дать сеть, конструкция которой является двойственной к предыдущей. У такой сети веса w j, j и c j заменяются на выходы персептронов. При этом структура и веса всех персептронов (кроме нейронов, соответствующих последнему слою) могут быть взяты одинаковыми. После начальной генерации, для которой можно использовать метод главных компонент, сеть можно доучить.

Аналогичным образом можно строить и другие комбинированные сети, например, многочлены с персептронными коэффициентами или коэффициентами в виде RBF-сетей. В результате можно предложить следующий алгоритм построения вложенных сетей.

Алгоритм 2.7. Алгоритм построения системы вложенных сетей.

1. Строим выбранную внешнюю сеть. Для этого можно применить один из приведённых выше алгоритмов.

2. Если ошибка недостаточно мала, то кластеризуем входную выборку и доучиваем сеть отдельно для каждого кластера.

3. Каждый вес исходной сети заменяем на некоторую новую сеть, входы которой соответствуют входам выборки, а выходы – получившимся в предыдущем пункте значениям весов.

4. Если ошибка недостаточно мала, то повторяем шаги 2 и 3.

Рис.2.7. Блок-схема алгоритма построения системы вложенных сетей 2.4. Многослойный персептрон с временными задержками и связанные с ним нейросетевые архитектуры Главная цель данного параграфа состоит в построении алгоритмов структурной адаптации для динамических аналогов нейронных сетей из параграфа 2.1. В случае многослойного персептрона с временными задержками (см. параграф 1.4) легко получить соответствующий вариант алгоритма 2.1, поэтому сосредоточимся на алгоритмах построения сетей с частичной структурой связей и временных сетей специальной структуры.

Сети с частичной структурой связей. Так же, как и для стационарных сетей, интерпретация на языке графов позволяет удобным способом строить генетические алгоритмы подбора структуры сети указанного типа. Для описания работы генетического алгоритма, так же, как и в предыдущих параграфах, необходимо ввести генетические операции – мутации, транслокации и скрещивание, а также определить критерии отбора сетей в следующее поколение. Основная структура таких операций и общая структура алгоритма сохраняются по сравнению со статическими сетями, только, по видимому, имеет смысл ограничить появление связей с большой разностью времён слоёв. Один из способов состоит в уменьшении вероятности появления такой связи в зависимости от времени t в (1.48).

Для точечных мутаций существует несколько вариантов, аналогичных мутациям для статических сетей:

1) Добавление связи между нейронами, для которых этой связи не было (при этом связь должна быть направлена от нейрона с меньшим номером к нейрону с большим номером и от более раннего временного отсчёта к более позднему или отвечающему тому же значению времени). При этом начальное значение веса такой связи разумно выбрать малой случайной величиной, причём эту величину разумно уменьшать в зависимости от разности номеров нейронов и разности временных отсчётов.

2) Удаление связи (и если это была единственная входящая в вершину или исходящая из неё связь, то удаляется весь соответствующий этой вершине нейрон).

3) Добавление нейрона. При этом нужно создать хотя бы одну входящую и хотя бы одну исходящую связь. Задать веса связей, входящих в этот нейрон и исходящих из него, можно таким же образом, как и при добавлении связи в первом варианте мутации. Число таких связей должно быть небольшим по описанным выше причинам.

4) Удаление нейрона со всеми входящими и исходящими связями. При этом может потребоваться удаление и других нейронов, у которых пропала последняя входящая или исходящая связь. Разумно строить сети с небольшим числом связей – удаление нейронов следует проводить с осторожностью (с малой вероятностью), так как это может повлечь цепную реакцию удаления других нейронов и, как следствие, разобучение сети (резкое возрастание ошибки).

5) Изменение временного отсчёта нейрона, аналогичного которому нет в соответствующий момент времени. При выполнении данной операции надо следить за тем, чтобы не появилось недопустимых связей.

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

Различным образом можно определить и транслокацию, т.е. процедуру выделения части сети и присоединения её каким-то другим образом. Несколько таких вариантов было приведено в 2.1, и они могут быть перенесены на рассматриваемые здесь сети без особых изменений. Для сетей с временными задержками возникает один удобный дополнительный вариант. Берём один или несколько нейронов, имеющих одинаковые индексы, но соответствующие разным временным отсчётам и меняем их связи друг с другом.

Скрещивание состоит в соединении случайно выбранного куска одной сети с куском другой. Перекрестные связи наделяются случайными весами в соответствии с приведённой ранее процедурой добавления нейронов. Можно провести эту операцию следующим образом – обучить две сети на различных временных подвыборках, провести процедуру выбрасывания нейронов, у сетей объединить входы и выходы, при этом создание перекрёстных связей остаётся на последующие мутации.

Алгоритм 2.8. Генетический алгоритм определения структуры сети прямого распространения с временными задержками и частичной структурой связей.

1. Строим набор линейных моделей авторегрессии, делая шаг (несколько шагов) в соответствии с линейным многорядным алгоритмом.

На l + 1-м шаге работы алгоритма рассматриваем сети вида 2.

yl +1 (n) = w0 + wi yi,l (n) + w j y j,l (n) + wm ym,l (n 1) + w,k ( yk,l (n)). Здесь yi,l (n) – i -й выход сети, получившийся после l –го шага в n -й момент времени. Напомним, что эта формула применяется ко всем рассматриваемым n сразу, только множество используемых временных отсчётов для подбора коэффициентов может быть относительно небольшим, так как подбирается всего пять коэффициентов. Если рассматриваются степенные связи, то добавляется слагаемое вида w pq y p,l (n) yq,l ( n). Также можно перебирать более короткие модели вида:

1) yl +1 (n) = w0 + wi yi,l (n).

2) yl +1 (n) = w,k ( yk,l (n)).

3) yl +1 (n) = wi yi,l (n) + w j y j,l (n).

4) yl +1 (n) = w j y j,l (n) + wm ym,l (n 1).

При этом селекция может производиться как по всем видам моделей вместе, так и по каждому виду моделей по-отдельности. Наличие всего двух коэффициентов позволяет особенно просто решать соответствующие линейные системы (напоминаем, что для коэффициентов каждой модели мы имеем обычную линейную регрессию). Параметры моделей подбираются с помощью какого-либо алгоритма оптимизации функционала E (обучения сети). При этом для каждой выходной переменной в выборке на каждом ряду строится свой набор моделей. Если мы считаем выходы зависимыми (т.е. подчиняющимися какой-то общей закономерности), то на каждом ряду селекции переменные смешиваются, т.е. в отбор включаются линейные комбинации переменных, отобранные и по разным выходам.

3. Выбираем подмножество моделей в соответствии с некоторым вспомогательным функционалом.

4. К каждой сети из набора применяем заданное число шагов некоторого (одного и того же) алгоритма обучения или этот алгоритм применяем к каждой сети в течение одного и того же времени.

5. Вычисляем значение вспомогательного функционала на каждой сети и отбрасываем заданное число худших сетей (это число может быть и нулём). При этом, если выборка пополняется, то последние значения следует считать более важными. В другом случае важно отбрасывать не просто худшие сети, а те, для которых всегда найдётся лучшая сеть с точки зрения ошибки по любому фиксированному примеру.

6. Ко всем или к некоторым сетям из набора применяем описанные выше операции мутации и транслокации. Вероятность применения мутации и транслокации, вообще говоря, зависит от значения вспомогательного функционала – чем выше критерий, тем больше эта вероятность.

7. Для лучших (по вычисленному критерию) пар сетей проводим описанную выше операцию скрещивания.

8. Повторяем пункт 4.

9. Сеть готова к работе, когда вариация её выходов соответствует вариации выходов выборки или темп модификации её весов соответствует темпу изменения выборки, при этом доучивание (выполнение шагов 4-8) продолжается по мере пополнения выборки.

Рис.2.8. Блок-схема алгоритма определения структуры сети прямого распространения с временными задержками и частичной структурой связей Временные сети специальной структуры. Другой способ уменьшить количество подбираемых параметров в темпоральных сетях состоит в том, чтобы не изменять каждый вес сам по себе, а задаться некоторой зависимостью между ними. Формулу (1.48) можно трактовать как некоторый фильтр.

Наиболее употребительным преобразованием такого рода является вычисление дискретного преобразования Фурье. Самый простой способ состоит в выборе 2 k ikjl t, где обычно берут kjl = весовых коэффициентов в виде wkjl ) (t ) = e ( или pl kjl = jl k. Более аккуратные оценки спектра получаются, если взять ikjl t wkjl ) (t ) = hl (t )e (, где hl (t ) – функция, задающая некоторое так называемое «окно данных». Существует масса различных функций, применяемых при решении того или иного типа задач фильтрации, и в соответствии с этим можно сконструировать нейронные сети различных конструкций. При этом преобразования на каждом слое могут решать свои задачи. Например, на входе каждого нейрона некоторого слоя вырезается некоторый участок спектра входного сигнала.

Алгоритм 2.9. Блочный генетический алгоритм определения структуры сети прямого распространения с временными задержками и частичной структурой связей.

1. Строим набор линейных временных преобразований, каждое из которых осуществляет некоторую стандартную функцию.

2. Определяем популяцию сетей, на вход каждого нейрона которых подаём результат действия одного преобразования из набора. При этом организация такой популяции может быть послойной, когда каждому слою нейронов соответствует свой набор линейных преобразований. Некоторые слои могут представлять собой обычный слой с временными задержками.

Стандартные функции могут содержать свободные параметры, которые можно будет подобрать позднее в процессе обучения сети.

3. К каждой сети из набора, содержащей непрерывно изменяющиеся неизвестные параметры, применяем заданное число шагов некоторого алгоритма обучения или этот алгоритм применяем к каждой сети в течение одного и того же времени.

4. Вычисляем значение вспомогательного функционала на каждой сети и отбрасываем заданное число худших сетей, для которых всегда найдётся лучшая по сравнению с ними сеть с точки зрения ошибки по любому фиксированному примеру. При этом более поздние примеры должны обладать большим весом.

5. Ко всем или к некоторым сетям из набора применяем операции мутации и транслокации. Операция мутации состоит в изменении дискретно меняющихся свободных параметров некоторого блока, например pl или в добавлении или исключении некоторого блока. Транслокация состоит в замене одного стандартного блока на другой – например, функция Хеннинга заменяется функцией Блекмана. Вероятность применения мутации и транслокации, вообще говоря, зависит от значения выбранного вспомогательного функционала – чем выше значение функционала, тем больше эта вероятность.

6. Повторяем пункт 3.

7. Для лучших (по вспомогательному функционалу) пар сетей проводим операцию скрещивания, которая состоит в том, что у сетей объединяются входы и выходы, а создание перекрёстных связей остаётся на последующие мутации.

8. Повторяем пункт 3.

9. Сеть готова к работе, когда темп модификации её весов соответствует темпу изменения выборки, при этом доучивание продолжается по мере пополнения выборки.

Рис.2.9. Блок-схема блочного генетического алгоритма определения структуры сети прямого распространения с временными задержками и частичной структурой связей Вместо разложения по тригонометрическому базису можно использовать разложение по другим базисам, например, вейвлетам – см. [115, 187, 243, 248].

Ещё одна перспективная возможность заключается в использовании быстрых нейронных сетей [112-116]. Основную идею таких сетей можно продемонстрировать на примере дискретного преобразования Фурье.

Вычисление такого преобразования можно ускорить, если матрицу преобразования разложить на множители, каждый из которых является слабо заполненной матрицей. Конкретная процедура такого рода называется быстрым преобразованием Фурье. Если эти множители рассматривать как веса нейронной сети, а функцию активации выбрать такую, чтобы при малых аргументах она была близка к тождественной функции, тогда получится сеть, которая при малых входных сигналах вычисляет дискретное преобразование Фурье, а большие выбросы сглаживает. Было бы интересно изучить статистические свойства такого преобразования.



Pages:     | 1 | 2 || 4 | 5 |   ...   | 10 |
 





 
© 2013 www.libed.ru - «Бесплатная библиотека научно-практических конференций»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.