Опубликован: 25.12.2006 | Доступ: свободный | Студентов: 1853 / 376 | Оценка: 4.43 / 4.13 | Длительность: 15:29:00
Специальности: Программист, Экономист
Лекция 9:

Извлечение знаний с помощью нейронных сетей

< Лекция 8 || Лекция 9: 12345 || Лекция 10 >

Понимание закономерностей временных последовательностей

Исправление данных является важной компонентой подхода, позволяющего извлекать из нейронных сетей знания, касающиеся воспроизводимых ими временных закономерностей. Если, например, нейронная сеть обучена и используется для предсказания курса рубля по отношению к доллару, то естественно попытаться осмыслить связь большего или меньшего падения этого курса с теми или иными параметрами, подаваемыми на вход нейронной сети.

Кравен и Шавлик (Craven & Shavlik, 1996) разработали алгоритм TREPAN, порождающий дерево решений, аппроксимирующее поведение обученной нейронной сети. Важным достоинством алгоритма является то, что он не предъявляет никаких требований к архитектуре сети, числу ее элементов и связей (вспомним как важно было упростить структуру сети при использовании правила NeuroRule). Для него вполне достаточно того, что нейронная сеть является черным ящиком или Оракулом, которому можно задавать вопросы и получать от него ответы. Точность предсказания, даваемое сгенерированным деревом решений, близка к точности нейросетевого предсказания.

Приведем формальную схему алгоритма TREPAN Исходные данные обученная нейронная сеть (Оракул); обучающая выборка - S; множество признаков - F, min_sample - минимальное множество вопросов для каждого узла дерева, baem_width - число ветвей.

Инициализируем корень дерева R в виде листа. <Выборка векторов признаков> Используем все обучающее множество примеров S для конструирования модели распределения входных векторов, достигающих узла R.

q:=\max(0,min_sample-|S|)
query_R:= множество из q примеров, генерируемых моделью M_R. <Используем нейронную сеть для классификации всех векторов признаков> Для каждого вектора признаков x\in(S\cup query_R) узнаем у Оракула принадлежность x тому или иному классу - ставим метку класса x:=Oracle(x) <Осуществляем наилучшее первое расширение дерева> Инициализируем очередь Queue, составленную из наборов \langle R,S,query_R,\{\}\rangle До тех пор пока очередь Queue не пуста и глобальный критерий остановки не выполнен <создаем узел в начале очереди> удаляем \langle узел N, s_N, query_N, constr_N\rangle из начала очереди Queue. Используем F,S_N.query_N и beam_width для конструирования в узле N разветвления T. lt;создаем узлы следующего поколения> Для каждого ответвления t разветвления T создаем C - новый дочерний узел N
constr_C:=constr_N\cup\{T=t\}
<выборка векторов для узла С> S_C:= члены S_N с ответвлением t. Конструируем модель M_C распределения примеров, покрываемых узлом C
q:=\max(o,min_sample-|S_C|)
query_C множество из q примеров, сгенерированных моделью M_C и ограничением constr_C Для каждого вектора признаков x\in query_C ставим метку класса x:=Oracle(x) <временно принимаем, что узел С является листом> Используем S_C и query_C для определения метки класса для С. <Определяем должен ли узел С расширяться> если локальный критерий остановки не удовлетворен то поместить < C, S_C, query_C, constr_C > в очередь Queue. Вернуть дерево с корнем R.

TREPAN поддерживает очередь листьев, которые раскрываются и порождают поддеревья. В каждом узле очереди TREPAN сохраняет: (i) подмножество примеров, (ii) еще одно множество векторов, который называется набором вопросов (query) и (iii) набор ограничений ( ). Подмножество примеров включает просто те векторы обучающего набора, которые достигают данного узла дерева. Дополнительный набор вопросов Оракулу используется для выбора теста на разветвление в узле и определения класса примеров, если узел является листом. Алгоритм всегда требует, чтобы число примеров, на основе которых оценивается узел, было бы не меньше заданного (min_sample). Если же до данного узла доходит меньшее число примеров, TREPAN генерирует новые искусственные примеры, используя набор ограничений в данном узле. Множество ограничений определяет условия, которым должны удовлетворять примеры, чтобы достичь данного узла - эта информация используется при формировании набора вопросов для создаваемого нового узла. Для завершения процедуры построения дерева TREPAN использует локальный критерий - он оценивает состояние данного узла и решает, превратить ли его в лист, и глобальные критерии - максимальный размер дерева и общую оценку качества классификации примеров деревом.

Возникает естественный вопрос: "А зачем вообще нужна нейронная сеть для данного алгоритма?" Ведь он может просто использовать обучающую выборку - известно же, какому классу принадлежит каждый пример. Более того, как бы хорошо ни была обучена сеть, она все равно будет делать ошибки, неправильно классифицируя некоторые примеры. Дело в том, что именно использование нейросетей в качестве Оракула дает возможность получать деревья решений, имеющих более простую структуру, чем у деревьев, обученных на исходных примерах. Это является следствием как хорошего обобщения информации нейронными сетями, так и использования при их обучении операции исправления данных ( CLEARNING ). Кроме того, алгоритмы построения деревьев, исходя из тренировочного набора данных, действительно разработаны и с их помощью такие деревья строятся путем рекурсивного разбиения пространства признаков. Каждый внутренний узел подобных деревьев представляет критерий расщепления некоторой части этого пространства, а каждый лист дерева - соответствует классу векторов признаков. Но в отличие от них TREPAN конструирует дерево признаков методом первого наилучшего расширения. При этом вводится понятие наилучшего узла, рост которого оказывает набольшее влияние на точность классификации генерируемым деревом. Функция, оценивающая узел n, имеет вид F(n)=r(n)(1-f(n)), где r(n) - вероятность достижения узла n примером, а f(n) - оценка правильности обработки этих примеров деревом. TREPAN очень интересно осуществляет разделение примеров, достигающих данный внутренний узел дерева, а именно, использует так называемый m-of-n тест. Такой тест считается выполненным, когда выполняются по меньшей мере одно из условий. Если, например, имеется 3 булевых переменных x_1,x_2,x_3, то использование выражения 2-of-\{x_1,-x_2,x_3\} будет эквивалентно использованию логической функции (x_1\cap-x_2)\cup(x_1\cap x_3)\cup(-x_2\cap x_3). Подобная формулировка правил делает деревья вывода более компактными и четкими. Приведем пример дерева решений, полученного алгоритмом TREPAN, Оракулом в которой являлась нейронная сеть, обученная предсказывать курс обмена немецкой марки на доллар (Weigend et al., 1996). Заметим, что для обучения сети использовался рекомендуемый для финансовых приложений метод CLEARNING, с которым мы уже познакомились. Сеть обучалась на данных, охватывающих период с 1985 по 1994 гг. и предсказывала рост или падение курса обмена на следующий день в течение всего 1995 г.

Таким образом, нейронные сети могут эффективно использоваться в практически важных задачах извлечения хорошо сформулированных знаний не только в случае, если их структура достаточно проста, но и в общем случае.

< Лекция 8 || Лекция 9: 12345 || Лекция 10 >