Прореживание двухслойной нейронной сети (пример)
Материал из MachineLearning.
Прореживание двухслойной нейронной сети (optimal brain damage) - метод упрощения структуры нейронной сети. Идея прореживания состоит в том, что из сети удаляются параметры, оказывающие малое влияние на ошибку аппроксимации. Таким образом, модель упрощается, а ошибка аппроксимации возрастает незначительно.
Содержание |
Постановка задачи
Задана обучающая выборка . Требуется решить задачу классификации с использованием двухслойной нейронной сети; затем упростить сеть, выбросив из нее параметры, соответствующие наименьшей степени выпуклости; среднеквадратичная ошибка классификации при этом не должна сильно возрасти.
Настройка нейронной сети
Двухслойная нейронная сеть состоит из одного скрытого слоя и выходного слоя. Каждый нейрон сети имеет сигмоидальную функции активации . Значения признаков
поступают на вход первому (скрытому) слою сети с весовой матрицей
, выходы первого слоя поступают на вход второму с весовой матрицей
.На выходе второго слоя вычисляется вектор-функция
, где P - количество нейронов на втором слое. Необходимо настроить параметры сети, используя алгоритм обратного распространения (back propagation).
- нормированная среднеквадратичная ошибка. Пусть
- вес, соединяющий нейрон i с нейроном j следующего слоя. Тогда коррекция веса, применяемая к
, определяется согласно правилу
, где
- локальный градиент нейрона j. Здесь
- выход i-го нейрона,
- значение, которое получает на вход функция активации, соответствующая j-му нейрону (m - количество его входов), η - темп обучения. Поскольку ошибка представляется в виде
, то для выходного слоя
, и для него справедливо
.
Соответственно, для первого, скрытого, слоя справедлива формула обратного распространения
.
Алгоритм оптимального прореживания
Описание метода второго порядка приводится в статье[1]. Основное отличие данного метода состоит в допущении, что матрица Гессе является диагональной. Таким образом, алгоритм немного видоизменяется:
Задана выборка , модель
, функция ошибки
. Для упрощения структуры сети выполняем следующие шаги:
1. настраиваем модель, получаем параметры .
2. пока значение ошибки не превосходит заранее заданного (3-5):
3. вычисляем гессиан согласно формуле
обозначим за аргумент функции активации нейрона
на слое
. Тогда частные производные на втором слое:
при
=
и равны 0 при
!=
,
а на первом слое
и
4. вычисляем функцию выпуклости , находим
, соответствующее наименьшей степени выпуклости.
5. вес удаляется из сети
Пример на модельных данных
![]() | Статья в настоящий момент дорабатывается. Mikethehuman 00:42, 15 апреля 2010 (MSD) |