УДК 004.4422
ТЕХНОЛОГИЯ РАСПРЕДЕЛЕННЫХ И ПАРАЛЛЕЛЬНЫХ ВЫЧИСЛЕНИЙ ДЛЯ ПОВЫШЕНИЯ ЭФФЕКТИВНОСТИ ОБУЧЕНИЯ АДАПТИВНОЙ НЕЙРО-НЕЧЕТКОЙ СЕТИ
© Нгуен Данг Минь1
Иркутский государственный технический университет, 664074, Россия, г. Иркутск, ул. Лермонтова, 83.
Рассматривается задача обучения адаптивной нейро-нечеткой сети с помощью метода обратного распространения ошибки. Предложены алгоритмы для решения этой задачи с использованием технологии параллельных и распределенных вычислений. Выполнена реализация программ обучения гибридной сети, проведено сравнение их эффективности. Ил. 2. Библиогр. 10 назв.
Ключевые слова: адаптивная нейро-нечеткая сеть; параллельные вычисления; распределенные вычисления.
TECHNOLOGY OF DISTRIBUTED AND PARALLEL COMPUTINGS TO INCREASE TRAINING EFFICIENCY OF ADAPTIVE NEURO-FUZZY NETWORK Nguyen Dang Minh
Irkutsk State Technical University, 83 Lermontov St., Irkutsk, 664074, Russia.
The paper treats the problem of training an adaptive neuro-fuzzy network by means of error back-propagation method. The algorithms for solving this problem using the technology of parallel and distributed computing are proposed. The implementation of the programs for hybrid network training is performed, and their efficiency is compared. 2 figures. 10 sources.
Key words: adaptive neuro-fuzzy network; parallel computings; distributed computings.
Адаптивные нейро-нечёткие или гибридные сети по замыслу их разработчиков призваны объединить в себе достоинства нейронных сетей и систем нечёткого вывода. С одной стороны, они позволяют разрабатывать и представлять модели систем в форме правил нечётких продукций, которые обладают наглядностью и простотой содержательной интерпретации. С другой стороны, для построения правил нечётких продукций используются методы нейронных сетей, что является более удобным и менее трудоёмким процессом для системных аналитиков [10].
Обучение нейронных сетей требует значительных временных затрат для выполнения большого количества итераций и корректировки весов сетей [6].
При обучении гибридной сети размер обучающей выборки играет большую роль для генерирования систем нечёткого вывода. Гибридная сеть с определённой структурой имеет определённый предел точности. При увеличении количества обучающих примеров точность сети повышается и приближается к этому пределу. Чтобы достигнуть предела точности сети, требуется очень большой объём этой выборки [8]. Однако увеличение объёма обучающей выборки будет увеличивать время, затраченное на обучение в каждой итерации процесса обучения. Способом сокращения временных затрат является использование технологий параллельных или распределённых вычислений при обучении, то есть разделение множества примеров на подмножества, тогда сеть обучается на всех подмножествах одновременно. Гибридная сеть, обучающаяся с помощью технологий парал-
лельных или распределённых вычислений, требует значительно меньше времени на обучение.
Хотя и та, и другая технологии вычислений повышают скорость обучения сети, но у каждой имеются свои преимущества при программной реализации для обучения сети. Целью данной работы является разработка распределённых и параллельных алгоритмов обучения гибридной сети, их реализация средствами системы MATLAB и сравнение их эффективности.
В системе MATLAB алгоритмы обучения гибридной сети реализованы в последовательном режиме, поэтому была проведена большая работа по переработке исходных текстов свыше 20 функций, код которых доступен при установке системы.
Гибридная сеть как адаптивная система нейро-нечёткого вывода (ANFIS). Гибридная сеть представляет собой многослойную нейронную сеть специальной структуры без обратных связей, в которой используются чёткие сигналы, веса и функции активации, а выполнение операции суммирования основано на использовании фиксированной Т-нормы, Т-конормы или некоторой другой непрерывной операции. При этом значения входов, выходов и весов гибридной нейронной сети представляют собой вещественные числа.
Основная идея, положенная в основу модели гибридных сетей, заключается в том, чтобы использовать обучающую выборку данных для определения параметров функций принадлежности, которые лучше всего соответствуют некоторой системе нечёткого вывода. При этом для нахождения параметров функ-
1Нгуен Данг Минь, аспирант, тел.: +79247045898, e-mail: soldier.85@mail.ru Nguyen Dang Minh, Postgraduate, tel.: +79247045898, e-mail: soldier.85@mail.ru
ций принадлежности используются известные процедуры обучения нейронных сетей.
С одной стороны, гибридная сеть ANFIS представляет собой нейронную сеть с единственным выходом и несколькими входами, являющимися нечёткими лингвистическими переменными. При этом термы входных лингвистических переменных описываются стандартными функциями принадлежности, а термы выходной переменной представляются линейной или константной функцией принадлежности.
С другой стороны, гибридная сеть ANFIS представляет собой систему нечёткого вывода FIS (fuzzy inference system) типа Сугено нулевого или первого порядка, в которой каждое из правил нечётких продукций имеет постоянный вес, равный 1 [10].
Алгоритм обучения гибридной сети. Алгоритм обратного распространения ошибки (back propagation) - один из самых распространённых алгоритмов обучения. Это градиентный алгоритм обучения, который используется с целью минимизации среднеквадратичного отклонения целевого значения выходной переменной от желаемого значения выходной переменной многослойных нейронных сетей [6].
Алгоритм действует итеративно. Во время каждой итерации на вход сети подаются все объекты обучающей выборки, выходные значения сети сравниваются с целевыми значениями и вычисляется ошибка. Её значение используется для корректировки весов, после чего все действия повторяются. Параметрами сети являются параметры системы нечёткого вывода, и процесс обучения прекращается либо когда пройдено определённое количество итераций, либо когда ошибка достигает некоторого минимального значения, либо когда ошибка перестает уменьшаться [1, 2].
Каждая итерация обучения включает следующие этапы:
• расчёт значения выходной величины и частного квадратичного отклонения;
• вычисление элементов вектора градиента функций принадлежности;
• вычисление среднего отклонения и градиента поверхности ошибок, проверка необходимости остановки; если продолжается процесс обучения, то пере-счиываются параметры сети.
Первый этап можно рассматривать как «проход вперёд», так как сигнал распространяется по сети от первого слоя к последнему [3]. ув'ых является выходным сигналом для /-го объекта обучающей выборки, частное квадратичное отклонение вычисляется по формуле:
Et = (у'-уВы,х)2.
где является целевым значением /-го объекта.
Второй этап - «обратный проход»: вычисляемый сигнал ошибки распространяется в обратном направлении по сети и используется для вычисления градиента параметров функций принадлежности [3].
Вектор частного градиента вычисляется по формуле
1(Ь) = (—\ —:±-)Т
5 ( ) ~ ( £¿^'£¿¿2"' "йЬм/ '
где ¿'¿2. . . Ьм - параметры функций принадлежности.
Третий этап: среднее отклонение £ср (значение невязки) и вектор градиента 5(Ь) вычисляются по формулам:
5(ь) = £Г= 15 К ь ) (2)
где N - объём обучающей выборки.
Градиент поверхности ошибок I является модулем вектора 5(Ь ).
Полученные значения анализируются. Если необходима остановка, вычисления завершаются. В противном случае выбирается величина шага Б, при которой выполняется условие £ср(/с + 1 ) < £ср(/с ), и параметры сети пересчитываются по формуле
Щ
Ь; = Б
где
N
-; _/' = 1,2,...М.
¡=1 1
Программную реализацию обучения адаптивной нейро-нечёткой сети можно представить в виде набора взаимосвязанных этапов:
• вычисление частных квадратичных ошибок
• вычисление частных градиентов 5 1(Ь );
• получение среднего отклонения £ср от вектора градиента 5(Ь );
• обновление параметров Ь;-.
Эффективным средством преодоления вычислительной трудоёмкости решения задач обучения гибридной сети, как отмечалось выше, может стать использование современных технологий параллельных и распределенных вычислений
Технология параллельных и распределённых вычислений в задаче обучения гибридной сети. При создании параллельной или распределённой программной среды, ориентированной на решение задач обучения гибридной сети, необходимо решить, по крайней мере, две основные задачи.
Первая из них заключается в распределении операций используемого алгоритма между процессорами и установлении другого по сравнению с последовательным алгоритмом порядка их выполнения. Основная проблема, возникающая при решении этой задачи, состоит в сохранении порядка выполнения операций, выполнении условий сохранения зависимостей алгоритма.
Вторая задача заключается в распределении данных между процессорами и установлении схемы обмена данными. Основная проблема состоит в необходимости устанавливать в определённый момент времени местоположение требуемых для выполнения
операции данных и дополнять вычислительный алгоритм операциями передачи и приёма данных. При этом следует учитывать, что реализация коммуникаций в распределенной вычислительной среде (на кластере) требует значительных временных затрат. Поскольку целью использования параллельной вычислительной среды является уменьшение времени обучения сети, то при распараллеливании алгоритма необходимо стремиться к уменьшению коммуникационных затрат на его реализацию.
Один из очевидных подходов к распределению данных и минимизации коммуникационных затрат заключается в разбиении алгоритма на блоки независимых вычислений. В этом случае распределение данных осуществляется в соответствии с распределением операций, которые эти данные используют, поэтому все процессоры вычислительной системы могут работать независимо один от другого, не нуждаясь в обмене данными. Очевидно, такой подход упрощает проблему распределения данных между процессорами и устраняет проблему обмена данными, однако не всегда алгоритм допускает разбиение на независимые части.
Другой подход заключается в разбиении данных на блоки и использовании каждым процессом своего блока данных. Целью такого разбиения является увеличение пакета передаваемых данных и уменьшение частоты коммуникаций. Подход направлен на минимизацию накладных расходов на обмены данными, не затрагивая проблемы размещения массивов данных
[9].
При программной реализации параллельных алгоритмов представляется целесообразным использование возможностей как современных многопроцессорных вычислительных систем, так и компьютеров, связанных локальной сетью и образующих кластеры.
Применение распределенных данных для обучения сети. На каждой итерации сеть должна последовательно использовать все объекты обучающей выборки. Однако результаты, полученные после обучения на каждом объекте, независимы друг от друга, поэтому можно разделить обучающую выборку на несколько подмножеств и обучать параллельно на всех этих подмножествах. Таким образом, первый и второй этапы можно осуществить одновременно в нескольких параллельных процессах, после чего третий этап суммирует их результаты и завершает процесс обучения на одной итерации.
При наличии Т процессоров можно разделить обучающую выборку D = [X, Y] на Т частей.
Пусть q = т о г = (/V - д)/Т;
х(а- 1)»г+ 1) у(а- 1>г+1)"
А = ; ;
Х(1*Г) уО*г)
где 1 = 1,2,......Т - 1;
Таким образом, каждый параллельный процесс осуществляет первый и второй этапы со своими данными. На третьем этапе вычисляются векторы градиентов ошибок и среднеквадратичные ошибки по формулам (1), (2).
Возможности пакета MATLAB по реализации распределенных и параллельных вычислений. В связи с решением сложных вычислительных задач в распределённой или параллельной среде компания MathWorks выпустила MATLAB Distributed Computing Server 5.0 (DCS) и MATLAB Parallel Computing Toolbox (PCT), позволяющие выполнять алгоритмы, реализованные в среде MATLAB, на объединённых в сеть компьютерах. Для этого пользователь MATLAB должен создать набор задач (tasks), объединить их в задание (job) и передать задание для выполнения планировщику - менеджеру заданий (job manager), который является частью DCS. Менеджер заданий выполняет задания параллельно, распределяя содержащиеся в них задачи по известным ему процессам - исполнителям [4].
Для программирования распределённых вычислений с помощью PCT нужно выполнить следующие шаги:
• получить доступ к планировщику;
• создать распределённое задание;
Dr =
x((T-l>r+l) y((T-l)*r+l)
• создать задачи;
• подчинить задания планировщику;
• получить результаты.
Параллельное задание состоит из единственной задачи, которая одновременно выполняется на нескольких исполнителях (или нескольких процессорах). Каждый исполнитель может выполнять задание на различных множествах данных. Программирование параллельных вычислений подобно распределённым вычислениям, отличие только в создании единственной задачи [5].
Алгоритмы распределённых и параллельных вычислений для обучения гибридной сети. Как отмечалось выше, при распределённых вычислениях все процессоры вычислительной системы могут работать независимо один от другого, не нуждаясь в обмене данными. Каждый процессор осуществляет задачи вычисления вектора частных градиентов и частных квадратичных ошибок на своём подмножестве обучающей выборки.
Таким образом, алгоритм программы распределённого обучения адавтивной системы нейро-нечёткого вывода следующий:
1. Настроить начальные параметры сети и разделить обучающую выборку на Т подмножеств.
2. Получить доступ к планировщику.
3. Создать распределённое задание.
4. Создать Т задач, которые параллельно вычисляют частные векторы градиентов и частные квадратные ошибки
5. Стартовать задание и получить результаты от набора задач.
6. Вычислить среднеквадратичное отклонение и градиент поверхности ошибок.
7. Проверить необходимость завершения обуче-
ния; если обучение не закончено, то корректировать параметры сети и коэффициент обучения, после этого переход к пункту 3.
Алгоритм параллельного обучения адаптивной системы нейро-нечёткого вывода аналогичен алгоритму распределённого обучения, отличие в алгоритме для исполнителей. При программировании параллельных вычислений целесообразно использовать модель передачи сообщений, master-slave - парадигму параллельного программирования. Один из исполнителей назначается ведущим (master), он рассылает задания остальным подчиненным исполнителям (slave), формирует результаты [9].
Алгоритм для ведущего исполнителя:
1. Получение начальной структуры сети и своего подмножества обучающей выборки.
2. Вычисление ) и Е'.
3. Получение результатов от подчиненных исполнителей.
4. Вычисление градиента поверхности ошибки и среднеквадратичной ошибки.
5. Проверка необходимости остановки.
6. Если обучение не закончено, то происходит корректировка параметров сети и коэффициента обучения, рассылка новой структуры сети всем подчиненным исполнителям и переход к пункту 2.
Подчиненные исполнители используют другой алгоритм:
1. Получение начальной структуры сети и своего подмножества обучающей выборки.
2. Вычисление ( ) и
3. Отправка результатов ведущему исполнителю.
4. Получение новой структуры сети от ведущего исполнителя. Если обучение не закончено - переход к
пункту 2.
Экспериментальная оценка эффективности.
Для проведения экспериментов элементы обучающей выборки генерировались случайным образом по равномерному закону распределения. Был использован локальный кластер, созданный на ноутбуках Alienware, имеющих следующие характеристики:
• процессор Intel Core i7 - 2720 - 2,2 Гц с 8 ядрами в каждом;
• оперативная память 8Гб;
• операционная система Window 7 64-bit;
• локальная сеть Ethernet скорость передачи 1Gb/s.
На каждом ноутбуке находился MATLAB версии 2010b с пакетом Distributed Computing Server 5.0.
Сеть, используемая для обучения, имеет 35 узлов (2 входных, 1 выходной и 32 скрытых); на её основе генерируется система нечёткого вывода (FIS) типа Сугено с двумя входами и одним выходом. Каждая входная переменная имеет три терма, которые описываются пи-подобными функциями принадлежности, а термы выходной переменной представляются линейной функцией принадлежности. Количество задач при распределённых вычислениях - 4, количество исполнителей при параллельных вычислениях - 4.
На рис. 1 представлен график зависимости времени обучения адаптивной системы нейро-нечеткого вывода от объёма обучающей выборки. Количество итераций при обучении - 100.
На рис. 2 представлен график зависимости времени обучения ANFIS от количества итераций, в этом случае объём обучающей выборки 3000.
400
л о.
ш
•О I I
01 s 01
.
со
■Последовательное вычисление
■Распределенное вычисление
■Параллельное вычисление
250
1000
2000 3000
Объем обучающей выборки
Рис. 1. Зависимость временных затрат от объёма обучающей выборки
2500 2250
2000
•О
Й 1750 а
Я 1500 а>
3 1250 г
i 1000
01 а со
750 500 250
■Распределенное вычисление Параллельное вычисление
200
400
600 1000
Количество итераций
Рис. 2. Зависимость временных затрат от количества итераций
Можно заметить, что при малых объёмах обучающей выборки эффективности распределённых вычислений почти не наблюдается, с увеличением объёма эффективность повышается. Также на графиках можно видеть, что обучение сети с использованием параллельных вычислений эффективнее. Во всех случаях параллельное обучение работает быстрее, чем распределённое. Это объясняется тем, что при распределённом обучении на каждой итерации требуется значительное время, чтобы создавать новые задачи, планировщик должен стартовать и распределять работы своим исполнителям, выделять им память, затем, после получения результатов, уничтожать задание и освобождать память. При параллельном обучении нужно только один раз распределить работы ис-
полнителям и выделить им память. Поэтому очевидно, что чем больше число итераций, тем дольше длится процесс распределённого обучения по сравнению с процессом параллельного обучения.
Таким образом, функции МаАаЬ для обучения нейро-нечёткой сети были переписаны с учётом распределённого и параллельного режимов выполнения. На основе проведённых экспериментов можно сделать вывод, что алгоритмы распределённого и параллельного вычислений для обучения ANFIS являются эффективными. Во всех случаях алгоритм параллельного вычисления более эффективен, чем алгоритм распределённого вычисления, особенно при большом количестве итераций.
Библиографический список
1. Комарцова Л.Г., Максимов А.В. К 63 Нейрокомпьютеры: учеб. пособие для вузов. 2-е изд., перераб. и доп. М.: Изд-во МГГУ им. Н.Э. Баумана 2004. 400 с.
2. Галушкин А.И. Теория нейронных сетей: учеб. пособие для бакалавров и магистров по направлению «прикладные математика и физика». Кн. 1 / под общ. ред. А.И. Галушкина. М.: ИПРЖР, 2000. 416 с.
3. Круглов В.В., Дли М.И., Голунов Р.Ю. Нечеткая логика и искусственные нейронные сети. М.: Физматлит, 2001. 224 с.
4. Parallel Computing Toolbox™ User's Guide.
5. MATLAB® Distributed Computing Server™ System Administrator's Guide.
6. Suresh S., Omkar S.N., Mani V. Parallel implementation of
back-propagation algorithm in networks of workstations // IEEE Transactions on Parallel and Distributed Systems. 2005. Р. 2434.
7. Rumelhart D.E., Hinton G.E., Williams R.J. Parallel Distributed Processing. Vol. 1: Foundations. Cambridge, Massachusetts, 1986: The MIT Press.
8. Grossberg S. Neural Networks and Natural Intelligence. Cambridge, Massachusetts, 1988: The MIT Press.
9. Назаров Д.А. Использование распределенных вычислений при построении области работоспособности. // Информатика и системы управления. 2008. № 1. С. 142-151.
10. Леоненков А. В. Нечеткое моделирование в среде MATLAB и fuzzyTECH. СПб.: БХВ-Перербург, 2005. 736 с.
0