Содержание к диссертации
Введение
1 Искусственные нейронные сети и массивно-параллельные вычисления 13
1.1 Современное состояние науки в области исследования искусственных нейронных сетей и массивно-параллельных вычислений . 13
1.2 Анализ имеющихся средств моделирования искусственных нейронных сетей 17
1.3 Модель акторов . 22
1.4 Язык программирования Erlang и фреймворк OTP 24
1.5 Выводы по первой главе 30
2 Асинхронная распределенная модель многослойной нейронной сети 32
2.1 Обобщенная многоуровневая модель многослойной нейронной сети . 32
2.2 Обоснование выбора алгоритма «упругого» обратного распространения ошибки (RPROP) . 34
2.3 Асинхронная распределенная модель многослойной нейронной сети (алгоритм обучения RPROP) 37
2.4 Асинхронная распределенная модель многослойной нейронной сети с диспетчеризацией (алгоритм обучения RPROP) 41
2.5 Применение метода гравитационного поиска для обучения многослойного персептрона . 44
2.6 Асинхронная распределенная модель многослойной нейронной сети (алгоритм обучения на основе метода гравитационного поиска) . 46
2.7 Архитектура программной системы моделирования искусственных нейронных сетей 49
2.8 Выводы по второй главе 54
3 Тестирование разработанной системы моделирования искусственных нейронных сетей 56
3.1 Условия, средства и критерии тестирования . 56
3.2 Результаты исследования зависимости среднего времени обучения от объема обучающей выборки 63
3.3 Результаты тестирования асинхронной распределенной модели многослойной нейронной сети (алгоритм обучения RPROP) 65
3.4 Результаты тестирования асинхронной распределенной модели многослойной нейронной сети с диспетчеризацией (алгоритм обучения RPROP) 75
3.5 Сравнение результатов тестирования моделей с диспетчеризацией и без диспетчеризации 85
3.6 Результаты исследование зависимости среднего времени обучения от количества наборов весовых коэффициентов в алгоритме гравитационного поиска 88
3.7 Результаты тестирования асинхронной распределенной модели многослойной нейронной сети (алгоритм гравитационного поиска) . 89
3.8 Сравнение результатов тестирования моделей без диспетчеризации для алгоритмов RPROP и гравитационного поиска . 98
3.9 Выводы по третьей главе 99
4 Применение разработанной системы для решения задачи проектирования композиционных материалов 101
4.1 Постановка задачи проектирования композиционных материалов . 101
4.2 Архитектура нейронных сетей, используемых для решения задач проектирования композиционных материалов 103
4.3 Результаты применения разработанной системы для решения задачи проектирования композиционных материалов 104
4.4 Выводы по четвертой главе 113
Заключение 115
Список принятых сокращений 117
Словарь терминов 118
Список литературы 123
Приложения 136
- Анализ имеющихся средств моделирования искусственных нейронных сетей
- Обоснование выбора алгоритма «упругого» обратного распространения ошибки (RPROP) .
- Асинхронная распределенная модель многослойной нейронной сети (алгоритм обучения на основе метода гравитационного поиска)
- Результаты тестирования асинхронной распределенной модели многослойной нейронной сети (алгоритм обучения RPROP)
Введение к работе
Актуальность темы. В индустрии для обеспечения заданных свойств композиционных материалов, зависящих от состава сырья и параметров технологического процесса, в настоящее время широко применяются математические методы на основе нейросетевых технологий, так как для этого случая не существует тривиально программируемого алгоритма принятия решений. Хорошо зарекомендовавшим себя инструментом для решения данной задачи является многослойный персептрон. В процессе проектирования композитов постоянно растет объем данных для обучения многослойного персептрона. Процедура дополнительного обучения с использованием только лишь новых данных без наращивания объема обучающей выборки приводит к снижению точности результирующих вычислений. Единственный способ поддержания сети в актуальном для решения рассматриваемой задачи состоянии – циклическое обучение, которое приводит к значительному увеличению временных затрат. Ускорение процессов обучения и функционирования многослойного персептрона осуществляется посредством использования массивно-параллельных вычислительных систем.
Существует несколько подходов к распараллеливанию работы многослойного персептрона. Данный вопрос рассматривался в российских
и зарубежных исследованиях (В. Г. Царегородцев, М. С. Герасименко, С. Д. Ионов, А. А. Краснощёков, А. В. Калинин, G. Sher). Все они исходят из того, что наиболее ресурсоемким является не столько процесс функционирования сети, сколько процесс ее обучения. Основным подходом, используемым в исследованиях, является распараллеливание на уровне обучающей выборки, разбиение ее на несколько блоков. Согласно другому подходу элементарные вычислительные элементы сети (нейроны) организуются в группы. Шаги алгоритма обучения выполняются для каждой группы нейронов на отдельном вычислительном узле. И, наконец, существует подход, который сводится к эффективному распараллеливанию матричных операций в процессе обучения сети.
Реализация описанных подходов в современных системах модели-рования имеет ряд недостатков. В частности, отсутствие обобщенной
концепции массивно-параллельных вычислений в многопроцессорных и распределенных вычислительных средах, отсутствие эффективных распределенных алгоритмов обучения.
Многообещающим направлением исследований в области массивно-параллельных вычислений является применение асинхронной обработки данных. Данный подход позволяет максимально использовать вычислительные ресурсы, избегая затрат на синхронизацию между независимыми частями алгоритма. Ранее этот подход не применялся в процессе обучения многослойного персептрона из-за отсутствия адекватной асинхронной нейросетевой модели.
В области обучения искусственных нейронных сетей перспективным является применение алгоритмов обучения на базе методов глобальной оптимизации, поскольку они, как правило, содержат меньшее количество синхронных операций.
Постоянное обучение нейронной сети на новых данных требует повышенной отказоустойчивости, поскольку постоянный контроль работоспособности сети приводит к увеличению времени работы над задачей,
а также требует более высокой квалификации специалистов. Повысить отказоустойчивость можно посредством применения специализированных средств. Однако в настоящее время не существует разработок по искусственным нейронным сетям, использующих подобные возможности и достигающих требуемого уровня отказоустойчивости.
Таким образом, актуальной научной задачей является разработка асинхронной модели многослойного персептрона и основанной на ней отказоустойчивой системы моделирования, позволяющей организовывать процессы обучения и функционирования искусственных нейронных сетей в любых многопроцессорных и распределенных вычислительных средах без дополнительных затрат на разработку модулей массивно-параллельных вычислений. Кроме того, актуальной является задача разработки асинхронного распределенного алгоритма обучения, позволяющего добиться максимально возможной минимизации ошибки нейронной сети и организовать распределенные вычисления для наибольшего числа шагов.
Цель диссертационной работы - разработка отказоустойчивой системы моделирования искусственных нейронных сетей, отличительной особенностью которой является возможность развертывания на любых многопроцессорных и распределенных ресурсах. Алгоритмы обучения и функционирования нейронной сети, реализованные в рамках системы, должны удовлетворять требованиям наискорейшей минимизации ошибки сети и максимизации количества шагов алгоритма, подлежащих выполнению в распределенной среде. Система должна обеспечивать решение ряда практических задач в области технологии производства композиционных материалов, в частности для строительной сферы.
Для достижения поставленных целей были решены следующие задачи:
разработка асинхронной обобщенной модели искусственной нейронной сети, в которой общие и специальные функциональные блоки распределены между различными уровнями модели;
разработка алгоритма взаимодействия уровней обобщенной модели искусственной нейронной сети, включающего частичную синхронизацию асинхронных операций;
разработка асинхронного распределенного алгоритма обучения многослойной нейронной сети, основанного на методе глобальной оптимизации;
выбор и обоснование специализированного средства разработки, позволяющего реализовать отказоустойчивую систему на базе разработанных обобщенной модели и алгоритмов;
разработка на базе платформы Erlang/OTP отказоустойчивой программной системы, в возможности которой входит проектирование произвольной многослойной нейронной сети для любых многопроцессорных и распределенных вычислительных сред;
определение параметров производительности разработанной системы и точности выдаваемых ею результатов вычислений;
апробация системы, применение ее для решения задачи проектирования композиционных материалов.
Объектом исследования диссертационной работы являются системы моделирования многослойных искусственных нейронных сетей.
Предмет исследования - математические модели, а также технические и архитектурные решения для построения эффективной системы моделирования многослойных нейронных сетей.
Методы исследования. Для решения поставленных задач использовались методы системного анализа, теории оптимизации, математической статистики, теории планирования эксперимента, теории искусственных нейронных сетей, функционального и массивно-параллельного программирования.
Научная новизна диссертационной работы состоит в следующем:
1) разработана обобщенная многоуровневая модель искусственной нейронной сети, отличающаяся распределением общих и специальных функциональных блоков между различными уровнями модели и использованием на этих уровнях асинхронных операций;
2) разработан алгоритм взаимодействия уровней обобщенной модели искусственной нейронной сети, особенностью которого является использование частичной синхронизации асинхронных операций;
3) разработан алгоритм обучения многослойной нейронной сети, основанный на методе глобальной оптимизации, отличающийся распределением вычислительных операций по функциональным блокам и введением асинхронного взаимодействия между ними;
4) предложена программная архитектура нейронной сети, отличающаяся максимальным использованием инструментов обеспечения отказоустойчивости платформы Erlang/OTP.
Практическая ценность работы заключается в том, что предложенные модель и алгоритм реализованы в виде программной системы, позволяющей проводить исследования многослойной нейронной сети, а также решать практические задачи, в частности задачу проектирования композиционных материалов.
Достоверность и обоснованность результатов. Обоснованность применения асинхронной распределенной модели и предложенного алгоритма обучения многослойной нейронной сети подтверждается корректностью использования математического аппарата. Достоверность резуль-татов исследования подтверждается соответствием результатов вычис-лительных экспериментов, проведенных в процессе исследования, и
результатов лабораторных экспериментов на заводе-изготовителе, на основе которых проводилась проверка корректности предложенных решений.
Соответствие паспорту специальности. Работа соответствует
пп. 4, 5, 10, 13 паспорта специальности ВАК 05.13.01 – Системный анализ, управление и обработка информации (в технике и технологиях).
На защиту выносятся:
1) асинхронная распределенная обобщенная многоуровневая модель искусственной нейронной сети;
2) алгоритм взаимодействия уровней обобщенной модели искусственной нейронной сети, включающий использование частичной синхронизации асинхронных операций;
3) асинхронный распределенный алгоритм обучения многослойной нейронной сети, основанный на методе глобальной оптимизации;
4) отказоустойчивая распределенная программная система моделирования искусственных нейронных сетей, созданная на базе платформы Erlang/OTP.
Внедрение результатов работы и связь с научными программами.
Диссертационные исследования проводились на кафедре «Автоматизированные системы обработки информации и управления» ФГБОУ ВПО «Мордовский государственный университет» (МГУ) при выполнении государственного контракта с Министерством образования и науки Российской Федерации от 11 октября 2011 г. № 14.527.12.0007, шифр «2011-2.7-527-026-006», по теме «Разработка и организация производства вибро-шумопоглощающих материалов нового поколения для авто-, авиа-, судо-, вагоно-, машиностроения и строительства», при выполнении НИР «Совершенствование методов и алгоритмов резервного копирования и восстановления данных» № 01201277361, а также при выполнении НИОКР «Универсализация, совершенствование и тестирование автоматизированной системы проектирования композиционных материалов» (программа «УМНИК» Фонда содействия развитию малых форм предприятий в научно-технической сфере).
Результаты работы используются на ООО «Завод герметизирующих материалов» (г. Дзержинск), что подтверждено актом о внедрении.
Апробация работы. Основные результаты работы докладывались
и обсуждались на следующих научно-технических конференциях: ежегодной научной конференции «Огаревские чтения» (Саранск, 2010, 2011, 2012, 2013); III Международной научной конференции «Проблемы управления, обработки и передачи информации (АТМ-2013)» (Саратов, 2013); IX Международной научно-практической конференции «Наука в информационном пространстве» (Киев, 2013); Международной конференции «CISSE» (Bridgeport, 2013).
Публикации. По теме диссертации опубликовано 13 печатных работ, в том числе 3 - в журналах, рекомендованных ВАК РФ. Получено одно свидетельство о государственной регистрации программы для ЭВМ.
Структура и объем работы. Диссертация состоит из введения, четырех глав, заключения, списка литературы из 136 наименований и приложения. Объем работы - 137 страниц основного текста, включающего
62 рисунка и 11 таблиц.
Анализ имеющихся средств моделирования искусственных нейронных сетей
Популярность математического аппарата искусственных нейронных сетей привела к созданию огромного количества нейроимитаторов и программных библиотек для моделирования процессов обучения и функционирования ИНС. STATISTICA Automated Neural Networks – богатая, современная, мощная и чрезвычайно быстрая среда анализа нейросетевых моделей. STATISTICA Automated Neural Networks поддерживает современные, оптимизированные и мощные алгоритмы обучения сети (включая методы сопряженных градиентов, алгоритм Левенберга-Марквардта, BFGS, алгоритм Кохонена); полный контроль над всеми параметрами, влияющими на качество сети, такими как функции активации и ошибок, сложность сети; выбор наиболее популярных сетевых архитектур, включая многослойные персептроны; опциональную возможность генерации исходного кода на языках C, C++, C#, Java, PMML (Predictive Model Markup Language), который может быть легко интегрирован во внешнюю среду для создания собственных приложений. Однако данная среда моделирования не ориентирована на выполнение вычислений в распределенной среде [43, 55]. Emergent Neural Network Simulation System — это комплексная среда моделирования для создания сложных моделей мозга и познавательных процессов с помощью аппарата нейронных сетей. Emergent включает в себя полноценное графическое окружение для исследования искусственных нейронных сетей, а также различные инструменты, помогающие понять, как протекает процесс работы сети во время моделирования. Данный программный продукт поддерживает алгоритмы обратного распространения ошибки (простейшие варианты – градиентные с небольшой скоростью сходимости), самоорганизующиеся карты Кохонена, обобщенный алгоритм Хебба, алгоритм LEABRA (Local, Error-driven and Associative, Biologically Realistic Algorithm) [48].
Система Emergent написана на C++. Разработчики широко используют объектно-ориентированное программирование при реализации основных функциональных сущностей системы. Однако используемые сущности являются результатом анализа и синтеза исходных элементарных функциональных блоков, которые включает математическая модель искусственных нейронных сетей. В частности, выделяются отдельно такие сущности, как слой и система связей, но не рассматривается такая сущность, как нейрон.
В последних версиях системы введена поддержка работы симулятора на кластерах на базе стандарта MPI [118, 119], а также вычислений на многоядерных системах с общей памятью. При этом MPI используется в основном для распределенных вычислений математических величин больших размерностей, например, частных производных функции ошибки в пределах слоя. Neural Network Toolbox — пакет, входящий в состав комплексной системы MATLAB, разработанной американской компанией The MathWorks. Neural Network Toolbox позволяет проектировать, обучать, визуализировать и моделировать различные виды ИНС (от персептрона до самоорганизующихся карт). Данный пакет может быть применен для предсказания временных рядов, распознавания образов, кластеризации, моделирования и управления динамическими системами [51, 96]. Все функции пакета реализованы на языке MATLAB. При реализации функций, отвечающих за моделирование и обучение ИНС, акцент сделан на математическую составляющую логической модели ИНС. Как результат, все функциональные возможности нейронных сетей реализованы в виде матричных вычислений. Для ускорения расчетов, сопряженных с моделированием нейронных сетей, может быть применен пакет Parallel Computing Toolbox. Данный пакет позволяет распределять большие объемы данных внутри кластера или осуществлять параллельную обработку в пределах одной многоядерной системы. Указанные возможности реализованы посредством введения аналогов ряда конструкций языка, осуществляющих расчеты в параллельной среде (например, специальная версия цикла for – parfor), а также дополнительная реализация параллельных версий ряда математических функций (например, операция умножения матриц). Распределенные вычисления в основном осуществляются посредством разделения внешних данных и не затрагивают алгоритмы обучения ИНС.[51] Wolfram Mathematica Neural Networks – инструмент обучения, проектирования, визуализации и валидации нейросетевых моделей. Система поддерживает различные виды искусственных нейронных сетей: радиальные базисные сети, сети прямого распространения, сети Хопфилда, персептроны, карты Кохонена и другие. В рамках системы реализованы следующие алгоритмы обучения: алгоритм Левенберга-Марквардта, Ньютоновские алгоритмы, алгоритм наискорейшего спуска. Кроме того, система включает набор инструментов для решения таких задач, как аппроксимация функций, классификация, кластеризация, идентификация нелинейных систем и другие. Реализована данная система на языке программирования C. Возможности параллельной обработки данных не содержит. [57] PCSIM (Parallel neural Circuit SIMulator) – инструмент для моделирования гетерогенных ИНС. Данный симулятор написан на C++ с широким применением объектно-ориентированного подхода, а также включает возможности написания дополнительных скриптов на языке программирования Python. Поддержка параллельных вычислений осуществляется посредством применения технологии MPI для распределения нагрузки между вычислительными узлами, а также посредством использования вычислений в несколько потоков.[54] NeuroSolutions – это простой в использовании инструмент для разработки нейросетевых моделей для операционных систем Microsoft Windows (32- и 64 разрядных). Данная система включает возможности модульного и визуального проектирования ИНС, а также обширные возможности их обучения с использованием распространенных алгоритмов, усовершенствованных посредством введения генетической оптимизации. Задачи, решаемые пакетом NeuroSolutions: кластерный анализ, прогнозирование рыночных продаж, прогнозирование исходов спортивных соревнований, решение задачи классификации в медицине и другие. Параллельная обработка в рамках NeuroSolutions осуществляется посредством применения технологии NVIDIA CUDA – организации параллельных вычислений с использованием графической карты персонального компьютера. [52] FANN (Fast Artificial Neural Network Library) – это открытая кросс платформенная нейросетевая библиотека, реализующая полносвязные, разреженные, а также многослойные ИНС на языке программирования C. В возможности FANN входит: обучение по методу обратного распространения ошибки (алгоритмы RPROP, Quickprop и другие), большое количество настраиваемых параметров, сохранение и загрузка параметров ИНС, управление обучающими выборками, графический интерфейс и другие. Параллельные и распределенные вычисления реализованы на уровне математических операций с большими объемами данных в процессе обучения нейронной сети, а также на уровне ручного распределения данных между несколькими сетями и дальнейшего их запуска на различных вычислительных узлах. [49]
Обоснование выбора алгоритма «упругого» обратного распространения ошибки (RPROP) .
Первым критерием отбора было попадание в локальный минимум в процессе обучения ИНС. Алгоритм RPROP является стохастическим, поскольку для корректировки весов и смещений использует знак градиента, а не его значение, а так же ряд подбираемых вручную параметров. Данный факт позволяет более эффективно обходить локальные минимумы на поверхности функционала ошибки и приблизиться к нахождению глобального экстремума. Наряду с RPROP данному критерию так же удовлетворяют алгоритм Левенберга-Марквардта с байесовской регуляризацией параметров и генетический алгоритм. Дальнейшее исследование в основном проводилось именно для этих алгоритмов.
Следующий значимый критерий – скорость сходимости. Алгоритм RPROP показал высокую скорость сходимости по сравнению с другими рассмотренными алгоритмами. Наряду с ним хорошую скорость сходимости так же показал алгоритм Левенберга-Марквардта с байесовской регуляризацией параметров.
И, наконец, последний критерий – краткость и простота реализации. Алгоритм RPROP требует наименьших усилий при реализации в отличие от алгоритма Левенберга-Марквардта с байесовской регуляризацией параметров, в котором требуется вычислять якобиан для многомерного функционала ошибки.
Кроме того, реализация алгоритма RPROP представляет собой частично синхронную задачу, поскольку существенную часть шагов алгоритма составляют операции, выполняемые на слоях ИНС. А именно, операция прямого распространения сигнала в процессе вычисления ошибки сети и операция обратного распространения сигнала от слоя к слою в процессе вычисления градиента функции ошибки. Эти операции не могут быть выполнены, пока не будет получена информация от нейронов предыдущего слоя. Данный факт, в свою очередь, может служить хорошим показателем качества асинхронной распределенной модели обучения искусственной нейронной сети, которой посвящена данная работа.
В следующем параграфе остановимся подробнее на организации взаимодействия в рамках асинхронной распределенной модели многослойной нейронной сети, реализующей алгоритм обучения RPROP, построенной на базе обобщенной трехуровневой модели, описанной выше. Основные функциональные блоки, отвечающие за обучение нейронной сети, а также за обработку сетью данных, реализованы на уровнях МСП и НЕЙРОН. Схема взаимодействия данных уровней приведена на рисунке 2. Процесс прямого распространения сигнала является частью процесса обучения, поэтому на нем отдельно останавливаться не будем, а рассмотрим его, как часть процесса обучении персептрона.
Обучение начинается с блока «Начать эпоху» уровня МСП, внутри которого осуществляется выбор текущих значений входов и выходов сети из обучающего множества и вызов следующего блока «Начать прямое распространение сигнала». Данный блок инициирует прямое распространение сигнала. В пределах этого блока осуществляется отправка асинхронных сообщений, содержащих значения входов, всем входным нейронам сети. Далее управление передается на уровень НЕЙРОН. Асинхронная распределенная модель многослойного персептрона (алгоритм RPROP) Согласно формуле (4) в вычислении принимают участие значения весовых коэффициентов и аксоны всех нейронов предыдущего слоя. Поэтому блок «Вычисление аксона» каждого нейрона, прежде чем передать управление дальше, ожидает поступления информации ото всех нейронов, связанных с текущим нейроном по входу. Однако такое ожидание в рамках асинхронной распределенной модели не является блокирующим, поскольку остальные нейроны в это время продолжают функционировать независимо. Как только блок «Вычисление аксона» получил всю необходимую информацию для расчета значения аксона, это значение рассылается всем нейронам следующего слоя посредством асинхронной отправки сообщений. Аналогично, блоки «Вычисление аксона» всех нейронов следующего слоя принимают сигналы и начинают вычисление аксонов. Таким образом, сигналы распространяются от входов сети к выходам. На выходе блоки «Вычисление аксонов» не распространяют сигнал дальше, а возвращают управление на уровень МСП, а именно, блоку «Завершить прямое распространение сигнала». Данный блок собирает информацию о завершении процесса прямого распространения сигналов со всех выходных нейронов сети. Как только все нейроны сообщили о завершении обработки, данный блок передает полученную информацию следующему блоку «Получить результат», в котором на основе фактических и желаемых значений выходов сети по формуле (1) вычисляется среднеквадратичная ошибка сети. На основе значения среднеквадратичной ошибки принимается решение о продолжении или о завершении обучения. Если ошибка достигла заданного минимума, осуществляется переход к блоку «Завершить эпоху», который мы рассмотрим ниже. Если же ошибка еще достаточно велика, то переходим к блоку «Начать вычисление градиента». Данный блок инициирует начало процесса обратного распространения сигнала для вычисления компонент вектора градиента функции ошибки на каждом нейроне посредством отправки сообщений о начале вычислений выходным нейронам сети. То есть фактически блок «Начать вычисление градиента» рассылает координирующие команды и передает управление блокам «Вычисление градиента» уровня НЕЙРОН. Данные блоки производят вычисление градиента, сохраняя для каждого нейрона только необходимую ему часть искомого вектора. Как только сигналы достигли нейронов входного слоя, их блоки «Вычисление градиента» сообщают блоку «Завершить вычисление градиента» уровня МСП о завершении процесса вычислений. Блок «Завершить вычисление градиента» собирает информацию со всех входных нейронов и передает управление блоку «Начать корректировку весов и смещений». Данный блок рассылает координирующие сообщения всем нейронам сети и передает управление блокам «Корректировка весов и смещений» уровня НЕЙРОН. На уровне НЕЙРОН независимо друг от друга эти блоки модифицируют значения весов и смещений своих нейронов на основе вычисленных значений компонент вектора градиента в соответствии с алгоритмом RPROP. По завершении изменений весов и смещений блоки «Корректировка весов и смещений» отправляют уведомляющие сообщения блоку «Завершить корректировку весов и смещений» уровня МСП. Данный блок собирает информацию о завершении процесса корректировки со всех нейронов сети и передает управление блоку «Завершить эпоху» уровня МСП. Блок «Завершить эпоху» принимает решение о продолжении обучения. Если ошибка не достигла требуемого минимума, то управление передается блоку «Начать эпоху» и описанные выше операции повторяются. Если же ошибка достигла достаточно малого значения, обучение завершается и управление передается на уровень ОНС.
Из рисунка 2 видно, что примерно треть операций, выполняемых в процессе обучения нейронной сети на уровне НЕЙРОН, может быть выполнена параллельно. Это операции блоков «Корректировка весов и смещений». Остальные операции выполняются параллельно лишь в пределах одного слоя.
Асинхронная распределенная модель многослойной нейронной сети (алгоритм обучения на основе метода гравитационного поиска)
Поскольку в алгоритме гравитационного поиска мы оперируем одновременно несколькими наборами весовых коэффициентов, расчет аксонов нейронов и выходов сети ведется одновременно для всех наборов. Эти расчеты выполняют блоки «Вычисление аксонов частиц» уровня НЕЙРОН. Как только прямое распространение сигнала завершается, то есть управление передается блоку «Получить результат» уровня МСП, начинается вычисление ошибки сети для каждого набора выходов, соответствующих наборам весовых коэффициентов. Из всех вычисленных значений выбирается минимальное значение, которое сравнивается с требуемой ошибкой нейронной сети. Если оно меньше, то управление переходит к блоку «Завершить эпоху». Если же ни один из имеющихся наборов весовых коэффициентов не позволил получить достаточно малую ошибку, управление переходит к блоку «Начать гравитационный поиск».
В рамках блока «Начать гравитационный поиск» выполняются операции алгоритма, которые не целесообразно разграничивать по нейронам, а именно, вычисление G(t) и Mi(t). А вот для расчета векторов F уже необходим переход к блокам уровня НЕЙРОН, поскольку в вычислениях участвуют весовые коэффициенты. Согласно обобщенной модели каждый нейрон хранит информацию только о части весовых коэффициентов всей сети, относящейся непосредственно к нему. Поэтому блок «Начать гравитационный поиск» рассылает управляющие сообщения блокам «Вычисление расстояния» уровня НЕЙРОН для вычисления соответствующих частей выражения . Как только блок «Вычисление расстояния» уровня НЕЙРОН завершает обработку своей части данных, он отправляет сообщение блоку «Вычислить расстояние» уровня МСП.
Блок «Вычислить расстояние» собирает данные со всех нейронов, завершает вычисление значений для F и на их основе вычисляет величины корректировок для всех наборов весовых коэффициентов w. После этого блок «Вычислить расстояние» отправляет координирующие сообщения всем нейронам о начале процесса корректировки весовых коэффициентов. Блоки «Вычисление новых координат» уровня НЕЙРОН, получив соответствующие сообщения, модифицируют значения всех доступных им весовых коэффициентов и возвращают управление на уровень МСП блоку «Завершить гравитационный поиск». Данный блок собирает информацию о завершении процесса корректировки со всех нейронов сети и передает управление блоку «Завершить эпоху», который принимает решение о продолжении или завершении процесса обучения.
Если на текущей итерации обучение завершается, то из всех имеющихся наборов весовых коэффициентов выбирается и устанавливается в качестве основного тот, при котором ошибка сети принимает наименьшее значение. Судя по приведенной схеме, вычисления, связанные с алгоритмом гравитационного поиска, практически не привязаны к слоям нейронной сети. Приблизительно 70% операций предложенного алгоритма обучения многослойного персептрона может быть выполнено параллельно. Частично синхронным остался лишь процесс прямого распространения сигнала, без которого невозможно вычислить подлежащую минимизации функцию ошибки сети.
На основе предложенных моделей на выбранном языке программирования Erlang была разработана программная система. Архитектура системы во многом соответствует обобщенной модели многослойной нейронной сети. Все акторы системы, соответствующие уровням ОНС, МСП и НЕЙРОН, реализованы в виде моделей поведения Erlang/OTP – обобщенный сервер (gen_server). Модель поведения gen_server предоставляет возможности реализации обработчиков асинхронных сообщений (handle_cast). Обработчики сообщений реализуют все функции, соответствующие уровням обобщенной модели, а также дополнительные служебные функции по инициализации процессов и их параметров. Для хранения информации каждый процесс gen_server поддерживает так называемое состояние. В состоянии можно хранить любые данные, которые будут доступны текущему процессу на всех этапах функционирования: от инициализации до непосредственной обработки сообщений. Остановимся подробнее на реализации каждого актора. Актор уровня ОНС реализован в виде модуля nnet с моделью поведения gen_server, в результате запуска которого порождается процесс nnet. В состоянии процесса nnet хранится информация о типе запускаемой нейронной сети, об идентификаторе дочернего процесса, реализующего уровень МСП, о состоянии приложения в целом и другую необходимую информацию. Актор уровня МСП реализован в виде модуля mlp с моделью поведения gen_server, в результате запуска которого порождается процесс mlp. В состоянии процесса mlp хранится информация о процессах всех нейронов сети, о входных и выходных нейронах, об обучающей выборке, о параметрах алгоритма обучения, а также о вызывающих процессах, инициализирующих операции обучения или прямого распространения сигнала, и другую необходимую информацию.
Акторы уровня НЕЙРОН реализованы в виде модуля neuron с моделью поведения gen_server, в результате запусков которого для каждого нейрона сети порождаются процессы neuron. Каждый такой процесс в своем состоянии хранит информацию о типе сети, которой он принадлежит; о родительском процессе; о нейронах, связанных с ним по входу и по выходу; об аксоне и состоянии нейрона; о весовых коэффициентах связей нейрона. Подобная децентрализация данных между нейронами позволяет более эффективно организовывать распределение вычислений, поскольку отсутствие избыточности позволяет избежать затрат на обработку цельного массива данных ИНС и выбор лишь необходимых. Инициализация системы осуществляется следующим образом. Процесс nnet запускает процесс mlp и передает ему данные, необходимые для инициализации его состояния. Процесс mlp осуществляет запуск процессов neuron и их распределение по доступным вычислительным узлам. Распределение осуществляется циклически равномерно. Первый процесс neuron запускается на первом узле, второй – на втором и так далее, пока имеются доступные узлы. Как только все узлы задействованы, процесс mlp снова переходит к первому узлу и запускает на нем второй по счету процесс. Затем переходит ко второму узлу и так далее, пока не будут запущены все процессы neuron.
Помимо модулей, непосредственно реализующих функциональные блоки обобщенной модели, архитектуру программной системы составляют служебные модули и модули дерева супервизоров. К служебным модулям относятся модуль nnet_app, обеспечивающий цельность системы как приложения, и модуль db_ctrl, обеспечивающий взаимодействие компонентов системы с базой данных. Модуль nnet_app реализован в виде модели поведения Erlang/OTP, называемой application. Данная модель обеспечивает возможности по запуску/остановке приложения как системной службы, конфигурированию и быстрому развертыванию приложения. Модуль db_ctrl реализован в виде модели поведения gen_server и представляет собой интерфейс по выполнению операций чтения/записи информации в базу данных. В разработанной программной системе данный модуль работает с СУБД MySQL. Модули дерева супервизоров nnet_sup, mlp_sup, neuron_sup, реализованные в виде модели поведения supervisor, обеспечивают перезапуск процессов системы в случае их незапланированного завершения. Для процессов nnet и mlp запускается по одному супервизору. А для процессов neuron запускается супервизор на каждом узле Erlang. Подобная стратегия запуска и контроля связана с особенностью платформы Erlang/OTP, в соответствии с которой дерево супервизоров не может быть построено непрерывно на распределенной системе.
Результаты тестирования асинхронной распределенной модели многослойной нейронной сети (алгоритм обучения RPROP)
Тестирование модели с диспетчеризацией на системе с общей памятью показало, что с ростом количества задействованных ядер время обучения практически не изменяется (рисунки 26 и 27). Наблюдается лишь незначительное уменьшение времени обучения на двух ядрах. Однако общая тенденция снижения времени обучения на 2-8 ядрах по сравнению с одним ядром все же наблюдается.
Подобный характер зависимости среднего времени обучения от количества задействованных ядер объясняется введением уровня диспетчеризации и переносом на него всех синхронных сообщений. Количество процессов диспетчеров в разы меньше количества процессов нейронов, поэтому распределение нагрузки по вычислительным узлам в моменты времени между синхронными операциями становится менее равномерным, что приводит к увеличению времени простоев ядер процессора и снижению эффективности модели. Диаграмма загрузки процессора в данном случае показывает, что большую часть времени вычислениями занимается одно ядро, и периодически в работу вступают остальные доступные ядра, обрабатывающие данные процессов уровня НЕЙРОН.
Относительное ускорение так же практически не изменяется (рисунок 28). Лишь для небольших сетей наблюдается небольшой рост, связанный с меньшим размахом значений величины среднего времени обучения. Как следствие, даже небольшое уменьшение среднего времени обучения (порядка 100 мс) является существенным. В этом случае можно ускорить процесс обучения примерно в 1.7 раза.
Эксперименты, проведенные на распределенной системе на базе высокопроизводительного вычислительного кластера показали, что с ростом количества вычислительных узлов время обучения экспоненциально убывает без каких-либо скачков и перепадов при выполнении расчетов для сетей любых размеров (рисунки 29 и 30). На 10 и более вычислительных узлах рост производительности немного замедляется, особенно для сетей размером до 801 нейрона. А для сетей в 201 и 401 нейрон наблюдается небольшое увеличение среднего времени обучения на данном интервале.
Что касается ускорения, то оно зависит от количества вычислительных узлов практически линейно (рисунок 31). В среднем для сетей с количеством нейронов более 801 можно добиться 9-11-кратного ускорения обучения. Но для сетей в 801 нейрон и менее кривая ускорения демонстрирует то же ухудшение производительности, что и кривая среднего времени обучения. Для сетей в 401 нейрон ускорение при использовании 15 узлов примерно равно ускорению при использовании 2 вычислительных узлов и составляет 2 раза. Рисунок 29 – Зависимость среднего времени обучения от количества вычислительных узлов при тестировании модели с диспетчеризацией на распределенной системе на базе высокопроизводительного вычислительного кластера; 201-1001 нейрон; алгоритм RPROP Рисунок 30 – Зависимость среднего времени обучения от количества вычислительных узлов при тестировании модели с диспетчеризацией на распределенной системе на базе высокопроизводительного вычислительного кластера; 1001-2001 нейрон; алгоритм RPROP Рисунок 31 – Зависимость относительного ускорения от количества вычислительных узлов при тестировании модели с диспетчеризацией на распределенной системе на базе высокопроизводительного вычислительного кластера; алгоритм RPROP
Результаты тестирования на распределенной системе на базе ЛВС приведены на рисунках 32-34. Экспоненциальное уменьшение среднего времени обучения наблюдается и в этом случае. Однако для сетей с количеством нейронов 201 и 401 данная величина практически не изменяется (рисунок 32). А вот для сетей от 801 нейрона, чем больше размер сети, тем заметнее изменяется среднее время обучения с ростом количества вычислительных узлов.
Относительное ускорение возрастает не так быстро как в случае с системой на базе высокопроизводительного кластера (рисунок 34). Зависимость не линейная, но близкая к ней. Для сетей до 801 нейрона наблюдается падение производительности на 8-15 вычислительных узлах. Для сетей от 1001 нейрона значение относительного ускорения с ростом количества вычислительных узлов не падает, а лишь начинает расти чуть медленней, о чем свидетельствует уменьшение угла наклона кривой. Максимальное ускорение, которое можно получить, используя модель с диспетчеризацией, составляет 8-9 раз. Рисунок 32 – Зависимость среднего времени обучения от количества вычислительных узлов при тестировании модели с диспетчеризацией на распределенной системе на базе ЛВС; 201-1001 нейрон; алгоритм RPROP Рисунок 33 – Зависимость среднего времени обучения от количества вычислительных узлов при тестировании модели с диспетчеризацией на распределенной системе на базе ЛВС; 1001-2001 нейрон; алгоритм RPROP Рисунок 34 – Зависимость относительного ускорения от количества вычислительных узлов при тестировании модели с диспетчеризацией на распределенной системе на базе ЛВС; алгоритм RPROP Результаты тестирования модели с диспетчеризацией на гибридной системе с 4-мя ядрами на каждом вычислительном узле приведены на рисунках 35-37. Общая тенденция уменьшения времени обучения сохраняется. Но за счет использования на вычислительных узлах дополнительных ядер среднее время обучения в данном эксперименте превышает среднее время обучения на распределенной системе на базе ЛВС.
Относительное ускорение становится менее стабильным. Наблюдаются скачки кривых, например, для сетей с 801 нейроном ускорение растет быстрее, чем для сетей с 1201 нейроном. Это связано с теми же причинами, по которым наблюдается снижение производительности модели на системе с общей памятью: процессы распределяются по вычислительным ресурсам менее равномерно. Однако максимальное значение относительного ускорения по сравнению с 1-ядерной распределенной системой увеличивается. В данном случае оно достигает 10-14 раз, что при использовании большого количества вычислительных узлов способствует приближению среднего времени обучения к значению, полученному на распределенной системе на базе ЛВС. Рисунок 35 – Зависимость среднего времени обучения от количества вычислительных узлов при тестировании модели с диспетчеризацией на гибридной системе; 4 ядра, 201-1001 нейрон; алгоритм RPROP Рисунок 36 – Зависимость среднего времени обучения от количества вычислительных узлов при тестировании модели с диспетчеризацией на гибридной системе; 4 ядра, 1001-2001 нейрон; алгоритм RPROP Рисунок 37 – Зависимость относительного ускорения от количества вычислительных узлов при тестировании модели с диспетчеризацией на гибридной системе; 4 ядра; алгоритм RPROP Результаты тестирования модели без диспетчеризации на гибридных системах с различными характеристиками, приведенные на рисунке 38, подтверждают это. На большом количестве вычислительных узлов (7-8 и более) для сетей от 801 нейрона среднее время обучения практически одинаково при различном количестве ядер. На небольшом количестве узлов (от 1 до 7-8) производительность модели с диспетчеризацией уменьшается с ростом количества ядер. В данном случае более выгодно использовать распределенную систему с одним ядром на каждом вычислительном узле. А вот для сетей в 201 нейрон выгодней использовать одноядерную систему при любом количестве узлов.