Например, Бобцов

РЕАЛИЗАЦИЯ РАДИАЛЬНО-БАЗИСНОЙ НЕЙРОННОЙ СЕТИ НА МАССИВНО-ПАРАЛЛЕЛЬНОЙ АРХИТЕКТУРЕ ГРАФИЧЕСКОГО ПРОЦЕССОРА

РЕАЛИЗАЦИЯ РАДИАЛЬНО-БАЗИСНОЙ НЕЙРОННОЙ СЕТИ ...
6 КОМПЬЮТЕРНЫЕ СИСТЕМЫ И ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ
УДК 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) представляет собой сеть с двумя слоями. Первый слой осуществляет преобразование входного вектора x с использованием RBF. Практически используются различные RBF.

Рис. 1. Радиально-базисная нейронная сеть

В дальнейшем будем использовать наиболее часто употребляемую функцию – гауссиан, имеющий

для k-го нейрона вид

k (x)  exp(rk2 / ak2 ) ,

(1)

54 Научно-технический вестник Санкт-Петербургского государственного университета
информационных технологий, механики и оптики, 2011, № 1 (71)

Н.О. Матвеева

где x – входной вектор; rk  x  ck – радиус k-го нейрона; ak – ширина k-го нейрона; ck – центр k-го

нейрона. Выход сети описывается выражением

m
u  wkk (x), k 1

(2)

где wk – вес связи выходного нейрона с k-ым нейроном первого слоя; m – число нейронов первого слоя.

Алгоритм обучения RBFNN

Рассмотрим градиентный алгоритм обучения RBFNN на примере решения двумерного уравнения Пуассона

2u x 2



2u y 2



f (x, y),

(x, y)   ,

(3)

u  p(x, y), (x, y)   ,

(4)

где  – граница области; f и p – известные функции (x, y) . Выбирая в качестве RBF гауссиан (1),

определяемый

как

k (x,

y)



exp

  



rk2 ak2

  

,

рассмотрим

RBF-сеть

как

аппроксиматор

функции

решения

m
u(x)  wkk (rk ), k 1

(5)

где m – число RBF (скрытых нейронов); rk  (x  cxk )2  ( y  cyk )2 ; (cxk ,cyk ) – координаты центра

нейрона k ; ak – ширина нейрона k.
Обучение сети сводится к настройке весов, расположения центров и ширины нейронов, минимизирующих функционал качества (функционал ошибки), представляющий собой сумму квадратов невязок в контрольных точках

  I(w,с,a)



1 2

N i 1

  

2u(xi , x2

yi )



2u(xi , y2

yi )



f

(xi ,

2 yi )




 2

K j 1

u(x j,

yj)

pj

2

,

(6)

где  – штрафной множитель; p j – значение граничных условий первого рода в точке j-границы; N и K

– количество внутренних и граничных контрольных точек. В [2] предложен алгоритм последовательной настройки центров, ширины и весов с использовани-
ем метода градиентного спуска с подбором коэффициентов скорости обучения. Подбор коэффициентов скорости обучения является основным недостатком данного метода.
В [3] для настройки весов предложен другой алгоритм, который сформулирован как задача минимизации методом сопряженных градиентов квадратичного функционала. Данный метод не содержит подбираемых коэффициентов, и настройка весов происходит быстрее, чем методом градиентного спуска.
Очень важно соблюдать при обучении соотношение между оптимальным количеством нейронов m и количеством контрольных точек [4]

m 3 NK ,
где ~ – знак пропорциональности. Данное соотношение требует большого числа контрольных точек, что ведет к увеличению времени решения задачи. В [3] обосновано, что многократная случайная генерация относительно небольшого числа контрольных точек внутри и на границе области решения компенсирует нарушение пропорции.
Таким образом, обучение радиально-базисной сети состоит из следующих основных шагов. 1. Генерация начальных значений параметров сети. 2. Генерация случайных контрольных точек для одного или нескольких циклов обучения. 3. Несколько циклов настройки центров и ширины при зафиксированных весах. В данном случае цен-
тры и ширина настраивались методом градиентного спуска:

ck(n)



ck(n1)

 (n1)

I (ck(n1) , ak(n1) , wk(n) ) ck(n1)

,

ak(n)



ak(n1)

 (n1)

I (ck(n1) , ak(n1) , wk(n) ) ak(n1)

.

Научно-технический вестник Санкт-Петербургского государственного университета информационных технологий, механики и оптики, 2011, № 1 (71)

55

РЕАЛИЗАЦИЯ РАДИАЛЬНО-БАЗИСНОЙ НЕЙРОННОЙ СЕТИ ...

4. Несколько циклов настройки весов при зафиксированных значениях центров и ширины по алгоритму минимизации методом сопряженных градиентов квадратичного функционала, полученного в [3]:
I  (Aw, w)  2(s, w)  0,5(f ,f )  0,5(p,p) ,

где

A



1 2

(MT M  NT N)

– симметричная положительно определенная матрица;

s



1 2

(MT f

 NT p)

;

M

– матрица

Nm

с элементами

mik



4

exp

  



rik2 ak2

  

rik2

 ak4

ak2

;

N

– матрица

Km

с элементами

nik



exp

  



rik2 ak2

 

;



f

– вектор значений функции правой части во внутренних точ-

ках; p  вектор граничных условий в граничных контрольных точках.

5. Проверка, достигнута ли требуемая погрешность. Для этого целесообразно использовать одну из

норм вектора невязки (вектор невязки вычисляется во внутренних и граничных контрольных точ-

ках). Если требуемая погрешность не достигнута, то переход на шаг 2.

