Общие сведения о программах моделирования нейронных сетей
Программу моделирования нейронной сети обычно называют программой-имитатором или нейропакетом, понимая под этим программную оболочку, эмулирующую для пользователя среду нейрокомпьютера на обычном компьютере.
В настоящее время на рынке программного обеспечения имеется множество самых разнообразных программ для моделирования нейронных сетей. Можно выделить несколько основных функций, которые реализованы во всех этих программах.
Формирование (создание) нейронной сети
Для решения разных практических задач требуются различные модели нейронных сетей. Модель нейронной сети определяется моделями нейронов и структурой связей сети.
Программы-имитаторы в зависимости от структуры связей реализуют следующие группы нейронных сетей.
- Многослойные нейронные сети. Нейроны в таких сетях делятся на группы с общим входным сигналом - слои. Различают несколько типов связей между слоями с номерами q и (q + р):
- последовательные (р=1);
- прямые (р > 1);
- обратные (р < 0).
Связи между нейронами одного слоя называют латеральными (боковыми).
- Полносвязные нейронные сети. Каждый нейрон в полносвязных сетях связан со всеми остальными. На каждом такте функционирования сети на входы нейронов подается внешний входной сигнал и выходы нейронов предыдущего такта.
- Нейронные сети с локальными связями. Нейроны в таких сетях располагаются в узлах прямоугольной или гексагональной решетки. Каждый нейрон связан с небольшим числом (4, 6 или 8) своих топологических соседей.
- Неструктурированные нейронные сети. К этой группе относятся все модели нейронных сетей, которые нельзя отнести ни к одной из предыдущих групп.
Модели реализуемых программами-имитаторами нейронов чрезвычайно разнообразны. В простейшем случае нейроны первого порядка выполняет взвешенное суммирование компонентов входного вектора и нелинейное преобразование результата суммирования. Нейроны более высоких порядков осуществляют перемножение двумерных матриц и многомерных тензоров.
В моделях нейронов используются различные варианты нелинейных преобразований. Наиболее часто используются сигмоидальные, кусочно-линейные и жесткие пороговые функции активации. В сети все нейроны могут иметь как одинаковые (гомогенная сеть), так и различные функции активации (гетерогенная сеть).
Для построения нейронной сети, ориентированной на решение конкретной задачи, используются процедуры формирования нейронных сетей, которые обеспечивают ввод указанных характеристик моделей нейронов и структур нейронных сетей.
Каждая группа моделей нейронных сетей может быть использована для решения лишь некоторого ограниченного класса практических задач. Так, многослойные и полносвязные нейронные сети с сигмоидальными передаточными функциями используются для распознавания образов и адаптивного управления; нейронные сети с локальными связями - для обработки изображений и некоторых других частных задач. Для решения задач линейной алгебры используются многослойные сети с особыми передаточными функциями.
Лишь для небольшого числа моделей нейронных сетей существует строгое математическое обоснование возможности их применения для решения конкретных практических задач. В наибольшей степени теоретически проработаны двухслойные нейронные сети с сигмоидальными передаточными функциями. На основе Колмогорова-Арнольда доказано, что такие сети могут реализовывать любые отображения входного сигнала в выходной. К построению многопараметрических отображений сводится большинство задач распознавания, управления, идентификации.
Обучение нейронной сетиВ большинстве программ-имитаторов предлагаются стандартные процедуры обучения нейронных сетей, ориентированные на конкретные нейропарадигмы.
Как правило, в нейропакетах реализуется возможность задания различных типов данных и различных размерностей входных и выходных сигналов в зависимости от решаемой задачи. В качестве входных данных в обучающей выборке могут использоваться растровые изображения, таблицы чисел, распределения. Типы входных данных - бинарные (0 и 1), биполярные (-1 и +1) числа, целые или действительные числа из некоторого диапазона. Выходные сигналы сети - векторы целых или действительных чисел.
Для решения практических задач часто требуются обучающие выборки большого объема. Поэтому в ряде нейропакетов предусмотрены средства, облегчающие процесс формирования и использования обучающих примеров. Однако в настоящее время отсутствует универсальная методика построения обучающих выборок и набор обучающих примеров, как правило, формируется индивидуально для каждой решаемой задачи.
В качестве функции ошибки, численно определяющей сходство всех текущих выходных сигналов сети и соответствующих требуемых выходных сигналов обучающей выборки, в большинстве случаев используется среднеквадратичное отклонение. Однако в ряде нейроимитаторов существует либо возможность выбора, либо задания своей функции ошибки.
Реализуемые в нейропакетах алгоритмы обучения нейронных сетей можно разделить на три группы: градиентные, стохастические, генетические. Градиентные алгоритмы (первого и второго порядков) основаны на вычислении частных производных функции ошибки по параметрам сети. В стохастических алгоритмах поиск минимума функции ошибки ведется случайным образом. Генетические алгоритмы комбинируют свойства стохастических и градиентных алгоритмов: на основе аналога генетического наследования реализуют перебор вариантов, а на основе аналога естественного отбора - градиентный спуск.
При обучении нейронных сетей, как правило, используются следующие критерии останова:
- при достижении некоторого малого значения функции ошибки;
- в случае успешного решения всех примеров обучающей выборки (при неизменности выходных сигналов сети).
В нейроимитаторах предусмотрено наличие специальных процедур инициализации перед обучением сети, т. е. присваивания параметрам сети некоторых малых случайных значений.
Обучение представляет, собой итерационную процедуру, которая при реализации на персональных компьютерах требует значительного времени. Скорость сходимости алгоритма обучения является одной из самых важных характеристик программ для моделирования нейронных сетей.
Тестирование обученной нейронной сетиДля проверки правильности обучения построенной нейронной сети в нейроимитаторах предусмотрены специальные средства ее тестирования. В сеть вводится некоторый сигнал, который, как правило, не совпадает ни с одним из входных сигналов примеров обучающей выборки. Далее анализируется получившийся выходной сигнал сети.
Тестирование обученной сети может проводиться либо на одиночных входных сигналах, либо на тестовой выборке, которая имеет структуру, аналогичную обучающей выборке, и также состоит из пар (<вход>, <требуемый выход>). Обычно, обучающая и тестовая выборки не пересекаются. Тестовая выборка строится индивидуально для каждой решаемой задачи.
Характеристики современных нейропакетов
В настоящее время известно большое количество нейропакетов, выпускаемых рядом фирм и отдельными исследователями и позволяющих конструировать, обучать и использовать нейронные сети для решения практических задач.
Рассмотрим несколько нейропакетов, предназначенных для реализации на персональных компьютерах в различных операционных средах, по степени их универсальности, а также с точки зрения простоты использования и наглядности представления информации.
NeuroSolutions предназначен для моделирования большого набора нейронных сетей. Основное его достоинство состоит в гибкости: помимо традиционных нейросетевых парадигм (полносвязных и многослойных НС, самоорганизующихся карт Кохонена) нейропакет включает в себя мощный редактор визуального проектирования нейронных сетей, позволяющий создавать любые нейронные структуры и алгоритмы их обучения, а также вводить собственные критерии обучения. NeuroSolutions имеет хорошие средства визуализации структур, процессов и результатов обучения и функционирования нейронных сетей. Это ставит данный нейропакет на уровень CAD-систем (систем автоматизированного проектирования) проектирования и моделирования НС.
Пакет предназначен для работы Windows. Помимо средств взаимодействия с операционной системой (OLE), нейропакет снабжен генератором исходного кода и позволяет использовать внешние модули при создании и обучении нейронной сети. Пакет поддерживает программы, написанные на языке C++ для компиляторов Microsoft Visual C++ и Borland C++, а также в виде DLL-кода. Таким образом, NeuroSolutions является гибкой открытой системой, которую можно при необходимости дополнять и модифицировать. Пакет содержит встроенный макроязык, позволяющий производить практически любую настройку под конкретную задачу.
В пакете реализуется большой перечень нейронов, включая взвешенный сумматор (нейрон первого порядка), нейроны высших порядков (с перемножением входов), а также непрерывный интегрирующий нейрон. Функция активации нейрона может быть выбрана из пяти стандартных (кусочно-линейная, функция знака и три типа сигмоидальных) функций, а также задана пользователем. Связи между нейронами задаются произвольно на этапе проектирования и могут быть изменены в процессе работы. Поддерживаются все, типы связей: прямые, перекрестные и обратные. При этом хорошо реализована схема организации связей: можно задать одну векторную связь с заданной весовой матрицей, а не набор скалярных связей с весовыми коэффициентами.
Нейропакет NeuroSolutions содержит мощные средства для организации обучающих выборок. Встроенные конверторы данных поддерживают графические изображения в формате BMP, текстовые файлы с числовыми или символьными данными, а также функции непрерывного аргумента (например, времени), заданные в аналитическом виде или в виде выборки значений. Нейропакет позволяет использовать любые внешние конверторы данных.
На этапе обучения может быть использован широкий круг критериев обучения, как дискретных, так и непрерывных. Помимо этого можно вводить собственные критерии. Можно использовать как встроенный алгоритм обучения типа back-propagation или дельта-правила, так и использовать собственный. Система визуализации процесса обучения позволяет проводить анализ изменения весов непосредственно в процессе обучения и вносить коррективы. Может быть введена шумовая характеристика как при тестировании, так и при обучении нейронной сети. Можно задать аддитивный белый шум, шум произвольной природы, а также любой заданный тип шума (например, белый мультипликативный). Neurosolutions содержит генератор (мастер) стандартных нейросетевых архитектор (Neural Wizard, с помощью которого быстро задается архитектура, подбираете" обучающая выборка, критерии и методы обучения нейронной сети.
Нейропакет NeuralWorks Professional II/PlusNeuralWorks Professional является мощным средством для моделирования нейронных сетей. В нем реализованы 28 нейронных парадигм, а также большое количество алгоритмов обучения. Дополнительный модуль UDND (User Define Neural Dynamics) позволяет создавать собственные нейронные структуры.
Как и NeuroSolutions, NeuralWorks Professional имеет хорошую систему визуализации данных: структуры нейронной сети, изменения ошибки обучения, изменения весов и их корреляции в процессе обучения. Последнее является уникальным свойством пакета и полезна при анализе поведения сети.
В NeuralWorks Professional можно интегрировать внешние программные модули. Он имеет встроенный генератор кода, поддерживающий компилятор Microsoft Visual C++.
Способ представления информации незначительно отличается от NeuroSolutions.
Process Advisor предназначен для решения задач управления динамическими процессами (в частности, технологическими процессами). Однако он может считаться универсальным нейропа-кетом. В нем реализована только многослойная нейронная сеть прямого распространения, обучаемая с помощью модифицированного алгоритма обратного распространения ошибки. В пакет введена возможность работы с входными сигналами как с функциями времени, а не дискретным набором точек. Такой возможностью помимо Process Advisor обладает только NeuroSolutions. Кроме того, нейропакет Process Advisor позволяет осуществлять управление внешними аппаратными контроллерами, подключаемыми к компьютеру. Именно эти две особенности делают нейропакет Process Advisor примечательным.
NeuroShell 2 является одной из трех программ, входящих в состав пакета The Al Trilogy и представляет собой универсальный нейропакет для моделирования нескольких наиболее известных нейронных парадигм: многослойных сетей, сетей Кохонена и т. д.
NeuroShell 2 сильно проигрывает по сравнению с NeuroSolutions и NeuralWorks. Он имеет много мелких недостатков, существенно замедляющих подготовку и работу в среде нейропакета. Кроме недостаточно продуманного интерфейса нейропакет NeuroShell имеет и усложненную систему визуализации данных. Из-за отсутствия единого интегрального контроля данных в процессе обучения или работы нейронной сети часто приходится переключаться из одного режима в другой, что неудобно в использовании.
Для NeuroShell характерна жесткая последовательность действий при работе с нейронной сетью. Это удобно для начинающих пользователей. Однако, для того, чтобы внести небольшое изменение приходится выполнять заново всю последовательность действий.
NeuroShell предоставляет хорошие средства обмена данными с другими приложениями. Он обеспечивает обмен данными, представленными в текстовом бинарном виде, а также в наиболее популярных финансовых форматах MataStock и DowJones. Нейро-пакет имеет генератор исходного кода на языках Visual С и Visual Basic.
BrainMaker Pro является простым нейропакетом для моделирования многослойных нейронных сетей, обучаемых с помощью алгоритма обратного распространения ошибки. Основным его достоинством является большое число параметров настройки алгоритма обучения. В остальном BrainMaker Pro уступает NeuroSolutions и NeuralWorks, особенно, в наглядности представляемой информации и простоты интерфейса.