Прореживание двухслойной нейронной сети (пример)
Материал из MachineLearning.
Прореживание двухслойной нейронной сети (optimal brain damage) - метод упрощения структуры нейронной сети. Идея прореживания состоит в том, что из сети удаляются параметры, оказывающие малое влияние на ошибку аппроксимации. Таким образом, модель упрощается, а ошибка аппроксимации возрастает незначительно.
Постановка задачи
Задана обучающая выборка . Требуется решить задачу классификации с использованием двухслойной нейронной сети; затем упростить сеть, выбросив из нее параметры, соответствующие наименьшей степени выпуклости; среднеквадратичная ошибка классификации при этом не должна сильно возрасти.
Настройка нейронной сети
Двухслойная нейронная сеть состоит из одного скрытого слоя и выходного слоя. Каждый нейрон сети имеет сигмоидальную функции активации . Значения признаков
поступают на вход первому (скрытому) слою сети с весовой матрицей
, выходы первого слоя поступают на вход второму с весовой матрицей
.На выходе второго слоя вычисляется вектор-функция
, где P - количество нейронов на втором слое. Необходимо настроить параметры сети, используя алгоритм обратного распространения (back propagation). Этот алгоритм является реализацией градиентного спуска в пространстве весов.
- нормированная среднеквадратичная ошибка. Пусть
- вес, соединяющий нейрон i с нейроном j следующего слоя. Тогда коррекция веса, применяемая к
, определяется согласно правилу
, где
- локальный градиент нейрона j. Здесь
- выход i-го нейрона,
- значение, которое получает на вход функция активации, соответствующая j-му нейрону (m - количество его входов), η - темп обучения. Поскольку ошибка представляется в виде
, то для выходного слоя
, и для него справедливо
.
Соответственно, для первого, скрытого, слоя справедлива формула обратного распространения
.