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

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

(Различия между версиями)
Перейти к: навигация, поиск
(Постановка задачи)
(Алгоритм настройки нейронной сети)
Строка 5: Строка 5:
Задана обучающая выборка <tex>X^l, Y^l</tex>. Требуется решить задачу классификации с использованием двухслойной нейронной сети; затем упростить сеть, выбросив из нее параметры, соответствующие наименьшей степени выпуклости; среднеквадратичная ошибка классификации при этом не должна сильно возрасти.
Задана обучающая выборка <tex>X^l, Y^l</tex>. Требуется решить задачу классификации с использованием двухслойной нейронной сети; затем упростить сеть, выбросив из нее параметры, соответствующие наименьшей степени выпуклости; среднеквадратичная ошибка классификации при этом не должна сильно возрасти.
-
== Алгоритм настройки нейронной сети ==
+
== Настройка нейронной сети ==
-
{{UnderConstruction|[[Участник:Mikethehuman|Mikethehuman]] 13:22, 14 апреля 2010 (MSD)}}
+
Двухслойная нейронная сеть состоит из одного скрытого слоя и выходного слоя. Каждый нейрон сети имеет сигмоидальную функции активации <tex>\phi(z) = 1 / (1 + e^{-z})</tex>. Значения признаков <tex>x^i</tex> поступают на вход первому (скрытому) слою сети с весовой матрицей <tex>W_1</tex>, выходы первого слоя поступают на вход второму с весовой матрицей <tex>W_2</tex>.На выходе второго слоя вычисляется вектор-функция <tex>\bf{F} = (F_1(x),...,F_P(x))</tex>, где P - количество нейронов на втором слое. Необходимо настроить параметры сети, используя алгоритм обратного распространения (back propagation). Этот алгоритм является реализацией градиентного спуска в пространстве весов. <tex>\bf{E}(\bf{w}) = \frac{1}{2N} \sum_{n = 1}^N \sum_{p = 1}^P(F_p(n) - Y_p(n))^2</tex> - нормированная среднеквадратичная ошибка. Пусть <tex>w_{ji}</tex> - вес, соединяющий нейрон i с нейроном j следующего слоя. Тогда коррекция веса, применяемая к <tex>w_{ji}(n)</tex>, определяется согласно правилу <tex>\Delta w_{ji} = \eta \bf{\delta}_j(n)y_i(n)</tex>, где <tex>\bf{\delta}_j(n) = - \frac{\partial \bf{E}(n)}{\partial y_j(n)}\phi_j'(v_j(n))</tex> - локальный градиент нейрона j. Здесь <tex>y_i(n)</tex> - выход i-го нейрона, <tex>v_j(n) = \sum_{i = 1}^m w_{ji}(n)y_i(n)</tex> - значение, которое получает на вход функция активации, соответствующая j-му нейрону (m - количество его входов), η - темп обучения. Поскольку ошибка представляется в виде <tex>\bf{E}(n) = \frac{1}{2}\sum_{p = 1}^P (F_p(n) - y_p(n))^2</tex>, то для выходного слоя <tex>\frac {\partial \bf{E}(n)}{\partial y_j(n)} = y_j(n) - F_j(n) =: e_j(n)</tex>, и для него справедливо <tex>\Delta w_{ji} = - \eta e_j(n)\phi_j'(v_j(n))y_i(n)</tex>.
 +
Соответственно, для первого, скрытого, слоя справедлива формула обратного распространения <tex>\delta_j(n) = \phi_j'(v_j(n)) \sum_{p = 1}^P \delta_p(n) w_{pj}(n) </tex>.

Версия 13:38, 14 апреля 2010

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


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

Задана обучающая выборка X^l, Y^l. Требуется решить задачу классификации с использованием двухслойной нейронной сети; затем упростить сеть, выбросив из нее параметры, соответствующие наименьшей степени выпуклости; среднеквадратичная ошибка классификации при этом не должна сильно возрасти.

Настройка нейронной сети

Двухслойная нейронная сеть состоит из одного скрытого слоя и выходного слоя. Каждый нейрон сети имеет сигмоидальную функции активации \phi(z) = 1 / (1 + e^{-z}). Значения признаков x^i поступают на вход первому (скрытому) слою сети с весовой матрицей W_1, выходы первого слоя поступают на вход второму с весовой матрицей W_2.На выходе второго слоя вычисляется вектор-функция \bf{F} = (F_1(x),...,F_P(x)), где P - количество нейронов на втором слое. Необходимо настроить параметры сети, используя алгоритм обратного распространения (back propagation). Этот алгоритм является реализацией градиентного спуска в пространстве весов. \bf{E}(\bf{w}) = \frac{1}{2N} \sum_{n = 1}^N \sum_{p = 1}^P(F_p(n) - Y_p(n))^2 - нормированная среднеквадратичная ошибка. Пусть w_{ji} - вес, соединяющий нейрон i с нейроном j следующего слоя. Тогда коррекция веса, применяемая к w_{ji}(n), определяется согласно правилу \Delta w_{ji} = \eta \bf{\delta}_j(n)y_i(n), где \bf{\delta}_j(n) = - \frac{\partial \bf{E}(n)}{\partial y_j(n)}\phi_j'(v_j(n)) - локальный градиент нейрона j. Здесь y_i(n) - выход i-го нейрона, v_j(n) = \sum_{i = 1}^m w_{ji}(n)y_i(n) - значение, которое получает на вход функция активации, соответствующая j-му нейрону (m - количество его входов), η - темп обучения. Поскольку ошибка представляется в виде \bf{E}(n) = \frac{1}{2}\sum_{p = 1}^P (F_p(n) - y_p(n))^2, то для выходного слоя \frac {\partial \bf{E}(n)}{\partial y_j(n)} = y_j(n) - F_j(n) =: e_j(n), и для него справедливо \Delta w_{ji} = - \eta e_j(n)\phi_j'(v_j(n))y_i(n). Соответственно, для первого, скрытого, слоя справедлива формула обратного распространения \delta_j(n) = \phi_j'(v_j(n)) \sum_{p = 1}^P \delta_p(n) w_{pj}(n) .

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