Оптимизация структуры сети

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

Теоретические оценки показывают только качественные зависимости. Из теории Колмогорова‑Арнольда‑Хехт‑Нильсена (см. раздел 1.2) следует [32], что для аппроксимации непрерывной функции достаточно одного скрытого слоя с Оптимизация структуры сети - student2.ru нейроном, где Оптимизация структуры сети - student2.ru — размерность входного вектора. Для аппроксимации дискретной функции необходимо два скрытых слоя. На практике чаще всего используются сети, имеющие 1–2 скрытых слоя и число нейронов в каждом слое от Оптимизация структуры сети - student2.ru до Оптимизация структуры сети - student2.ru , где Оптимизация структуры сети - student2.ru – размерность входного вектора (мы не рассматриваем сети глубокой архитектуры, содержащие большое число слоев).

Существует ряд эвристических правил определения числа нейронов скрытых слоев сети. Одним из таких правил является правило геометрической пирамиды [41]. Оно утверждает, что для многих практических сетей количество нейронов имеет форму пирамиды, при этом число нейронов уменьшается от входа к выходу в геометрической прогрессии. По этому правилу число нейронов единственного скрытого слоя в трехслойной сети вычисляется по формуле Оптимизация структуры сети - student2.ru , где Оптимизация структуры сети - student2.ru — число нейронов в скрытом слое, Оптимизация структуры сети - student2.ru — число нейронов во входном слое, Оптимизация структуры сети - student2.ru — число нейронов в выходном слое. Для четырехслойного персептрона число нейронов скрытых слоев вычисляется по формулам

Оптимизация структуры сети - student2.ru ,

где Оптимизация структуры сети - student2.ru — число нейронов в первом скрытом слое, Оптимизация структуры сети - student2.ru — число нейронов во втором скрытом слое.

Для приблизительной оценки числа нейронов в скрытом слое трехслойной сети можно воспользоваться формулой для оценки минимального числа синаптических весов Оптимизация структуры сети - student2.ru в трехслойной сети с сигмоидальными функциями [42]:

Оптимизация структуры сети - student2.ru

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

Приведенные оценки приближенный характер и требуют экспериментальной проверки.

Подбор оптимальной архитектуры сети производится экспериментально. При этом возможны два подхода [32–33]:

1. Наращивание сети (Network Growing) — постепенное наращивание сети (конструктивные методы).

2. Упрощение структуры сети (Network Pruning) — прореживание сети (редукция, контрастирование, деструктивные методы).

Для оптимизации структуры нейронных сетей применяются также генетические алгоритмы [43]. Особенности применения генетических алгоритмов для конструирования нейронных сетей можно найти в [44–47].

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

Рассмотрим упрощение структуры сети. Существует два подхода к решению данной проблемы: уменьшение количества весов сети (Weight Pruning) и уменьшения количества нейронов (Unit Pruning) [48]. Второй подход применяется довольно редко. Рассмотрим подходы к удалению весов.

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

Неплохой результат дают методы, основанные на регуляризации сложности сети [33]. Эти методы имеют много общего с теорией регуляризации А. Н. Тихонова [49]. В процедуре снижения весов (Weight Decay) в функционал ошибки работы сети вводится штрафное слагаемое

Оптимизация структуры сети - student2.ru ,

где Оптимизация структуры сети - student2.ru — один из функционалов ошибки, рассмотренных в разделе 3.5, например, ; Оптимизация структуры сети - student2.ru — вектор-столбец всех весов сети (чтобы построить вектор Оптимизация структуры сети - student2.ru необходимо последовательно по слоям пронумеровать все веса сети); Оптимизация структуры сети - student2.ru — евклидова норма вектора весов; Оптимизация структуры сети - student2.ru — параметр регуляризации; Оптимизация структуры сети - student2.ru — общее число весов сети.

При использовании градиентных методов обучения сети (см. главу 4) коррекция веса производится по формуле

Оптимизация структуры сети - student2.ru ,

