Научная статья на тему 'Сравнительная оценка вычислительной сложности обучения искусственной нейронной сети с жестким ядром и сети с классической структурой'

Сравнительная оценка вычислительной сложности обучения искусственной нейронной сети с жестким ядром и сети с классической структурой Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
1485
189
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Максимушкин В. В., Арзамасцев А. А.

Comparative appraisal of computational complexity of training an artificial neural network with hard nuclear and classic structure neural networks. The article contains an account of non-algorithmic method of increasing training speed while training an artificial neural network and mathematical formulation of its computational complexity.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Максимушкин В. В., Арзамасцев А. А.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Сравнительная оценка вычислительной сложности обучения искусственной нейронной сети с жестким ядром и сети с классической структурой»

УДК 519.95

СРАВНИТЕЛЬНАЯ ОЦЕНКА ВЫЧИСЛИТЕЛЬНОЙ СЛОЖНОСТИ ОБУЧЕНИЯ ИСКУССТВЕННОЙ НЕЙРОННОЙ СЕТИ С ЖЕСТКИМ ЯДРОМ И СЕТИ С КЛАССИЧЕСКОЙ СТРУКТУРОЙ

© В.В. Максимушкин, А.А. Арзамасцев

Maximushkin V.V., Arzamastsev A.A. Comparative appraisal of computational complexity of training an artificial neural network with hard nuclear and classic structure neural networks. The article contains an account of non-algorithmic method of increasing training speed while training an artificial neural network and mathematical formulation of its computational complexity.

При выборе метода решения любой задачи исследователь руководствуется двумя критериями: точностью, с которой данный метод может решить поставленную задачу, и временем, которое надо затратить, чтобы получить решение [3].

Очевидно, что быстрых и точных методов решения не существует. Всегда приходится искать компромисс между скоростью и точностью.

В случае искусственных нейронных сетей (ИНС) точность решения задачи определяется количеством слоёв, количеством связей между нейронами и видами активационных функций каждого нейрона. Время, за которое может быть получено решение, определяется методом обучения.

Рассмотрим слоистую ИНС прямого распространения, обучаемую с учителем.

Для рассматриваемого случая в настоящее время существуют различные методы обучения. Перечислим основные: 1) градиентные методы обучения; 2) алгоритмы метода сопряженных градиентов; 3) квазинью-тоновские алгоритмы, использующие матрицу Гессе вторых частных производных.

Каждый метод имеет свои преимущества и недостатки и применяется в разных задачах [4].

Возникает вопрос, можно ли найти способ увеличить скорость обучения ИНС, не зависящий от метода обучения?

Предположим, необходимо построить ИНС-модель сложного объекта А, составной частью которого является объект А1, ИНС-модель которого уже создана: определена структура модели, активационные функции нейронов и коэффициенты синаптических связей, при которых она показывает адекватные эксперименту результаты. Для разработки ИНС-модели объекта А представляется верным использовать уже имеющуюся модель объекта А1 в неизменном виде так, чтобы при дальнейших модификациях, проверке адекватности, выборе структуры и т. д. эта часть, представляющая собой «жесткое ядро», не подвергалась изменениям, а вновь сконструированная сеть обучалась бы лишь за счет выбора структуры, активационных функций нейронов и значений коэффициентов синаптических связей во вновь введенной части.

Главными достоинствами предлагаемой структуры ИНС является то, что обучение сети с «жестким ядром» будет происходить быстрее, чем в традиционном случае, так как при этом снижается размерность решаемой задачи минимизации (подстраивается лишь часть весовых коэффициентов, имеющихся во вновь введенных структурах) [2].

Подобную оценку можно проводить по реальным затратам времени или по количеству эпох обучения. Так же можно оценивать скорость обучения в количестве математических операций, необходимых для обучения. Последний способ представляется более объективным, чем сравнение количества эпох для выборок разных размеров или сравнение времени вычисления на разных вычислительных машинах [1].

