Доклады БГУИР
2012 № 6 (68) УДК 004.8.032.26
АДАПТАЦИЯ ТОПОЛОГИЙ ИСКУССТВЕННЫХ НЕЙРОННЫХ СЕТЕЙ ДЛЯ ПРИМЕНЕНИЯ CUDA-ТЕХНОЛОГИИ
О С. ХИЛЬКО, С П. КУНДАС, В.И. КОВАЛЕНКО
Международный государственный экологический университет им. А.Д. Сахарова ул. Долгобродская, 23, Минск, 220009, Беларусь
Поступила в редакцию 11 сентября 2012
В работе рассматривается применение CUDA-технологии в программной реализации прямого и обратного проходов искусственной нейронной сети (ИНС) на основе алгоритма обратного распространения ошибки. Показана правомерность добавления в слои ИНС «мнимых» нейронов, позволяющих адаптировать топологию нейронной сети для использования CUDA-технологии. При этом доказано, что введение «мнимых» нейронов не влияет на ход вычислений при выполнении алгоритма обратного распространения ошибки.
Ключевые слова: параллельные вычисления, искусственные нейронные сети, CUDA-технология, «мнимый» нейрон, вычисления на GPU.
Введение
В настоящее время CUDA--технология (Compute Unified Device Architecture), используемая для выполнения расчетов на графических процессорах (GPU) фирмы Nvidia, применяется в искусственных нейронных сетях (ИНС) для решения широкого спектра задач из разных предметных областей [1], в частности, при реализации алгоритма обратного распространения ошибки. К примеру, в разработанном нами программном комплексе SPS (Simulation Processes in Soil) многослойный персептрон на основе алгоритма обратного распространения применен для прогнозирования миграции загрязняющих веществ в почве и на ее поверхности [2]. CUDA-технология использована в нем для ускорения обучения ИНС и ее функционирования в режиме расчета (прямого прохода).
В вычислительной архитектуре CUDA имеется шесть видов памяти: регистровая, локальная, глобальная, разделяемая, константная, текстурная. Каждый из этих типов памяти имеет определенное назначение, которое обуславливается техническими параметрами памяти (скорость работы, уровень доступа на чтение и запись) [3]. При решении прикладных задач тип (или сочетание типов) памяти выбирается в каждом конкретном случае и зависит от множества факторов: размерности обрабатываемых данных, их внутренней структуры и типа, необходимости проведения промежуточных вычислений и др.
Для повышения производительности и минимизации обращений к глобальной памяти при работе с массивами данных большой размерности, а также для хранения локальных переменных внутренних методов используется «быстрая» разделяемая память. Адресация разделяемой памяти между нитями потока одинакова в пределах одного блока, что может быть использовано для обмена данными между потоками в пределах одного блока.
Следует подчеркнуть важность выбора оптимального размера блоков разделяемой памяти, что связано с аппаратными ограничениями видеокарты (в видеокартах Nvidia GeForce серий 8х/9х максимальный размер разделяемой памяти для блока составляет 16384 байта, количество потоков в блоке не может превышать 512). Соответственно, при работе с матрицами и векторами из элементов с плавающей точкой одинарной точности (float) целесообразно использовать двумерные квадратные блоки не выше размерности 16 х 16 [1].
Искусственные нейронные сети требуют проведения однотипных операций над большими объемами данных. Поэтому использование CUDA-технологии для реализации вычислительных алгоритмов ИНС способно значительно ускорить их выполнение.
Однако применение CUDA-технологии требует приведения количества нейронов в слоях к размерностям 2п, где с учетом применения двумерных квадратных блоков п = {1,.. .,5} [1,4]. Таким образом, для каждого слоя ИНС матрица весовых коэффициентов нейронов, векторы входных, выходных параметров и порогов должны быть выровнены.
Авторами статьи предложено при проведении вычислений ввести в слои ИНС «мнимые» нейроны, которые позволяют адаптировать топологию искусственной нейронной сети для использования CUDA-технологии. Добавление «мнимых» нейронов предполагает заполнение нулями недостающих параметров и установление желаемых значений для «мнимых» нейронов последнего выходного слоя равными значению функции активации от нуля Fact (0) .
Применение такого решения требует проведения точного математического анализа, так как в ИНС используются нелинейные функции активации. Также необходимо доказать, что добавление «мнимых» нейронов не влияет на результаты расчетов в ходе проведения вычислений алгоритма обратного распространения ошибки.
Алгоритм обратного распространения ошибки
Алгоритм обратного распространения ошибки [5,6] является эффективным средством обучения нейронных сетей. В частности, для прогнозирования миграции загрязняющих веществ в почве и на ее поверхности указанный алгоритм представляет собой следующую последовательность шагов [5-7] :
Шаг 1. Задается скорость обучения r (0 <r < 1) момент п (0 <n < 1), желаемая ошибка нейронной сети Em и максимальное количество итераций обучения tmax.
Шаг 2. Случайным образом инициализируются весовые коэффициенты и пороговые значения нейронной сети в интервале [ (-0.05;0) U (0;0.05) ].
Шаг 3. Последовательно подаются образы из обучающей выборки на вход нейронной сети. При этом для каждого входного образа выполняются следующие действия.
1. Производится расчет прямого распространения входного образа по нейронной сети, для чего вычисляется выходная активность всех нейронных элементов сети:
yj = Fact d j - Tj ) = Fact £ wJ y, - Tj ) = FaBt ( S, ), (1)
i i
где индекс j характеризует нейроны следующего слоя по отношению к слою i.
Для сигмоидальной функции активации выходная активность вычисляется по формуле (2), для гиперболического тангенса и биполярной сигмоидальной функции - по формулам (3) и (4) соответственно:
F (S.) =-1—~, (2)
act\ j' -os, ' v '
1 + e 1
oS, -os ,
e 1 — e J
Fctt (sj ) =P oSj -oSj . (3)
e 1 + e 1
2
F (S.) =-^-1. (4)
act\j> -os, v '
1+e
2. Производится расчет обратного распространения сигнала, в результате которого вычисляется ошибка сети и определяется локальный градиент 5J нейронных элементов всех слоев.
Вычисляется суммарная среднеквадратичная ошибка нейронной сети (5), либо средняя относительная ошибка (6):
Е=(^ - у/)2> (5)
С 1
ЕЕ
SNout sj
(У; - j ^
v K1 ,
• 100%, (6)
где S - размерность обучающей выборки, Nout - количество нейронов в выходном слое, j = {1,...Nout}, s = {1,...S}, dj - желаемое значение выходного сигнала J-го нейрона последнего слоя.
Если E > Em или о > Em , то алгоритм выполняется далее. В противном случае алгоритм обратного распространения ошибки заканчивается.
Локальный градиент для выходного и скрытого слоев рассчитывается по формулам (7) и (8) соответственно:
Sj = (У. - dj WL (S. X (7)
s j = Kcl (s. )Е sk, (8)
k
В последнем выражении индекс k характеризует нейронные элементы следующего слоя по отношению к слою j.
Так как y. = Fact (S.) то для различных функций активации справедливы следующие
соотношения. Для сигмоидальной функции формулы (7) и (8) можно переписать в виде:
Sj = (У. - d. )FC (S. ) = a(y - dj )yj (1 - У. ),
s j = FL (Sj )Е Wjk sk =«y. (1 - yj )Е Wjk sk;
kk
для гиперболического тангенса как:
a
S = (yj -d.)KctS) = p (yj -d.)(P+yj)(P-yj)
s j. = FL (Sj )Е wJk sk=p (p+yj )(p- yj )Е Wjk sk;
a
k P k
для биполярной сигмоидальной функции активации в виде:
П
3, = (У, - )Ъ (^) = -(у, - )(1+у, )(1 - у,),
8, = К; (^ )Е = у0 + уX1 - у, )Е ^ .
к 2 к
3. Для каждого слоя нейронной сети находятся корректирующие значения весовых коэффициентов Awij(t) и порогов ДТ/0 на итерации ; с учетом их значений на предыдущей итерации ;-1:
Аw, (;) = г (; -1) + (1 - Ц)5 ]у1), (9)
АТ, (;) = г (цАТ, (г -1) + (1 - ц)5,), (10)
после чего происходит изменение весовых коэффициентов и порогов нейронных элементов:
^) = ^-1) X (11)
Т} (;) = Т, (г -1) + АТ, (;). (12)
Шаг 4. Если алгоритм выполнен на всей обучающей выборке заданное количество итераций tmax, его выполнение останавливается. В противном случае происходит возврат к шагу 3.
Таким образом, алгоритм обратного распространения ошибки функционирует до тех пор, пока ошибка сети не станет меньше заданной, т.е. Е > Ет или о > Ет , либо обучение не будет выполнено на всей выборке раз.
Добавление «мнимых» нейронов при выравнивании размерностей слоев ИНС
Для выравнивания размерности слоев ИНС нами предложено добавление «мнимых» нейронов, у которых нулю равны:
- весовые коэффициенты wij = 0 V/ и их корректирующие значения AWj. = 0 V/,
- порог Т. = 0 и его корректирующее значение АТ. = 0 ,
- весовые коэффициенты нейронов w-к = 0 Vk последующего слоя, связанных с рассматриваемым «мнимым» нейроном, и соответствующие корректирующие значения
AwJk = 0 Vk .
Покажем, что при соблюдении определенных условий на любой итерации указанные величины для «мнимого» нейрона не изменяются в ходе выполнения алгоритма для всей обучающей выборки, а также докажем, что наличие «мнимого» нейрона в любом слое (входном, скрытом или выходном) не влияет на выполнение алгоритма.
Вычисление выходной активности.
Рассмотрим нейроны двух смежных слоев ИНС (см. рис. 1).
Рис. 1. Два смежных слоя нейронной сети
Для последующего слоя выход любого нейрона у. = Fact (5)) согласно формуле (1) будет рассчитываться как
т
Б. = У w..y. -Т = w1 х, + w2 ,х2 +... + w х -Т , (13)
) У'' ) 1) 12) 2 ж) т )' V >
/=1
учитывая, что выход предыдущего слоя у{ является входом для последующего, т.е. у{ = х{.
Если нейрон т предыдущего слоя является «мнимым», то wmj = 0 V) = 1,п (см. рис. 2). Формула (13) для каждого из п нейронов последующего слоя примет вид:
т
= V w..y. -Т = w1 х + w2 х2 + ... + 0 -Т . (14)
) У'' ) 1) 12) 2 ) V >
/=1
Исходя из формулы (14) можно сформулировать следующее утверждение.
Утверждение 1. «Мнимые» нейроны предыдущего слоя не влияют на вычисление индуцированного поля Б. и выхода (выходной активности) у, = Fact (Б.) последующего слоя.
Рис. 2. Часть топологии ИНС с добавленным «мнимым» нейроном в предыдущем слое Предположим, что нейрон п последующего слоя является «мнимым» (см. рис. 3).
Рис. 3. Часть топологии ИНС с добавленным «мнимым» нейроном в последующем слое
Принимая во внимание win = 0 V/ = 1, т и Тп = 0, величина индуцированного поля Sn согласно формуле (13) будет равняться 0:
Sn = w1 х + w2nx2 +... + wxm -Tn = 0 + 0 +... + 0 - 0 = 0.
n in 1 2n 2 mn m n
(15)
Тогда, подставляя (15) в (1), получаем, что значение выхода будет постоянно:
Уп = Fact (S) = Fact (0) = const. (16)
На основании формулы (16) можно сформулировать утверждение 2. Утверждение 2. Расчетное значение выхода «мнимого» нейрона всегда постоянно и равно значению активационной функции от нуля.
Для сигмоидальной функции активации выходная активность в соответствии с формулой (2) равна:
Fc (0) = -
1
1 1
1 1 , „о т '
1 + е 1 1 + е 2 для гиперболического тангенса исходя из формулы (3)
аЯ, -аЯ, 0 0 11
е 1 — е 1 е — е I — I
^ (0)=р =р =р 7-г=0;
е 1 + е 1 е + е 1 + 1
для биполярной сигмоидальной функции активации, согласно (4), получаем:
Fc (0) = ■
2
1 +
22
-1 =---1 =--1 = 1 -1 = 0.
1 + еи
1 +1
Для биполярной сигмоидальной активационной функции и гиперболического тангенса утверждение 2 будет сформулировано следующим образом.
Утверждение 3. Значение выхода «мнимого» нейрона для биполярной сигмоидальной активационной функции и гиперболического тангенса равно нулю.
Оценка влияния «мнимого» нейрона в выходном слое на величину ошибки сети.
В формулы (5) и (6) входит величина Ау* = dJs — у. , характеризующая отклонение рассчитанного значения выхода от желаемого для каждого обучающего набора данных При ат = ут величина погрешности нейрона Аут = 0. Для «мнимого» нейрона ут, принимая во
внимание утверждение 2, справедливо уш" = Fact (0). Таким образом, можно сформулировать утверждение 4.
Утверждение 4. Для каждого набора данных s при величине желаемого значения «мнимого» нейрона выходного слоя равной d¡ms = Fact (0) его наличие не влияет на ошибку сети.
Рассмотрим значение локального градиента «мнимого» нейрона. Для выходного слоя согласно формуле (7) при учете d¡ms = Fcct (0) (см. утверждение 4) и уш* = Fcct (0) (см. утверждение 2) справедливо:
5,т = (Ут - d¡m)^ (0) = (^ (0) - Fact (0)) • ^(0) = 0. (17)
Для скрытого слоя согласно (8) локальный градиент 5гт «мнимого» нейрона т предыдущего слоя с учетом wmj = 0 У] = 1,п (см. рис. 2) будет вычислен как:
5,т = 5т = F:ct (0)[ нтА +... + Wmn 5„ ] = F'clct (0)[0 +.. + 0] = 0. (18)
Рассмотрим влияние «мнимого» нейрона п в последующем слое на расчет локального градиента одного из действительных нейронов , (см. рис. 3). Принимая во внимание
= 0 У г = 1, т справедливо соотношение:
5, = F'clct (у, ЖД +... + wЛl5 п ] = F'clct (у, Ж.Д +... + 0] = F:ct (у,)[ wn5, +... + wш-15п-1]. (19)
Исходя из формул (17) (17)-(19) можно сформулировать утверждение 5. Утверждение 5. Величина локального градиента «мнимого» нейрона выходного (при обеспечении равенства желаемого значения значению функции активации от нуля, т.е. d¡ms = Fact (0)) и скрытого слоев равна 0 (5т = 0) и не влияет на расчет локального градиента нейрона предыдущего слоя.
Рассмотрим влияние локального градиента «мнимого» нейрона на вычисление корректирующих значений его весовых коэффициентов и порога (см. рис. 3). Согласно формулам (9) и (10) и учитывая 5,^=0 (см. утверждение 5), можно записать:
Aw,т (0 = г ^ -1) + (1 -Ц)5шуг) = ^^ ^ -1), (20)
Мт ^) = г (цМт ^ -1) + (1 - ^) = гцА^ ^ -1). (21)
В случае начальной инициализации нулевыми значениями Aw¡ п (0) = 0 и АТп (0) = 0 все последующие корректирующие значения будут равняться нулю: Awiim (0 = 0 и АТm ^) = 0 .
Согласно формулам (11), (12), (20), (21), а также учитывая wUm = 0У, = 1,m и Тп = 0, значения весовых коэффициентов и порога «мнимого» нейрона будут вычислены как
w.. (t) = w.. (t -1) - Aw.. (t) = w.. (t -1) = 0,
Т (0 = Т а -1) + АТ (t) = Т а -1) = 0.
Исходя из вышеизложенного можно сформулировать утверждение 6. Утверждение 6. При инициализации корректирующих значений весовых коэффициентов и порога «мнимого» нейрона нулевыми значениями 0])=0 и АТ1П(0)=0) весовые коэффициенты и порог «мнимого» нейрона на любой итерации будут также принимать нулевые значения (wim ^) = 0 и Т (п) = 0) при условии их нулевой инициализации.
Заключение
На основании утверждений 1-6 можно сделать вывод о том, что наличие «мнимого» нейрона в слое ИНС не влияет на ход алгоритма обратного распространения ошибки с соблюдением ряда условий при инициализации параметров ИНС:
- весовые коэффициенты и порог «мнимого» нейрона равны нулю (Aw, im(0)=0 для любых i и Tim (0) = 0);
- корректирующие значения весовых коэффициентов и порога «мнимого» нейрона равны нулю (wim (0) = 0 для любых i и Tm (0) = 0);
- весовые коэффициенты нейронов wpk (0) = 0 последующего слоя, связанных с рассматриваемым «мнимым» нейроном, и соответствующие корректирующие значения wjk (0) = 0 для любых k равны нулю;
- желаемое значение «мнимого» нейрона выходного слоя для каждого набора обучающих данных s равно значению активационной функции от нуля dms = Fact (0) (для гиперболического тангенса и биполярного сигмоида равняется нулю, для сигмоидальной функции - 0,5).
Добавление «мнимых» нейронов позволяет адаптировать топологии искусственных нейронных сетей для использования CUDA-технологии, что дает возможность значительно (от двух до пяти раз, как получено нами в [2]) ускорить обучение ИНС.
ADAPTATION OF ARTIFICIAL NEURAL NETWORKS FOR CUDA-TECHNOLOGY APPLICATION
OS. HILKO, S.P. KUNDAS, V.I. KOVALENKO
Abstract
The paper deals with the application of CUDA-technology on software implementation of direct and reverse passes of artificial neural network (ANN) based on back-propagation algorithm. It is shown that introduction of «imaginary» neurons helps to adapt the topology of the neural network to be trained and calculated with CUDA-technology. It is proved that «imaginary» neurons do not affect on the calculations in the back propagation algorithm.
Список литературы
1. Хилько О.С., Коваленко В.И., Кундас С.П. // Докл. БГУИР. 2010, № 7 (53). C. 83-88.
2. Кундас С.П., Гишкелюк И.А., Коваленко В.И. и др. Компьютерное моделирование миграции загрязняющих веществ в природных дисперсных средах. Мн.: МГЭУ им. А.Д. Сахарова, 2011.
3. Антонов И. // Хакер. 2009, № 127. C. 28-31.
4.Хилько О.С. // Доклады БГУИР. 2011, № 4 (58). C. 55-62.
5. Хайкин С. Нейронные сети. Полный курс. СПб : Вильямс, 2006.
6. Головко В.А. Нейронные сети: обучение, организация и применение. М., 2001.
7. Кундас С.П, Коваленко В.И., Хилько О.С. // Вестник ПГУ. 2009. № 9. C. 32-38.