РЕАЛИЗАЦИЯ РАДИАЛЬНО-БАЗИСНОЙ НЕЙРОННОЙ СЕТИ ...
КОМПЬЮТЕРНЫЕ СИСТЕМЫ И ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ
УДК 004.272:004.032.26
РЕАЛИЗАЦИЯ РАДИАЛЬНО-БАЗИСНОЙ НЕЙРОННОЙ СЕТИ НА МАССИВНО-ПАРАЛЛЕЛЬНОЙ АРХИТЕКТУРЕ ГРАФИЧЕСКОГО
ПРОЦЕССОРА Н.О. Матвеева
Предлагается распараллеливание в технологии программно-аппаратной архитектуры (CUDA) алгоритма обучения радиально-базисной нейронной сети (RBFNN), основанного на идее последовательной настройки центров, ширины и весов сети, а также идее коррекции весов по алгоритму минимизации квадратичного функционала методом сопряженных градиентов. Приводятся результаты сравнения времени обучения RBFNN на различных центральных и графических процессорах, доказывающие эффективность распараллеливания.
Ключевые слова: графический процессор, параллельность, CUDA, массивно-параллельная архитектура, RBFNN, дифференциальное уравнение.
Введение
Для решения краевых задач математической физики, описываемых дифференциальными уравнениями в частных производных, наибольшее распространение получили методы конечных разностей и конечных элементов, но эти методы требуют построения сеток и позволяют получить решение только в узлах сетки. Этого существенного недостатка лишены бессеточные методы [1]. Бессеточные методы эффективно реализуются на RBFNN [2]. Главное достоинство RBFNN состоит в использовании принципов обучения для формирования оптимальных параметров радиально-базисных функций (RBF). Такие методы могут быть эффективно реализованы на параллельных системах.
Для распараллеливания RBFNN наиболее подходит модель вычислений SIMD (Single Instruction -Multiple Data), так как нейроны одного слоя сети выполняют одинаковые действия над различными данными. На основе такой модели вычислений построены современные графические процессоры (GPU). GPU выигрывают у кластерных систем по критерию цена/производительность.
Целью работы является разработка параллельной реализации алгоритма обучения RBFNN для решения краевых задач математической физики на графическом процессоре с использованием технологии CUDA и исследование эффективности распараллеливания путем сравнения времени решения краевой задачи на GPU и на центральном процессоре (CPU).
Структура RBFNN
RBFNN (рис. 1) представляет собой сеть с двумя слоями. Первый слой осуществляет преобразование входного вектора х с использованием RBF. Практически используются различные RBF.
Рис. 1. Радиально-базисная нейронная сеть
В дальнейшем будем использовать наиболее часто употребляемую функцию - гауссиан, имеющий для к-го нейрона вид
Фк (х) = ехр(-Гк2/ а2), (1)
6
где х - входной вектор; гк = ||х - - радиус к-го нейрона; ак - ширина к-го нейрона; е^ - центр к-го нейрона. Выход сети описывается выражением
т
и = X ^ Фк (x), (2)
к=1
где Wk - вес связи выходного нейрона с к-ым нейроном первого слоя; т - число нейронов первого слоя.
Алгоритм обучения RBFNN
Рассмотрим градиентный алгоритм обучения КБЕМЫ на примере решения двумерного уравнения Пуассона
2 2
+ = /(х,у), (х, у) еО, (3)
дх су2
и = р(X, у), (х, у) едО, (4)
где дО - граница области; / и р - известные функции (х,у). Выбирая в качестве КБР гауссиан (1),
определяемый как фк (х, у) = ехр
' .Г?'
V ак2 у
, рассмотрим КБР-сеть как аппроксиматор функции решения
и(х)= Х ^ Фк (гкх (5)
к=1
I 2 2
где т - число КБР (скрытых нейронов); Гк (х - схк) + (у - Сук) ; (схк, Сук) - координаты центра
нейрона к ; ак - ширина нейрона к.
Обучение сети сводится к настройке весов, расположения центров и ширины нейронов, минимизирующих функционал качества (функционал ошибки), представляющий собой сумму квадратов невязок в контрольных точках
1 £
I ^ с а) = - X
2 1=1
2 2
д и(х,у) , д и(х,,у) /(х у )
^х^ ^у2 / (х, у)
2 к 2
х К1 г 1
+2ХИх}, уз ) - Р} \ , (6)
2 з=1
где X - штрафной множитель; р} - значение граничных условий первого рода в точке }-границы; N и К
- количество внутренних и граничных контрольных точек.
В [2] предложен алгоритм последовательной настройки центров, ширины и весов с использованием метода градиентного спуска с подбором коэффициентов скорости обучения. Подбор коэффициентов скорости обучения является основным недостатком данного метода.
В [3] для настройки весов предложен другой алгоритм, который сформулирован как задача минимизации методом сопряженных градиентов квадратичного функционала. Данный метод не содержит подбираемых коэффициентов, и настройка весов происходит быстрее, чем методом градиентного спуска.
Очень важно соблюдать при обучении соотношение между оптимальным количеством нейронов т и количеством контрольных точек [4]
т ~ 3 N + К ,
где — знак пропорциональности. Данное соотношение требует большого числа контрольных точек, что ведет к увеличению времени решения задачи. В [3] обосновано, что многократная случайная генерация относительно небольшого числа контрольных точек внутри и на границе области решения компенсирует нарушение пропорции.
Таким образом, обучение радиально-базисной сети состоит из следующих основных шагов.
1. Генерация начальных значений параметров сети.
2. Генерация случайных контрольных точек для одного или нескольких циклов обучения.
3. Несколько циклов настройки центров и ширины при зафиксированных весах. В данном случае центры и ширина настраивались методом градиентного спуска:
с(П) = с(п-1) - о(и-1) д1 (ск"-1), ак"-1), Ск =ск р дс(«-1) ,
дск
д1 (с (П-1) а (П-1) №(И)) а(") = а(п-1) - а (п-1) д1 (ск , ак , ™к )
ак =ак -а дакп-1) .
РЕАЛИЗАЦИЯ РАДИАЛЬНО-БАЗИСНОЙ НЕЙРОННОЙ СЕТИ .
4. Несколько циклов настройки весов при зафиксированных значениях центров и ширины по алгоритму минимизации методом сопряженных градиентов квадратичного функционала, полученного в [3]: I = (А', w) - 2^, w) + 0,5^, f) + 0,5Х(р, p),
где A = -(MT M + XNT N) 2
- симметричная положительно определенная матрица;
1 T T
s = ~(M f +XN p); M - матрица N x m с элементами mk = 4exp
f ..2\ „2
; N - матрица
K x m с элементами nk = exp
f r2 ^ ik
„2
; f - вектор значений функции правой части во внутренних точ-
ках; p - вектор граничных условий в граничных контрольных точках. 5. Проверка, достигнута ли требуемая погрешность. Для этого целесообразно использовать одну из норм вектора невязки (вектор невязки вычисляется во внутренних и граничных контрольных точках). Если требуемая погрешность не достигнута, то переход на шаг 2.
Используется пакетный режим обучения, т.е. вычисляется усредненная ошибка по всем контрольным точкам.
Алгоритмы распараллеливания вычислений на графическом процессоре в технологии CUDA
Как было описано выше, для минимизации весов сети использовался алгоритм минимизации квадратичного функционала методом сопряженных градиентов. Непосредственно данный алгоритм состоит из матрично-векторных операций, распараллеливание которых описано в [5]. Но, кроме коррекции весов, большая доля времени приходится на вычисление матриц M и N, расстояний г^, коррекцию векторов центров и ширины. При этом элементы данных матриц и векторов находятся не с помощью матрично-векторных операций, а в циклах, что делает невозможным использование стандартной библиотеки СИБЛ СИБЬЛ8. Например, вычисление матрицы M и вектора Г1 осуществляется в двух вложенных циклах (рис. 2). Реализация данной функции на графическом процессоре позволяет избавиться от обоих циклов и параллельно вычислить каждый из элементов матрицы M.
Функция (входные данные: вектора - a, £ матрица - R; числа - т, от) Г1 = нулевой вектор 1*от; М = нулевая матрица отхт Цикл 1: I от 1 до от Цикл 2: к от 1 до т
m ik = 4e
~ 2 4 rk-
2 ■ak
4
ak
r1i = r1i + mikwk Конец цикла 2 r1i = r1i + fi Конец цикла 1
Возвращаемые значения: M, ri
Рис. 2. Алгоритм последовательного вычисления матрицы М и вектора ri
Для вычисления одного элемента матрицы М требуется прочитать из памяти г\к и % и выпол-
нить все операции по формуле mik = 4exp
2
ik_ ^ J
2 2 r 2 - at
т. е. необходимо небольшое количество чтений
из памяти и большое количество вычислений. Такие задачи прекрасно реализуются на архитектуре графического процессора, так как слабое место GPU - относительно медленное чтение из памяти - компенсируется за счет большого количества параллельно выполняемых вычислений.
Как видно из рис. 3, вычисления на графическом процессоре происходят в nv блоках, каждый из которых содержит m потоков. Один поток вычисляет один элемент матрицы M , в результате все эле-
г
т
менты матрицы вычисляются параллельно. Вычисление вектора Гц =Хт^к - / реализуется в этом
к=1
том же ядре, что и матрицы М , для уменьшения чтений из памяти, так как найденные элементы матрицы М сразу используются для вычисления вектора Г1 через разделяемую память блока размером 1 х т .
Блок 1 Блок 2
Блок nv
Потоки:
1 2 m-1 m А""
Блок 1. Поток i (i = 1,2,...,m ) 1. Чтение из глобальной памяти Я^-.
Я{, 2
a2 - ai
2. Вычисление т^- = 4е
а]
3. Вычисление т^к^т и запись в разделяемую память
4. Суммирование значений в разделяемой памяти потоками блока, подобно параллельному вычислению скалярного произведения
5. Запись в глобальную память вычисленных значений т^- и г^-
Рис. 3. Алгоритм параллельного вычисления матрицы М и вектора ri на GPU
Другие вычисления алгоритма обучения RBFNN, такие как вычисление матрицы N, коррекция центров и ширины методом градиентного спуска, метод сопряженных градиентов для настройки весов, распараллеливаются на графическом процессоре подобным образом.
Анализ результатов экспериментов
Алгоритм обучения RBFNN реализовывался с помощью технологии CUDA на графическом процессоре nVidia GeForce 8800 GTX, на центральных процессорах Intel Pentium 4 3 GHz (CPU1) и Intel® Core™ 2 Quad CPU Q8200 2,33GHz (CPU2) на Microsoft Visual Studio 2008. Экспериментальное исследование проводилось на примере модельной задачи (3)-(4) для f (х,y) = sin(:rcx)sin(:rcy), p(х, y) = 0. Анализ
результатов экспериментов показал, что часть алгоритма, не включающая обучение весов сети, распараллеливается очень эффективно, значительно уменьшая время вычислений. Метод сопряженных градиентов для обучения весов становится более эффективным при увеличении числа нейронов. Для решаемой задачи увеличивать количество нейронов не имело смысла, поэтому ускорения были получены в основном за счет распараллеливания шага 1, вычисления матриц M , N и др., что можно видеть из таблицы. При решении более сложного уравнения эффективность распараллеливания на графическом процессоре будет значительней, но и для решаемой задачи было получено существенное ускорение. Общее
ускорение вычислялось по формуле S =
Время вычислений CPU
. В сравнении с CPU Intel Pentium 4
Время вычислений GPU
3 GHz при числе контрольных точек 224 оно составило 38,58, при числе контрольных точек 524 - 83,42, в сравнении с Intel® Core™ 2 Quad CPU Q8200 2,33GHz - 17,31 и 34,5 соответственно.
В таблице приведены результаты экспериментов, из которых видно, что уже при небольшом числе нейронов и контрольных точек реализация алгоритма обучения на графическом процессоре дает существенный выигрыш во времени.
at и w1
Параметры сети Шаг алгоритма обучения сети GPU, мс CPU 1, мс CPU 2, мс Уск. 1 Уск. 2
Число контр. точек = 224 Шаг 3 0,56 64,1 27,8 114,5 49,6
Число контр. точек = 524 Шаг 3 0,58 173,2 71,7 298,6 123,6
Число нейронов = 64 Шаг 4 1,12 1,9 1,2 1,7 1,07
Таблица. Результаты экспериментов
МЕТОД НАВИГАЦИИ ПО ТЕКСТУ ДОКУМЕНТА С ПОМОЩЬЮ АВТОМАТИЧЕСКОЙ..
Заключение
В результате распараллеливания алгоритма обучения RBFNN, основанного на идее последовательной настройки центров, ширины и весов и идее использования для настройки весов алгоритма минимизации квадратичного функционала методом сопряженных градиентов, было достигнуто существенное уменьшение времени вычислений. При решении уравнения Пуассона, с использованием сети с 64-мя нейронами и 524 контрольными точками, достигнуто ускорение в 34,5 раза в сравнении с CPU Intel® Core™ 2 Quad.
Работа выполнена по тематическому плану научно-исследовательских работ Пензенского государственного педагогического университета, проводимых по заданию Федерального агентства по образованию.
Литература
1. Liu G.R. An Introduction to Meshfree Methods and Their Programming / G.R. Liu, Y.T. Gu. - Springer, 2005. - 479 p.
2. Jianyu L. Numerical solution of elliptic partial differential equation using radial basis function neural networks / L. Jianyu, L. Siwei, Q. Yingjiana, H. Yapinga // Neural Networks. - 2003. - 16(5/6). - P. 729-734.
3. Горбаченко В.И. Радиально-базисные нейронные сети для решения краевых задач бессеточными методами / В.И. Горбаченко, Е.В. Артюхина, В.В. Артюхин // Нейроинформатика-2010: Сборник научных трудов XII Всероссийской научно-технической конференции. В 2-х частях. Часть 2. - М.: НИЯУ МИФИ, 2010. - С. 237-247.
4. Хайкин С. Нейронные сети: Полный курс / С. Хайкин. - М.: Вильямс, 2006. - 1104 с.
5. Горбаченко В.И. Реализация итерационных алгоритмов решения систем линейных алгебраических уравнений на графических процессорах в технологии CUDA / В.И. Горбаченко, Н.О. Матвеева // Вопросы радиоэлектроники. Серия ЭВТ. - 2008. - Вып. 6. - С. 65-75.
Матвеева Наталья - Пензенский государственный педагогический университет им. В. Г. Белинского, Олеговна аспирант, [email protected]
УДК 004.912
МЕТОД НАВИГАЦИИ ПО ТЕКСТУ ДОКУМЕНТА С ПОМОЩЬЮ АВТОМАТИЧЕСКОЙ ОБРАБОТКИ ЕГО СОДЕРЖИМОГО
А.И. Табарча
Описывается подход, который может быть использован в качестве альтернативы автоматическому реферированию текста. Суть подхода заключается в формировании представлений исходного текста и возможности перемещаться по его содержанию с помощью этих представлений - от общего представления к более конкретному представлению и обратно. Представления формируются на основании методов автоматической обработки текста - статистических методов и поверхностного лингвистического анализа. В работе дано формализованное описание подхода, а также рассмотрена реализация на основе реляционной базы данных.
Ключевые слова: автоматическое реферирование, автоматический анализ текста, автоматическое извлечение терминов, статистические методы.
Введение
Постоянный рост объемов информации снижает эффективность ее обработки традиционными методами. Единственным инструментом, который потенциально может обеспечить охват информационных ресурсов, являются различные программы автоматической обработки текста, реализующие индексирование, аннотирование, реферирование, фрагментирование и другие формы информационного анализа и синтеза [1].
Среди задач автоматической обработки текста можно выделить задачу автоматического реферирования текстов, потребность в решении которой стабильно возрастает. Предполагается, что на основании реферата, составляющего, как правило, 5-30% исходного текста, можно составить обоснованное заключение о первичном документе, затратив значительно меньше усилий на ознакомление с ним [1].
Решения задачи автоматического реферирования четко разбиваются на два направления - квазиреферирование и краткое изложение содержания первичных документов. Квазиреферирование основано на выделении из текста наиболее информативных предложений и формировании из них квазирефератов. Краткое изложение исходного материала основывается на выделении из текста, на основании искусственного интеллекта и с помощью специальных искусственных языков, наиболее существенной информации и порождении нового текста, содержательно обобщающего первичный текст [2].
Проанализировав вышеописанные подходы к решению проблемы стремительного роста производства информации, можно отметить, что более трудоемкий в реализации и поддержке метод краткого изложения содержания дает лучшие результаты, чем более простой в реализации и более универсальный метод квазиреферирования [3].