Оценим вычислительную сложность обучения ИНС, подсчитав количество вычислительных операций. Рассмотрим самый простой алгоритм обучения, а именно алгоритм, основанный на методе градиентного спуска. Операции сложения и вычитания будем считать равнозначными. Так же равнозначными посчитаем операции умножения и деления. Вычисление экспоненты будет считаться отдельной операцией.

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

Количество операций в процессе обучения классической ИНС будет складываться из количества операций прямого распространения Snpli и количества операций обратного распространения So6p к. .

Начнем с прямого распространения.

Введем обозначения.

т - количество слоёв в сети.

ni - количество нейронов в слое i.

п = max ni - максимальное количество нейронов

1<i<m -1

во всех скрытых слоях сети. п0 - количество входов сети.

Пт - количество выходов сети.

Для вычисления выхода одного нейрона необходимо подсчитать взвешенную сумму входов net = 2 wx

и вычислить значение функции активации нейрона

f (net) =--------------------------------------------1-. Для функции активации получим

1 + e ~net

количество операций, равное а + р + у.

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

п0

зом: netjj = 2 WjX 1г . Отсюда, количество умножений i=1

п0, количество сложений - (п0 - 1). Уравновешивая операции коэффициентами, получим:

а(no -1) + Рп0 = п0 (а + р) - а .

Вычисление выхода одного нейрона будет включать также и вычисление значения функции активации, а значит S11 для одного нейрона первого слоя будет таким:

Sn = п0(а + р)-а + а + р + у = п0(а + р)+р + у .

Для всего первого слоя количество операций достаточно просто умножить на количество нейронов этого слоя.

S1 = n1n0 (а+в)+п1(Р + У) < п0п(а + Р)+п(Р + У).

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

Для слоя г, г = 2, т -1, получим = пгпг-1 (а + р)+пг (р + у) < п2 (а + р) + п(р + у)

Д ля слоя т - Бт = птпт-1 (а + в) + пт (Р + У) <

< ппт (а + Р)+ пт (Р+У)

Количество операций для всего прямого распространения будет иметь вид:

Sпр.к. < П0п(а + Р) + П(Р + У) +

+ (т -2)[п2 (а + р) + п(р + у)]+

+ ппт (а + р) + пт (Р+у)

(1)

Теперь перейдем к обратному распространению.

Как и свойственно алгоритму обратного распространения, начнем оценивать количество операций с последнего слоя.

Для вычисления изменения одного веса одного нейрона слоя т потребуется вычислить следующее

выражение: Aw = п§ixi, где 5г = (t - o)f (net)х

х [I - f (net)], где t - целевое значение, о - выход нейрона, net = 2 wx .

Количество операций для вычисления изменения одного веса будет следующим: Р + а + Р +

+ (а + р + у) + р+ а + (а + р + у) + р = 4а + 6Р + 2у.

Само изменение составляет еще одну операцию сложения, а значит, в результате получим 5а + бр + 2у .

Изменение всех весов одного нейрона последнего слоя пт-1 (5а + бр + 2у) < п(5а + бр + 2у). Для всего нейрона слоя т количество операций будет отличаться в пт раз: ппт (5а + 6Р+ 2у) .

Продолжим вычисления для слоя (т - 1). В этом случае вычисления будут производиться по другой формуле: =п8гхг где 8г = ( - о)/(neti )х

х[1 - /(п^г )]28г+1^

Изменение одного веса: 3а + бр + 2у + пт (а + р).

Для всех весов: пт -2 [3а+ бр+ 2у + пт (а + р)].

Для всех нейронов слоя т - 1:

пт-1пт-2 [3а + бР + 2У + пт (а + Р)] <

