Прореживание двухслойной нейронной сети (пример)
Материал из MachineLearning.
(→Алгоритм оптимального прореживания) |
(→Алгоритм оптимального прореживания) |
||
Строка 19: | Строка 19: | ||
<tex>H_{jk} = \frac{1}{N}\sum_{n = 1}^N \sum_{p = 1}^P ((\frac{\partial F_p}{\partial w_{kj}})^2 - \frac{\partial^2 F_p}{\partial w_{kj}^2}(F_p(n) - y_p(n)))</tex> | <tex>H_{jk} = \frac{1}{N}\sum_{n = 1}^N \sum_{p = 1}^P ((\frac{\partial F_p}{\partial w_{kj}})^2 - \frac{\partial^2 F_p}{\partial w_{kj}^2}(F_p(n) - y_p(n)))</tex> | ||
<br /> | <br /> | ||
- | обозначим за <tex>U_j^{(l)}</tex> аргумент функции активации нейрона <tex>j</tex> на слое <tex>l</tex>. Тогда частные производные на втором слое: <tex>\frac{\partial F_p}{\partial w_{kj}} = \phi'(U_k^{(2)}) \phi (U_j^{(1)}); \frac{\partial^2 F_p}{\partial w_{kj}^2} = \phi''(U_k^{(2)}) \phi^2 (U_j^{(1)})</tex> при <tex>p</tex> = <tex>k</tex> и равны 0 при <tex>p</tex> != <tex>k</tex><br /> | + | обозначим за <tex>U_j^{(l)}</tex> аргумент функции активации нейрона <tex>j</tex> на слое <tex>l</tex>. Тогда частные производные на втором слое: <tex>\frac{\partial F_p}{\partial w_{kj}} = \phi'(U_k^{(2)}) \phi (U_j^{(1)}); \frac{\partial^2 F_p}{\partial w_{kj}^2} = \phi''(U_k^{(2)}) \phi^2 (U_j^{(1)})</tex> при <tex>p</tex> = <tex>k</tex> и равны 0 при <tex>p</tex> != <tex>k</tex>,<br /> |
а на первом слое <br /> | а на первом слое <br /> | ||
<tex>\frac{\partial F_p}{\partial w_{ji}} = \phi'(U_p^{(2)})w_{pj}\phi'(U_j^{(1)})x_iw_{ij}</tex> и <tex>\frac{\partial^2 F_p}{\partial w_{ji}^2} = \phi''(U_p^{(2)})(w_{pj} \phi' (U_j^{(1)})x_iw_{ij})^2 + \phi' (U_p^{(2)})w_{pj} \phi'' (U_j^{(1)})(x_iw_{ij})^2 </tex> | <tex>\frac{\partial F_p}{\partial w_{ji}} = \phi'(U_p^{(2)})w_{pj}\phi'(U_j^{(1)})x_iw_{ij}</tex> и <tex>\frac{\partial^2 F_p}{\partial w_{ji}^2} = \phi''(U_p^{(2)})(w_{pj} \phi' (U_j^{(1)})x_iw_{ij})^2 + \phi' (U_p^{(2)})w_{pj} \phi'' (U_j^{(1)})(x_iw_{ij})^2 </tex> | ||
Строка 25: | Строка 25: | ||
4. вычисляем функцию выпуклости <tex>S_i = \frac{w_i^2 H_i}{2}</tex>, находим <tex>i</tex>, соответствующее наименьшей степени выпуклости. <br /> | 4. вычисляем функцию выпуклости <tex>S_i = \frac{w_i^2 H_i}{2}</tex>, находим <tex>i</tex>, соответствующее наименьшей степени выпуклости. <br /> | ||
5. вес <tex>w_i</tex> удаляется из сети <br /> | 5. вес <tex>w_i</tex> удаляется из сети <br /> | ||
+ | |||
+ | == Пример на модельных данных == | ||
{{UnderConstruction|[[Участник:Mikethehuman|Mikethehuman]] 00:42, 15 апреля 2010 (MSD)}} | {{UnderConstruction|[[Участник:Mikethehuman|Mikethehuman]] 00:42, 15 апреля 2010 (MSD)}} |
Версия 21:30, 14 апреля 2010
Прореживание двухслойной нейронной сети (optimal brain damage) - метод упрощения структуры нейронной сети. Идея прореживания состоит в том, что из сети удаляются параметры, оказывающие малое влияние на ошибку аппроксимации. Таким образом, модель упрощается, а ошибка аппроксимации возрастает незначительно.
Содержание |
Постановка задачи
Задана обучающая выборка . Требуется решить задачу классификации с использованием двухслойной нейронной сети; затем упростить сеть, выбросив из нее параметры, соответствующие наименьшей степени выпуклости; среднеквадратичная ошибка классификации при этом не должна сильно возрасти.
Настройка нейронной сети
Двухслойная нейронная сеть состоит из одного скрытого слоя и выходного слоя. Каждый нейрон сети имеет сигмоидальную функции активации . Значения признаков поступают на вход первому (скрытому) слою сети с весовой матрицей , выходы первого слоя поступают на вход второму с весовой матрицей .На выходе второго слоя вычисляется вектор-функция , где P - количество нейронов на втором слое. Необходимо настроить параметры сети, используя алгоритм обратного распространения (back propagation). - нормированная среднеквадратичная ошибка. Пусть - вес, соединяющий нейрон i с нейроном j следующего слоя. Тогда коррекция веса, применяемая к , определяется согласно правилу , где - локальный градиент нейрона j. Здесь - выход i-го нейрона, - значение, которое получает на вход функция активации, соответствующая j-му нейрону (m - количество его входов), η - темп обучения. Поскольку ошибка представляется в виде , то для выходного слоя , и для него справедливо . Соответственно, для первого, скрытого, слоя справедлива формула обратного распространения .
Алгоритм оптимального прореживания
Описание метода второго порядка приводится в статье[1]. Основное отличие данного метода состоит в допущении, что матрица Гессе является диагональной. Таким образом, алгоритм немного видоизменяется:
Задана выборка , модель , функция ошибки . Для упрощения структуры сети выполняем следующие шаги:
1. настраиваем модель, получаем параметры .
2. пока значение ошибки не превосходит заранее заданного (3-5):
3. вычисляем гессиан согласно формуле
обозначим за аргумент функции активации нейрона на слое . Тогда частные производные на втором слое: при = и равны 0 при != ,
а на первом слое
и
4. вычисляем функцию выпуклости , находим , соответствующее наименьшей степени выпуклости.
5. вес удаляется из сети
Пример на модельных данных
Статья в настоящий момент дорабатывается. Mikethehuman 00:42, 15 апреля 2010 (MSD) |