то есть введение штрафного слагаемого дополнительно уменьшает вес на величину Оптимизация структуры сети - student2.ru . Уменьшаются значения всех весов. Когда вес становится меньше некоторого значения, то он удаляется. Подбор уровня, на котором происходит удаление веса, производится экспериментально.

В удалении (регуляризации) весов по Вигенду (Weigend A.) [33] функционал ошибки работы сети имеет вид

Оптимизация структуры сети - student2.ru ,

где Оптимизация структуры сети - student2.ru — параметр (коэффициент масштаба).

Функционал сильнее уменьшает малые веса, чем большие.

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

Обозначим вектор-столбец всех весов сети Оптимизация структуры сети - student2.ru . Изменение вектора весов обозначим Оптимизация структуры сети - student2.ru , функционал ошибки работы сети, например, обозначим Оптимизация структуры сети - student2.ru . Разложим Оптимизация структуры сети - student2.ru в ряд Тейлора [32–33]

Оптимизация структуры сети - student2.ru ,

где Оптимизация структуры сети - student2.ru — вектор градиента функционала Оптимизация структуры сети - student2.ru по Оптимизация структуры сети - student2.ru , градиент характеризует чувствительность Оптимизация структуры сети - student2.ru к изменениям вектора Оптимизация структуры сети - student2.ru ;

Оптимизация структуры сети - student2.ru

— Гессиан (Hessian), или матрица Гессе.

Выражение — это локальная аппроксимация функционала ошибки в окрестности Оптимизация структуры сети - student2.ru . Оптимизация структуры сети - student2.ru — это значение функционала до удаления весов, Оптимизация структуры сети - student2.ru — после удаления весов. Необходимо найти такие веса, удаление которых приведет к минимальному увеличению функционала ошибки. Веса следует удалять только после завершения процесса обучения, так как замечено, что в процессе обучения низкая чувствительность сети к изменению конкретного веса может быть связана с текущим значением веса. Проведение редукции после завершения обучения не позволяет использовать градиент в качестве показателя чувствительности, так как минимуму функционала соответствует нулевой градиент (практически – малый градиент). Поэтому в качестве показателя чувствительности используются вторые производные функционала — элементы Гессиана. Так как веса удаляются после обучения сети, то компоненты вектора градиента функционала будут иметь малое значение (теоретически равны нулю). Тогда изменение функционала ошибки сети после удаления весов, как следует из имеет вид

Оптимизация структуры сети - student2.ru .

Удаление веса Оптимизация структуры сети - student2.ru увеличивает функционал ошибки на величину Оптимизация структуры сети - student2.ru ‑го компонента вектора Оптимизация структуры сети - student2.ru .

Однако вычисление Гессиана весьма трудоемко. В методе OBD (Optimal Brain Damage — "оптимальное повреждение мозга"), предложенном ЛеКуном (Y. LeCun) и соавторами [32–33], учитываются только диагональные элементы Гессиана (Гессиан является положительно определенной матрицей и с диагональным преобладанием). В качестве меры значимости (Saliency) веса Оптимизация структуры сети - student2.ru используется показатель

Оптимизация структуры сети - student2.ru ,

который рассчитывается для каждого веса после обучения сети. Вычисление второй производной в довольно сложный процесс, основанный на алгоритме обратного распространения ошибки (см. раздел 4). Удаляются те веса, которым соответствуют наименьшие значения Оптимизация структуры сети - student2.ru . Удалить можно несколько весов. Сеть с редуцированной структурой снова обучается, повторяется процесс редукции и т. д., пока не будут исключены все веса, оказывающие малое влияние на функционал ошибки.

Развитием метода ODB является метод OBS (Optimal Brain Surgeon — "оптимальная хирургия мозга"), предложенный Б. Хассиби (Hassibi B.) и соавторами [32–33]. В этом методе учитываются все элементы Гессиана. В методе также как и в ODB используется изменение функционала ошибки сети до и после удаления весов , но обнуляется только один из весов. Пусть удаляется вес Оптимизация структуры сети - student2.ru . Тогда обнуление этого веса эквивалентно выполнению условия Оптимизация структуры сети - student2.ru , или

Оптимизация структуры сети - student2.ru ,