< п2 [3а + бр + 2у + пт (а+р)

Для слоя i: Для слоя 1:

П-1 ni[3а + 6Р + 2У + пг(а + Р)] <

< п2 [3а + 6р + 2у + п(а + р) п0 п1 [3а + 6р + 2 у + п1 (а + р)] <

< пп0 [3а + 6р + 2у + п(а + р)

Итоговое количество операций для всего обратного распространения классической нейронной сети:

Sобр.к. < ппт (5а+ 6Р+ 2у) +

+ п2 [3а + 6р + 2у + пт (а + р)] +

+ (т - 3)п2 [3а + 6р + 2у + п(а + р)] + + пп0 [3а + 6р + 2у + п(а + р)

(2)

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

Бк. = Бпр.к + Бобр.к. < п0п(а + в)+ п(р + у) +

+ (т - 2)п2 (а + р) + п(р + у)] + ппт (а + р) +

+ пт (Р + У) + ппт (5а+ бР+ 2У) +

+ п2 [3а + бр + 2у + пт (а + р)] +

+ (т - 3)п2 [3а + бр + 2у + п(а + р)] +

+ пп0 [3а + бр + 2 у + п (а + Р)] = (3)

= пп0 [4а + 7р + 2 у + п(а + р)] +

+ (т - 2)[п2 (а + р) + п(р + у) +

+ (т - 3)п2 [3а + бр + 2у + п(а + р)] +

+ п2 [3а + бр + 2у + пт (а + р)] +

+ ппт (ба + 7Р + 2у)+ (п + пт № + у)

Стоит также заметить, что данное выражение справедливо лишь для т > 3. Если же количество слоев в

сети меньше, то множитель при (т - 3) теряет всякий смысл и должен обращаться в ноль. Аналогично и для множителя при (т - 2), который должен обращаться в ноль при т < 2.

На рис. 1 показан график зависимости количества операций от количества нейронов в скрытых слоях и количества входов.

Запишем выражение для общего количества вычислительных операций одного шага алгоритма обучения классической ИНС, используя величины одного порядка малости.

Бк. ~ О(п3т)+ О(п2т)+ О(п2пт)+ О(п2п0)+

+ ~

О (ппт )+ О (п )+ О (пт )

(4)

Из выражения (4) видно, что наибольшее сильно вычислительная сложность зависит от количества нейронов в скрытых слоях. Такая упрощенная оценка

вполне применима для использования. На рис. 2 показаны графики зависимости вычислительной сложности от количества нейронов в скрытых слоях для выражений (3) и (4).

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

Далее проведем подобные расчеты для искусственной нейронной сети с жестким ядром. Для того чтобы иметь возможность сравнивать результаты оценок, выполним расчеты в тех же обозначениях, что и для классической нейронной сети. Однако очевидно, что количество слоёв, нейронов в слоях и количество входов сети и жестких ядер будет различным. Определим правила, по которым будут выделяться жесткие ядра из классической сети.

Рис. 1. Зависимость количества вычислительных операций Б при обучении классической искусственной нейронной сети от количества входов сети п0 и количества нейронов в скрытых слоях п. пт = 1, т = 5

Рис. 2. Графики зависимости вычислительной сложности Б от количества нейронов в скрытых слоях п для полной (3) и упрощенной (4) оценок. п0 = 2, пт = 1, т = 4

Рис. 3. Графики зависимости вычислительной сложности Б от количества нейронов в скрытых слоях п для полной (3) и упрощенной (4) оценок. п0 = 2, пт = 1, т = 4. Логарифмическая шкала

Количество жестких ядер обозначим к = 2, п0 . То есть количество жестких ядер должно быть не меньше двух и не больше п0 - количества входов. Отсюда следует, что количество входов жесткого ядра может находиться в пределах от 1 до п0 - (к - 1). Так как мы производим оценку сверху, то в расчетах будем использовать максимальное количество входов жесткого

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

ядра п0Жятах = п0 - к + 1.

Количество выходов жесткого ядра должно быть равным количеству выходов классической сети.

Количество нейронов в каждом скрытом слое ЖЯ определяется следующим правилом: оно должно быть не меньше 2 и не больше п - 2(к - 1). Для оценки сверху будем использовать максимальное количество ней-

р°Н°в пЖятах = п - 2к + 2.

Количество слоев в ЖЯ будет (т - 1), т. к. мы не включаем в ЖЯ предпоследний слой классической сети, который будет использоваться для последующего обобщения сети с жесткими ядрами.

Используя имеющиеся расчетные формулы для классической сети, нетрудно записать их для одного ЖЯ.

Б пр.ЖЯ <(п0 - к +1Хп - 2к + 2)(а+в) +

+ (п - 2к + 2)(р + у)+(т - 3)

(а + р)(п - 2к + 2)2 + (п - 2к + 2) + у)

+ (п - 2к + 2)пт (а + в) + пт (р + у).

(5)

Это выражение нам понадобится для описания обучения сети с ЖЯ.

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

Бобуч.ЖЯ < (п0 - к + 1)(п - 2к + 2) х х [4а + 7р + 2у + (п - 2к + 2+Р)] +

+ (п - 2к + 2Хp + y)+(m - 3) х

х ( + р))^ - 2к + 2)2 + (п - 2к + 2))^ + у)+ (б)

