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