Читайте также: |
|
Пусть функция F задана набором своих значений в случайных точках пространства R . Построим ее аппроксимацию при помощи комбинаций функций из набора Ф, гладких и непрерывно дифференцируемых.
Аппроксимация может вестись не только подбором коэффициентов, но и выбором на каждом шаге функций. Таким образом, может быть получено разложение функции в сходящийся ряд . Ряд вида может быть представлен как RBF-сеть, имеющая структуру, показанную на рисунке 4.1.
Входные сигналы | Синапсы первого слоя | Сумматоры первого слоя | Преобразователи первого слоя | Синапсы второго слоя | Сумматор второго слоя | Выходной сигнал |
F | ||||||
... | ||||||
Рисунок 4.1 – Структура нейросети
Задача состоит в приближении функции, заданной исходной выборкой точек при помощи нейросети с неизвестным заранее количеством нейронов и видом функции, используемой в преобразователе каждого из нейронов.
Решение может быть представлено как итерационный процесс, состоящий из следующих шагов:
- подключение нового нейрона;
- оптимизация ошибки предсказания значений в заданных точках для текущего нейрона путем подбора функции преобразователя, ее параметров и весов синапсов.
Если заданная точность достигнута, то процесс можно остановить, в противном случае процесс повторяется сначала, причем параметры уже обученных нейронов фиксируются, так что каждый нейрон обучается вычислять погрешность, оставленную от предыдущих.
Таким образом, вычисление градиента функции ошибки будем производить, используя схему, двойственную той, что изображена на рисунке 4.1. Приближаемое k-го нейроном значение функции вычисляется по формуле 4.5.
, | (4.5) |
Опираясь на алгоритм определения градиента методами теории графов, можно рассчитать конкретные компоненты вектора градиента для любого слоя.
1) для скрытого слоя
, | (4.6) |
2) для первого слоя
, | (4.7) |
3) для выходного слоя
, | (4.8) |
Процесс обучения всей сети сводится ее разбиением к ряду последовательных процессов обучения структур вида, представленного на рисунке 4.2.
Входные сигналы | Синапсы первого слоя | Сумматор первого слоя | Преобразователь первого слоя | Синапс второго слоя | Сумматор второго слоя | Выходной сигнал |
F | ||||||
... | ||||||
Рисунок 4.2 – Структура потока
Обучаемая структура представляет собой слой RBF-сети и именуется в дальнейшем «потоком сети». Обучение потока производится алгоритмом обратного распространения ошибки с поиском оптимального шага изменения параметров сети по методу сопряженных градиентов, реализованному на аппарате двойственных функций.
Используя объектно-ориентированную парадигму программирования произведем декомпозицию нейросети. Базовым типом элементов, используемым для описания нейронной сети, является общий элемент сети – абстрактный класс, инкапсулирующий основные свойства и методы, характерные для всех компонентов сети – TnetElement. Класс TNetElement является абстрактным, включает в себя
атрибуты: а) Next – указатель на следующий элемент сети;б) Prev – указатель на предыдущий элемент сети; в) FOut – значение сигнала, передающегося элементов вперед при прямом функционировании; г) BOut – значение сигнала, передающегося элементов назад при обратном функционировании;
методы: а) Create – конструктор объектов;б) Destroy – деструктор объектов;в) FAction() – действия элемента во время такта прямого функционирования;г) BAction() – действия элемента во время такта обратного функционирования;
Для связи сети с задачником и передачи используется объекты класса TNetInput – входной элемент сети. Данный класс является потомком TNetElement и поэтому наследует его атрибуты и методы. Кроме того, класс имеет атрибут Source, который содержит номер поля задачника, с которого данный вход собирает значение.Методы FAction() и BAction() перегружены. Метод FAction() выполняет передачу значения из соответствующего данному элементу поля задачника на выходной сигнал элемента – FOut().Метод BAction() передает двойственный сигнал следующего элемента на свой двойственный сигнал – BOut().
Выходной элемент сети описывает класс TNetOutput, также являющийся потомком TNetElement
Для описания синапсов сети используются объекты класса TNetSyn. Как наследник класса TNetElement, он наследует все методы и атрибуты. Помимо этого включены новые атрибуты: Alpha – вес синапса, Alpha2 – сигнал, двойственный весу синапса.
Тривиальный сумматор реализует класс TNetSum. Помимо атрибутов, унаследованных от базового класса, данный класс имеет в своей структуре указатель на список предыдущих элементов сети, что отражает отношение агрегации межу классом TNetSum и другими на диаграмме классов, представленной на рисунке 4.3.
Нейрон в понимании нелинейного преобразователя реализован как класс TNetNeuron. Для хранения значений параметров радиальной функции (параметр преобразователя, параметр «спонтанной активности») и двойственных им включены атрибуты Alpha,AlphaS, Alpha2,AlphaS2.
Фрагмент сети, состоящий из слоя входных синапсов, сумматора, нейрона и выходного синапса и названный «потоком» представлен в программной модели классом-потомком от абстрактного класса – общий элемент сети.
Целая сеть представлена классом, который также является потомком класса общего элемента сети, что позволяет, используя свойство полиморфизма объектов, достаточно легко компоновать из отдельных фрагментов нейросети более сложные структуры.
Структурное представление сети приведено на рисунке 4.4 в виде диаграммы классов.
Управление разработанной структурой сети осуществляет класс TNetManager.
Набор базисных функций реализован как список классов потомков от абстрактного класса с виртуальной функцией, реализующей функциональную зависимость аргумента и значения функции.
Дата добавления: 2015-08-03; просмотров: 66 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Использование RBF-сети в качестве аппроксиматора | | | Программная модель нейроаппроксиматора |