+ пт (п - 2к + 2)(|^а + 7р + 2у) + пт (р + у) +

+ (т - 4)п - 2к + 2)2 [3а + бр + (п - 2к + 2)(а + р)] +

+ (п - 2к + 2)2 [3а + бр + 2у + пт (а + р)]

Стоит заметить, что данное выражение справедливо лишь для т > 4. Если же количество слоев в сети меньше, то множитель при (т - 4) теряет всякий смысл и должен обращаться в ноль. Аналогично и для множителя при (т - 3), который должен обращаться в ноль при т < 3.

Далее опишем обучение сети с жесткими ядрами. Её обучение будет проходить за счет изменения обобщающего и выходного слоев.

Количество нейронов в обобщающем слое п. Количество выходов - пт. Количество входов одного нейрона обобщающего слоя - птк, т. е. количество выходов жесткого ядра умноженное на количество самих жестких ядер.

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

Б

о^ч.обоб^.

< пкпт [4а+ 7Р+ 2у + пт (а + Р)] +

~ппт (ба+ 7Р+ 2у)+(п + пт )(|^+У)

(б)

БобучсетиЖЯ к *Бпр.ЖЯ + Бобуч.обобщ. <

< к (п0 - к +1)(п - 2к + 2)(а + р) +

+ к (п - 2к + 2)(|^ + у)+

+ к (т - З)[(а + р)(п -2к + 2)2 + (п - 2к + 2)(р + у)]+ (7) + к (п - 2к + 2)т (а + р) + кпт (р + у) +

+ пкп т [4а + 7р + 2у + пт (а + р)] +

+ ппт (ба + 7Р + 2у) +(п + пт № + У)

Теперь осталось подсчитать общее количество операций, которое потребуется для обучения жестких ядер и обучения сети с жесткими ядрами.

БобщееЖЯ = БобучсетиЖЯ + к * Бобуч.ЖЯ <

< к(п0 - к + 1)п - 2к + 2)х

х [5а + 8р + 2у + (п - 2к + 2)(а + р)] +

+ 2к(п - 2к + 2) + у)+ 2к(т - 3)х х [(а + [п - 2к + 2)2 + (п - 2к + 2) + у)]+

+ кпт (п -2к + 2)'^а + 8р + 2у) + 2кпт (р + у)+ (8)

+ к (т - 4)п - 2к + 2)2 х х [3а + бр + (п - 2к + 2)а + р)] +

+ к(п - 2к + 2)2 [3а + бр + 2у + пт (а + р)] +

+ пкп т [4а + 7р + 2у + пт (а + р)] -+

+ ппт (ба + 7р + 2у)+ (п + пт № + у)

Условие для скобок (т - 3) и (т - 4) остается таким же и добавляется ограничение на количество жестких

, , п

