Прореживание двухслойной нейронной сети (пример)
Материал из MachineLearning.
(→Алгоритм оптимального прореживания) |
(→Пример на модельных данных) |
||
Строка 26: | Строка 26: | ||
5. вес <tex>w_i</tex> удаляется из сети <br /> | 5. вес <tex>w_i</tex> удаляется из сети <br /> | ||
- | == | + | == Примеры на модельных данных == |
+ | === Пример 1: выборка линейно разделима === | ||
+ | На графике показаны результаты классификации. На первом и втором слое сети - по 5 нейронов, количество признаков - 4. Итого получается 45 весов. Видно, что алгоритм сработал без ошибок.<br /> | ||
- | + | [[Изображение:iris2.jpg|500px]] <br /> | |
+ | Ниже приведены графики функции выпуклости (одная кривая - зависимость функции выпуклости от одного параметра) и график зависимости ошибки от количества удаленных параметров. | ||
+ | |||
+ | [[Изображение:Convexity2.jpg|400px]] | ||
+ | |||
+ | [[Изображение:OBD2.jpg|400px]]<br /> | ||
+ | Видно, что из сети с 45 параметрами можно удалить 18, практически не проиграв в качестве. | ||
+ | |||
+ | === Пример 2: выборка линейно неразделима === | ||
+ | Те же самые 45 весов. Алгоритм допустил 3 ошибки при классификации: | ||
+ | |||
+ | [[Изображение:Iris12.jpg|500px]]<br /> | ||
+ | Графики функции выпуклости и количества ошибок: <br /> | ||
+ | |||
+ | [[Изображение:convexity.jpg|400px]] | ||
+ | |||
+ | [[Изображение:OBD.jpg|400px]]<br /> | ||
+ | Результат прореживания здесь более наглядный: можно удалить 35 из 45 параметров без потери качества. | ||
+ | |||
+ | Приведем график зависимости ошибки от количества удаленных параметров для тех же данных и количества нейронов = 50 на первом и втором слоях. | ||
+ | |||
+ | |||
+ | [[Изображение:OBDmany.jpg|400px]] |
Версия 18:15, 16 апреля 2010
Прореживание двухслойной нейронной сети (optimal brain damage) - метод упрощения структуры нейронной сети. Идея прореживания состоит в том, что из сети удаляются параметры, оказывающие малое влияние на ошибку аппроксимации. Таким образом, модель упрощается, а ошибка аппроксимации возрастает незначительно.
Содержание |
Постановка задачи
Задана обучающая выборка . Требуется решить задачу классификации с использованием двухслойной нейронной сети; затем упростить сеть, выбросив из нее параметры, соответствующие наименьшей степени выпуклости; среднеквадратичная ошибка классификации при этом не должна сильно возрасти.
Настройка нейронной сети
Двухслойная нейронная сеть состоит из одного скрытого слоя и выходного слоя. Каждый нейрон сети имеет сигмоидальную функции активации . Значения признаков поступают на вход первому (скрытому) слою сети с весовой матрицей , выходы первого слоя поступают на вход второму с весовой матрицей .На выходе второго слоя вычисляется вектор-функция , где P - количество нейронов на втором слое. Необходимо настроить параметры сети, используя алгоритм обратного распространения (back propagation). - нормированная среднеквадратичная ошибка. Пусть - вес, соединяющий нейрон i с нейроном j следующего слоя. Тогда коррекция веса, применяемая к , определяется согласно правилу , где - локальный градиент нейрона j. Здесь - выход i-го нейрона, - значение, которое получает на вход функция активации, соответствующая j-му нейрону (m - количество его входов), η - темп обучения. Поскольку ошибка представляется в виде , то для выходного слоя , и для него справедливо . Соответственно, для первого, скрытого, слоя справедлива формула обратного распространения .
Алгоритм оптимального прореживания
Описание метода второго порядка приводится в статье[1]. Основное отличие данного метода состоит в допущении, что матрица Гессе является диагональной. Таким образом, алгоритм немного видоизменяется:
Задана выборка , модель , функция ошибки . Для упрощения структуры сети выполняем следующие шаги:
1. настраиваем модель, получаем параметры .
2. пока значение ошибки не превосходит заранее заданного (3-5):
3. вычисляем гессиан согласно формуле
обозначим за аргумент функции активации нейрона на слое . Тогда частные производные на втором слое: при = и равны 0 при != ,
а на первом слое
и
4. вычисляем функцию выпуклости , находим , соответствующее наименьшей степени выпуклости.
5. вес удаляется из сети
Примеры на модельных данных
Пример 1: выборка линейно разделима
На графике показаны результаты классификации. На первом и втором слое сети - по 5 нейронов, количество признаков - 4. Итого получается 45 весов. Видно, что алгоритм сработал без ошибок.
Ниже приведены графики функции выпуклости (одная кривая - зависимость функции выпуклости от одного параметра) и график зависимости ошибки от количества удаленных параметров.
Видно, что из сети с 45 параметрами можно удалить 18, практически не проиграв в качестве.
Пример 2: выборка линейно неразделима
Те же самые 45 весов. Алгоритм допустил 3 ошибки при классификации:
Графики функции выпуклости и количества ошибок:
Результат прореживания здесь более наглядный: можно удалить 35 из 45 параметров без потери качества.
Приведем график зависимости ошибки от количества удаленных параметров для тех же данных и количества нейронов = 50 на первом и втором слоях.