Извлечение знаний с помощью нейронных сетей
Извлечение правил из нейронных сетей
Рассмотрим один из методов извлечения правил из нейронных сетей, обученных решению задачи классификации (Lu, Setiono and Liu, 1995).
Этот метод носит название NeuroRule.
Задача состоит в классификации некоторого набора данных с помощью многослойного персептрона и последующего анализа полученной сети с
целью нахождения классифицирующих правил, описывающих каждый из классов.
Пусть A обозначает набор из N свойств A1,A2...AN, а {a} - множество возможных значений, которое
может принимать свойство Ai. Обозначим через С множество классов c1,c2...cN. Для обучающей
выборки известны ассоциированные пары векторов входных и выходных значений (a1...am,ck), где ck C.
Алгоритм извлечения классифицирующих правил включает три этапа:
- Обучение нейронной сети. На этом первом шаге двухслойный персептрон тренируется на обучающем наборе вплоть до получения достаточной точности классификации.
- Прореживание (pruning) нейронной сети. Обученная нейронная сеть содержит все возможные связи между входными нейронами и нейронами скрытого слоя, а также между последними и выходными нейронами. Полное число этих связей обычно столь велико, что из анализа их значений невозможно извлечь обозримые для пользователя классифицирующие правила. Прореживание заключается в удалении излишних связей и нейронов, не приводящем к увеличению ошибки классификации сетью. Результирующая сеть обычно содержит немного нейронов и связей между ними и ее функционирование поддается исследованию.
-
Извлечение правил. На этом этапе из прореженной нейронной сети извлекаются правила, имеющие форму
если ( a1
q1 ) и ( a2
q2 ) и ... и ( an
qn ), то cj, где qj - константы,
- оператор отношения (
). Предполагается, что эти правила достаточно очевидны при проверке и легко применяются к большим базам данных.
Рассмотрим все эти шаги более подробно.
Обучение нейронной сети
Предположим, что обучающий набор данных необходимо расклассифицировать на два класса A и B. В этом случае сеть должна содержать N входных и 2 выходных нейрона. Каждому из классов будут соответствовать следующие активности выходных нейронов (1,0) и (0,1). Подходящее количество нейронов в промежуточном слое, вообще говоря, невозможно определить заранее - слишком большое их число ведет к переобучению, в то время как малое не обеспечивает достаточной точности обучения. Тем не менее, как уже отмечалось ранее, все методы адаптивного поиска числа нейронов в промежуточном слое делятся на два класса, в соответствии с тем, с малого или большого числа промежуточных нейронов стартует алгоритм. В первом случае по мере обучения в сеть добавляются дополнительные нейроны, в противоположном - после обучения происходит уничтожение излишних нейронов и связей. NeuroRule использует последний подход, так что число промежуточных нейронов выбирается достаточно большим. Заметим, что NeuroRule уничтожает также и избыточные входные нейроны, влияние которых на классификацию мало.
В качестве функции активации промежуточных нейронов используется гиперболический тангенс, так что их состояния изменяются в
интервале . В то же время, функцией активации выходных нейронов является функция Ферми (состояния в интервале
).
Обозначим через
- состояния выходных нейронов при предъявлении на вход сети вектора признаков
-го объекта
. Будем считать, что этот объект правильно классифицирован сетью, если
![\max_i|o_i^k-t_i^k|\leq\eta_1,](/sites/default/files/tex_cache/091ef923b44ff1f5b4e99848be74a139.png)
![t_1^k=1](/sites/default/files/tex_cache/fad271156e0f27626e8a261ed31a67d3.png)
![x^k\in A](/sites/default/files/tex_cache/10f93fbdf399ff69f0145a714f8ce208.png)
![t_2^k=1](/sites/default/files/tex_cache/9e38244cb886e79b3614a67b210822fc.png)
![x^k \in B](/sites/default/files/tex_cache/6fc828112963708b0b3d37c953eba2b8.png)
![0<\eta <0.5](/sites/default/files/tex_cache/ca15e6e4ffa66a6ccf6ffdfc07276514.png)
![t_i^k=0](/sites/default/files/tex_cache/082a89b8f7e9b41ca09e6749b927c298.png)
Минимизируемая функция ошибки должна не только направлять процесс обучения в сторону правильной классификации всех объектов обучающей выборки, но и делать малыми значения многих связей в сети, чтобы облегчить процесс их прореживания. Подобную технологию - путем добавления к функции ошибки специально подобранных штрафных членов - мы уже разбирали в "Обучение с учителем: Распознавание образов" . В методе NeuroRule функция ошибка включает два слагаемых
![E=E_0+\varepsilon E_1,](/sites/default/files/tex_cache/2c6c0240d2816288176f6b55dcb0a025.png)
![E_0=-\sum_k\sum_i (t^k_i\log o_i^k+(1-o_i^k)\log(1-o_i^k))](/sites/default/files/tex_cache/243fee0a6890e413708ace66f4f68fd2.png)
![E_1=\sum_{j=1}^N\sum_{l=1}^N_A\frac{(w_{lj}^h)^2}{1+(w_{lj}^h)^2}+\sum_{l=1}^{N_h}\sum_{i=1}^2\frac{(w^o_{il})^2}{1+(w_{il}^o)^2}](/sites/default/files/tex_cache/ff06d0382d8cb479e581e9becaf9df5f.png)
Здесь - число нейронов в скрытом слое,
- величина связи, между
-м входным и
-м скрытым нейронами
- вес связи между
-м скрытым и
-м выходным нейронами.
Использование регуляризирующего члена приводит к дифференциации весов по величинам, уменьшая большинство, но сохраняя
значения некоторых из них. Обучение сети производится методом обратного распространения ошибки.
Прореживание нейронной сети
Полное число связей в обученной сети составляет . Можно показать, что связь между входным и промежуточным
нейроном
можно удалить без снижения точности классификации сетью при выполнении условий
и
. Аналогичным образом, удаление связи
не влияет на качество классификации если
.