Прореживание двухслойной нейронной сети (пример)
Материал из MachineLearning.
(→Алгоритм оптимального прореживания) |
(→Алгоритм оптимального прореживания) |
||
Строка 10: | Строка 10: | ||
== Алгоритм оптимального прореживания == | == Алгоритм оптимального прореживания == | ||
- | {{UnderConstruction|[[Участник:Mikethehuman|Mikethehuman]] | + | |
+ | Описание метода второго порядка приводится в статье<ref name="http://www.machinelearning.ru/wiki/index.php?title=%D0%9E%D0%BF%D1%82%D0%B8%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D1%80%D0%B5%D0%B6%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B5%D0%B9%D1%80%D0%BE%D0%BD%D0%BD%D1%8B%D1%85_%D1%81%D0%B5%D1%82%D0%B5%D0%B9">в данной статье</ref>. Основное отличие состоит в допущении, что матрица Гессе является диагональной. Таким образом, алгоритм немного видоизменяется: | ||
+ | |||
+ | Задана выборка <tex>X</tex>, модель <tex>f(w)</tex>, функция ошибки <tex>E_X</tex>. Для упрощения структуры сети выполняем следующие шаги: <br /> | ||
+ | 1. настраиваем модель, получаем параметры <tex>\bf{w}</tex>. <br /> | ||
+ | 2. пока значение ошибки не превосходит заранее заданного(3-5) <br /> | ||
+ | 3. вычисляем гессиан <tex>H</tex>согласно формуле <br /> | ||
+ | 4. вычисляем функцию выпуклости <tex>S_i = \frac{w_i^2 H_i}{2}</tex>, находим i, соответствующее наименьшей степени выпуклости. <br /> | ||
+ | 5. вес <tex>w_i</tex> удаляется из сети <br /> | ||
+ | |||
+ | {{UnderConstruction|[[Участник:Mikethehuman|Mikethehuman]] 00:42, 15 апреля 2010 (MSD)}} |
Версия 20:42, 14 апреля 2010
Прореживание двухслойной нейронной сети (optimal brain damage) - метод упрощения структуры нейронной сети. Идея прореживания состоит в том, что из сети удаляются параметры, оказывающие малое влияние на ошибку аппроксимации. Таким образом, модель упрощается, а ошибка аппроксимации возрастает незначительно.
Постановка задачи
Задана обучающая выборка . Требуется решить задачу классификации с использованием двухслойной нейронной сети; затем упростить сеть, выбросив из нее параметры, соответствующие наименьшей степени выпуклости; среднеквадратичная ошибка классификации при этом не должна сильно возрасти.
Настройка нейронной сети
Двухслойная нейронная сеть состоит из одного скрытого слоя и выходного слоя. Каждый нейрон сети имеет сигмоидальную функции активации . Значения признаков поступают на вход первому (скрытому) слою сети с весовой матрицей , выходы первого слоя поступают на вход второму с весовой матрицей .На выходе второго слоя вычисляется вектор-функция , где P - количество нейронов на втором слое. Необходимо настроить параметры сети, используя алгоритм обратного распространения (back propagation). - нормированная среднеквадратичная ошибка. Пусть - вес, соединяющий нейрон i с нейроном j следующего слоя. Тогда коррекция веса, применяемая к , определяется согласно правилу , где - локальный градиент нейрона j. Здесь - выход i-го нейрона, - значение, которое получает на вход функция активации, соответствующая j-му нейрону (m - количество его входов), η - темп обучения. Поскольку ошибка представляется в виде , то для выходного слоя , и для него справедливо . Соответственно, для первого, скрытого, слоя справедлива формула обратного распространения .
Алгоритм оптимального прореживания
Описание метода второго порядка приводится в статье[1]. Основное отличие состоит в допущении, что матрица Гессе является диагональной. Таким образом, алгоритм немного видоизменяется:
Задана выборка , модель , функция ошибки . Для упрощения структуры сети выполняем следующие шаги:
1. настраиваем модель, получаем параметры .
2. пока значение ошибки не превосходит заранее заданного(3-5)
3. вычисляем гессиан согласно формуле
4. вычисляем функцию выпуклости , находим i, соответствующее наименьшей степени выпуклости.
5. вес удаляется из сети
Статья в настоящий момент дорабатывается. Mikethehuman 00:42, 15 апреля 2010 (MSD) |