Используется пакетный режим обучения, т.е. вычисляется усредненная ошибка по всем контроль-

ным точкам.

Алгоритмы распараллеливания вычислений на графическом процессоре в технологии CUDA

Как было описано выше, для минимизации весов сети использовался алгоритм минимизации квадратичного функционала методом сопряженных градиентов. Непосредственно данный алгоритм состоит из матрично-векторных операций, распараллеливание которых описано в [5]. Но, кроме коррекции весов,
большая доля времени приходится на вычисление матриц M и N , расстояний rik , коррекцию векторов
центров и ширины. При этом элементы данных матриц и векторов находятся не с помощью матричновекторных операций, а в циклах, что делает невозможным использование стандартной библиотеки
CUDA CUBLAS. Например, вычисление матрицы M и вектора r1 осуществляется в двух вложенных
циклах (рис. 2). Реализация данной функции на графическом процессоре позволяет избавиться от обоих циклов и параллельно вычислить каждый из элементов матрицы M.

Функция (входные данные: вектора – w, a, f; матрица – R; числа – m, nν)

r1 = нулевой вектор 1×nν;

M = нулевая матрица nν×m

Цикл 1: i от 1 до nν

Цикл 2: k от 1 до m

mik




4e

ri2k ak2

ri2k  ak2 ak4

r1i  r1i  mik wk

Конец цикла 2

r1i  r1i  fi

Конец цикла 1

Возвращаемые значения: M, r1

Рис. 2. Алгоритм последовательного вычисления матрицы М и вектора r1

Для вычисления одного элемента матрицы M требуется прочитать из памяти rik и ak и выпол-

нить все операции по формуле

mik



4

exp

 





rik2 ak2

  

rik2  ak2 ak4

,

т.е. необходимо

небольшое количество чтений

из памяти и большое количество вычислений. Такие задачи прекрасно реализуются на архитектуре гра-

фического процессора, так как слабое место GPU – относительно медленное чтение из памяти – компен-

сируется за счет большого количества параллельно выполняемых вычислений.

Как видно из рис. 3, вычисления на графическом процессоре происходят в nν блоках, каждый из

которых содержит m потоков. Один поток вычисляет один элемент матрицы M , в результате все эле-

56 Научно-технический вестник Санкт-Петербургского государственного университета
информационных технологий, механики и оптики, 2011, № 1 (71)

Н.О. Матвеева

m
менты матрицы вычисляются параллельно. Вычисление вектора r1i  mik wk  fi реализуется в этом k 1
том же ядре, что и матрицы M , для уменьшения чтений из памяти, так как найденные элементы матри-
цы M сразу используются для вычисления вектора r1 через разделяемую память блока размером 1 m .

Блок 1 Блок 2
Блок nν

Потоки: 12
··· ···
···

m–1 m

Блок 1. Поток i ( i  1,2,..., m )

1. Чтение из глобальной памяти R1i , ai и wi

2. Вычисление

m1i




4e

R12i ai2

R12i  ai2 ai4

3. Вычисление m1k wm и запись в разделяемую
память 4. Суммирование значений в разделяемой памяти потоками блока, подобно параллельному вычислению скалярного произведения 5. Запись в глобальную память вычисленных

значений m1i и r1i

Рис. 3. Алгоритм параллельного вычисления матрицы М и вектора r1 на 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 (x, y)  sin(x)sin(y) , p(x, y)  0 . Анализ

результатов экспериментов показал, что часть алгоритма, не включающая обучение весов сети, распараллеливается очень эффективно, значительно уменьшая время вычислений. Метод сопряженных градиентов для обучения весов становится более эффективным при увеличении числа нейронов. Для решаемой задачи увеличивать количество нейронов не имело смысла, поэтому ускорения были получены в
основном за счет распараллеливания шага 1, вычисления матриц M , N и др., что можно видеть из таб-

лицы. При решении более сложного уравнения эффективность распараллеливания на графическом процессоре будет значительней, но и для решаемой задачи было получено существенное ускорение. Общее

ускорение вычислялось по

формуле

S



Время вычислений Время вычислений

CPU GPU

.

В сравнении с CPU Intel

Pentium 4

3 GHz при числе контрольных точек 224 оно составило 38,58, при числе контрольных точек 524 – 83,42, в сравнении с Intel® Core™ 2 Quad CPU Q8200 2,33GHz – 17,31 и 34,5 соответственно.
В таблице приведены результаты экспериментов, из которых видно, что уже при небольшом числе нейронов и контрольных точек реализация алгоритма обучения на графическом процессоре дает существенный выигрыш во времени.

Параметры сети Число контр. точек = 224

Шаг алгоритма обучения сети
Шаг 3

GPU, мс
0,56

СPU 1, мс
64,1

CPU 2, мс
27,8

Уск. 1 114,5

Уск. 2 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

Таблица. Результаты экспериментов
Научно-технический вестник Санкт-Петербургского государственного университета информационных технологий, механики и оптики, 2011, № 1 (71)

57

МЕТОД НАВИГАЦИИ ПО ТЕКСТУ ДОКУМЕНТА С ПОМОЩЬЮ АВТОМАТИЧЕСКОЙ...

Заключение
В результате распараллеливания алгоритма обучения 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.

Матвеева Олеговна

Наталья – Пензенский государственный педагогический университет им. В. Г. Белинского, аспирант, fire_tiger_705@mail.ru

58 Научно-технический вестник Санкт-Петербургского государственного университета
информационных технологий, механики и оптики, 2011, № 1 (71)