ядер: к < п0 и к < .

На рис. 4 показан график зависимости количества операций от количества нейронов в скрытых слоях и количества жестких ядер.

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

Как показано на рис. 5, есть два оптимальных способа выбора количества жестких ядер: 1) небольшое (к < 5) количество жестких ядер с большим количеством нейронов в скрытых слоях самих ядер; 2) большое (сравнимое с количеством входов) количество жестких ядер с небольшим количеством нейронов в скрытых слоях самих ядер.

Сравним вычислительную сложность классической ИНС и сети с жестким ядром.

Построив тот же график в логарифмической шкале, можно увидеть, в каких случаях ИНС с жестким ядром выгоднее классической ИНС.

Из рис. 7 видно, что ИНС с жестким ядром выгодна в двух случаях: 1) при небольшом (порядка 10) количестве нейронов в скрытых слоях; 2) при большом (порядка 103) количестве нейронов в скрытых слоях.

Далее рассмотрим зависимость вычислительной сложности Б от количества входов п0 (рис. 8) и от количества слоев т (рис. 9).

Рис. 4. Зависимость количества вычислительных операций Б при обучении искусственной нейронной сети с жестким ядром от количества жестких ядер к и количества нейронов в скрытых слоях п. п0 = 40, пт = 1, т = 5

к

Рис. 5. Зависимость вычислительной сложности Б от количества жестких ядер к. п0 = 40, пт = 1, т = 4

Рис. 6. Зависимость вычислительной сложности Б от количества нейронов в скрытых слоях для классической сети и для сети с жестким ядром. п0 = 10, пт = 1, т = 5

и

Рис. 7. Зависимость вычислительной сложности Б от количества нейронов в скрытых слоях для классической сети и для сети с жестким ядром. п0 = 10, пт = 1, т = 5, к = б. Логарифмическая шкала

Рис. 8. Зависимость вычислительной сложности Б от количества входов сети п0 и количества жестких ядер к. п = 80, пт = 1, т = 5

к

Рис. 9. Зависимость вычислительной сложности Б от количества жестких ядер и количества слоев т. п = 20, пт = 1, т = 4

Из приведенных выше графиков видно, что вид зависимостей аналогичен зависимости вычислительной сложности Б от количества нейронов в скрытых слоях п. И выводы о количестве жестких ядер являются справедливыми в этих случаях.

А именно, количество жестких ядер определяется двумя способами:

1. Количество жестких ядер должно быть небольшим, к < 5.

2. Количество жестких ядер должно быть порядка количества входов сети.

Стоит также отметить, что модифицированные алгоритмы обучения имеют большую вычислительную сложность, а следовательно, выигрыш в обучении сетей с жестким ядром будет выше.

ЛИТЕРАТУРА

1. Scott E. Fahlman and Christian Lebiere «The Cascade-Correlation Learning Architecture» Advances in Neural Information Processing Systems 2, D.S. Touretzky, editor. Morgan Kaufmann 1990.

2. Максимушкин В.В. Построение искусственных нейронных сетей с жестким ядром // Актуальные проблемы информатики и информационных технологий: материалы Междунар. (VIII Тамб. межвуз.) науч.-практ. конф. Тамбов: Изд-во ТГУ им. Г. Р. Державина, 2004. С. 122.

3. Максимушкин В.В. Увеличение скорости обучения при использовании искусственных нейронных сетей с жестким ядром // Вестн. Тамб. ун-та. Сер. Естеств. и техн. науки. Тамбов, 2005. Т. 10. Вып. 5. С. 196-199.

4. Медведев В.С., Потемкин В.Г. Нейронные сети. MATLAB 6 / под общ. ред. В.Г. Потемкина. М.: ДИАЛОГ-МИФИ, 2002. 496 с. (Пакеты прикладных программ; Кн. 4).

Поступила в редакцию 20 апреля 2006 г.

i Надоели баннеры? Вы всегда можете отключить рекламу.