где Оптимизация структуры сети - student2.ru — вектор, все компоненты которого равны нулю за исключением Оптимизация структуры сети - student2.ru ‑го, который равен единице.

Тогда задача исключения веса формулируется как задача условной минимизации: необходимо минимизировать изменение функционала ошибки, то есть квадратичную форму Оптимизация структуры сети - student2.ru по отношению к вектору Оптимизация структуры сети - student2.ru , учитывая условие . Для решения этой задачи применим метод множителей Лагранжа (см. книги по математическому анализу, например, [50] или специальную литературу [51]). Для этого построим Лагранжиан

Оптимизация структуры сети - student2.ru ,

где Оптимизация структуры сети - student2.ru — множитель Лагранжа.

Для определения экстремума возьмем производную от по Оптимизация структуры сети - student2.ru и приравняем ее нулю. Но надо учесть, что это производная по направлению [52]. Производной от функционала Оптимизация структуры сети - student2.ru в точке Оптимизация структуры сети - student2.ru по направлению Оптимизация структуры сети - student2.ru называется выражение

Оптимизация структуры сети - student2.ru .

Применяя , получаем

Оптимизация структуры сети - student2.ru .

Приравнивая производную нулю, учитывая, что Оптимизация структуры сети - student2.ru , получаем

Оптимизация структуры сети - student2.ru .

Транспонируя левую и правую части последнего равенства с учетом симметрии матрицы Оптимизация структуры сети - student2.ru , получаем

Оптимизация структуры сети - student2.ru .

Для определения множителя Лагранжа Оптимизация структуры сети - student2.ru умножим обе части на Оптимизация структуры сети - student2.ru и учтем, что из получается Оптимизация структуры сети - student2.ru . Тогда

Оптимизация структуры сети - student2.ru ,

где Оптимизация структуры сети - student2.ru — элемент с индексами Оптимизация структуры сети - student2.ru матрицы Оптимизация структуры сети - student2.ru .

Окончательно оптимальный вектор коррекции весов имеет вид

Оптимизация структуры сети - student2.ru .

Обратите внимание, что согласно корректируются все веса. Так как мы учли равенство , после коррекции Оптимизация структуры сети - student2.ru .

Вычислим изменение функционала ошибки после удаления веса Оптимизация структуры сети - student2.ru

Оптимизация структуры сети - student2.ru .

Подставляя в и учитывая симметрию матрицы Оптимизация структуры сети - student2.ru , получаем

Оптимизация структуры сети - student2.ru .

Выражение является мерой значимости при выборе удаляемого веса: необходимо удалять вес Оптимизация структуры сети - student2.ru с минимальным значением Оптимизация структуры сети - student2.ru . Из видно, что изменение ошибки зависит не только от величины веса, но и от свойств Гессиана. При малом значении Оптимизация структуры сети - student2.ru даже небольшие веса могут существенно влиять на ошибку. Поэтому метод OBS точнее метода ODB. Из сравнения и видно, что меры значимости обоих методов совпадают, если матрица Оптимизация структуры сети - student2.ru является диагональной.

Метод OBS реализуется по следующему алгоритму.

1. Обучение нейронной сети до допустимого значения Оптимизация структуры сети - student2.ru целевой функции.

2. Вычисление матрицы Оптимизация структуры сети - student2.ru , обратной Гессиану.

3. Вычисление меры значимости для всех весов. Выбор веса, для которого мера значимости минимальна. Если для выбранного веса изменение целевой функции намного меньше Оптимизация структуры сети - student2.ru , то вес Оптимизация структуры сети - student2.ru удаляется и происходит переход к следующему пункту, в противном случае редукция сети завершается.

4. Коррекция значений весов по формуле . Переход на пункт 2.

Таким образом, метод OBS отличается от OBD не только определением меры значимости. В методе OBS веса удаляются по одному с последующей коррекцией всех весов без повторного обучения сети. Но вычисление обратной матрицы Оптимизация структуры сети - student2.ru является сложной задачей. Для вычисления этой матрицы авторами метода разработана приближенная процедура. На русском языке с этой процедурой можно познакомиться в [33].

Наши рекомендации