- •Содержание
- •Введение
- •1 Программное обеспечение реализации генетического алгоритма в составе системы выращивания топологии нейронной сети
- •1.1 Анализ требований
- •1.1.1 Постановка задачи
- •1.1.2 Анализ предметной области
- •1.1.2.1 Независимое применение генетических алгоритмов и нейронных сетей
- •1.1.2.2 Нейронные сети для поддержки генетических алгоритмов
- •1.1.2.3 Генетические алгоритмы для поддержки нейронных сетей
- •1.1.2.4 Применение генетических алгоритмов для обучения нейронных сетей
- •1.1.2.5 Генетические алгоритмы для выбора топологии нейронных сетей
- •1.1.2.6 Адаптивные взаимодействующие системы
- •1.1.2.7 Нейроэволюционные методы
- •1.1.3 Анализ существующих аналогов
- •1.1.4 Методы и средства решения поставленной задачи
- •1.1.4.1 Методы решения задачи и варианты использования разрабатываемого программного обеспечения
- •1.1.4.2 Технологические средства разработки
- •1.2 Математическая модель предметной области
- •1.3 Проектирование
- •1.2.1 Проектирование структур данных
- •1.3.2 Проектирование структуры программного обеспечения и алгоритмов
- •1.3.3 Проектирование пользовательского интерфейса
- •1.4 Описание программного обеспечения
- •1.5 Результаты тестирования
- •2 Технико-экономическое обоснование разработки по для реализации генетического алгоритма в составе системы выращивания топологии нейронной сети
- •2.1 Расчет затрат на разработку программы
- •2.2 Расчет цены разработанной программы
- •2.3 Расчет капитальных вложений
- •2.4 Расчет эксплуатационных расходов
- •2.5 Расчет денежного годового экономического эффекта
- •2.6 Определение показателей эффективности инвестиций
- •2.7 Вывод по разделу
- •3 Оптимизация зрительных условий труда пользователя пэвм
- •3.1 Условия работы пользователя пэвм
- •3.2 Требования к визуальным параметрам изображения
- •3.3 Требования к освещению помещений и рабочих мест с вдт и пэвм
- •Заключение
- •Список использованных источников
- •Листинг программы Приложение а
1.1.3 Анализ существующих аналогов
К настоящему времени сформировался обширный рынок нейросетевых продуктов. Подавляющее большинство продуктов представлено в виде моделирующего программного обеспечения. С развитием генетических алгоритмов и их применением для настройки и обучения искусственных нейронных сетей, появляется ряд приложений, библиотек и пакетов, реализующих различные алгоритмы настройки НС с помощью ГА.
Проведем анализ некоторых из них. Достоинства и недостатки всех этих продуктов в общем случае обусловлены алгоритмом, который они реализуют:
JavaSANE и SANE-C – эти два пакета, реализуют такой метод настройки нейронной сети как SANE (Symbiotic Adaptive Neuro-Evolution). Рассматривается развитие двух популяций, в одной из которых особи представляют собой отдельные нейроны, а в другой содержится информация о структурах НС. Недостатком этого метода является ограничение на количество скрытых нейронов и связей;
ESP C++ и ESP JAVA 1.1 – это пакеты, реализованные соответственно на С++ и JAVA, включают в себя код алгоритма Enforced Sub-Populations Method (ESP). Этот алгоритм является развитием алгоритма SANE. Основным его отличием является то, что структура сети фиксирована, и задается априорно. Популяция нейронов разбивается на подпопуляции, в каждой из которых эволюция идет независимо. Благодаря распараллеливанию поиска решения, а также упрощению задачи за счет отказа от эволюции структуры НС, ESP быстрее, чем SANE, иногда на порядок;
NEAT C++, NEAT:ANJI – данные пакеты представляют реализацию алгоритма NEAT (Neural Evolution through Augmenting Topologies). Позволяет настраивать структуру сети, причем без ограничений на ее сложность. В алгоритме используется ряд приемов, такие, например, как исторические метки и специализация особей, позволяющих сделать процесс эволюции существенно более эффективным;
SharpNEAT – включает в себя реализацию двух методов NEAT и HyperNEAT. Имеет графический интерфейс, а также предоставляет две задачи «Исключающее ИЛИ» и “Хищник-жертва” для экспериментов с настройками нейросетей;
JNEAT – приложение с графическим интерфейсом, предоставляет реализацию алгоритма настройки сети NEAT. Включает в себя две задачи для экспериментов «Исключающее ИЛИ» и «3-bit parity»;
NEAT Delphi – тоже реализует алгоритм NEAT, имеет графический интерфейс и целых 6 задач для экспериментов с нейронными сетями;
NEAT Matlab – пакет, реализующий алгоритм с помощью Matlab и включающий задачу «Исключающее ИЛИ» для экспериментов.
Характеристики и особенности упомянутых программных средств приведены в сводной таблице 1.3.
Основные критерии для сравнения программ – аналогов:
интерфейс – описывает наличие и удобство интерфейса пользователя;
алгоритм – какой нейроэволюционный метод реализован;
метод кодирования нейронной сети – прямой или косвенный;
настройка - некоторые алгоритмы позволяют настраивать только параметры сети при неизменной топологии, другие только топологию. Есть методы, которые позволяют настраивать и веса, и структуру сети.
Указанные выше программные продукты различны по своей функциональности и направленности. Общий недостаток указанных программных средств - использование в основном прямого метода кодирования нейронной сети. Одним из наиболее очевидных минусов такой схемы кодирования является «распухание» генотипа при увеличении количества нейронов и связей НС и, как следствие, низкая эффективность за счет значительного увеличения пространства поиска. Разработанная программная система настройки нейронной сети использует косвенный метод кодирования нейронной сети, но позволяет настроить только топологию НС. Однако программная система обладает и рядом преимуществ перед описанными выше продуктами:
при использовании косвенных методов кодирования генетическое представление (а, соответственно, и пространство поиска для генетических алгоритмов) получается более компактным, а сам генотип позволяет кодировать модульные структуры, что дает в определенных условиях преимущества в адаптивности полученных результатов;
данная система позволяет получить топологию нейронной сети с заданными геометрическими свойствами;
для наглядности топология сети отображается в виде графа;
удобный, интуитивно понятный графический интерфейс.