Прореживание двухслойной нейронной сети (пример)

Материал из MachineLearning.

Перейти к: навигация, поиск

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


Постановка задачи

Задана обучающая выборка X^l, Y^l, где x = (x^1, ..., x^n)  X^l;   x^i, i >= 1 - признаковое описание объекта. Значения признаков x^i поступают на вход первому слою сети с весовой матрицей W_1, выходы первого слоя поступают на вход второму с весовой матрицей W_2. Функции активации на обоих слоях - сигмоидальные: \phi(z) = 1 / (1 + e^{-z}). На выходе второго слоя вычисляется вектор-функция \bf{F} = (F_1(x),...,F_P(x)), где P - количество нейронов на втором слое. Параметры сети (матрицы W_1 и W_2) настраиваются алгоритмом обратного распространения (back propagation). Из полученной сети требуется устранить параметры, которые незначительно влияют на ошибку аппроксимации. Для этого необходимо посчитать матрицу Гессе H = \frac{\partial^2 \bf{E}_{av}(\bf{w})}{ \partial \bf{w}^2}, где \bf {w} - вектор весов, \bf{E}_{av}(\bf{w}) = \frac{1}{2N} \sum_{n = 1}^N \sum_{p = 1}^P(F_p(n) - Y_p(n))^2 - функция стоимости. Из сети удаляются параметры, соответствующие наименьшей степени выпуклости S_i = \frac{w_i^2}{2 (\bf{H}^{-1})_{i,i}}.

Алгоритм настройки нейронной сети

Личные инструменты