Ассоциативный поиск данных с помощью нейронной сети

АССОЦИАТИВНЫЙ ПОИСК ДАННЫХ С ПОМОЩЬЮ НЕЙРОННОЙ СЕТИ И.А. Бессмертный, А.А.Коваль, Р.О. Белоус

В статье приведены результаты исследования возможности организации ассоциативного доступа к данным с помощью нейронных сетей Кохонена. В качестве инструментальной среды использовано средство Neural Network Toolbox в составе пакета Matlab. Приводятся результаты обучения нейронной сети на отдельной таблице данных и предлагаются способы организации пользовательского интерфейса для доступа к данным.

Введение

Информационный взрыв, в условиях которого мы живем, начиная со второй половины ХХ века, порождает все возрастающие объемы знаний, удвоение которых уже в 70-е годы происходило каждые пять лет [1]. Отсюда возникла проблема поиска необходимых данных, получившая название data mining. Этот термин очень точно отражает суть процесса - добычу сырых, т.е. неформализованных, данных.

Наиболее популярным средством организации поиска в базах данных является структурированный язык запросов SQL (Structured Query Language), а в сети Интернет -индексация ключевым словом и создание каталогов.

Язык SQL был разработан как универсальный язык манипулирования данными для реляционных баз данных. Он базируется на реляционном исчислении и представлении базы данных в виде совокупности таблиц-отношений. Обладая массой достоинств по сравнению с более старыми языками, SQL все же обладает рядом недостатков. Во-первых, он может оперировать только данными со строгой, заранее определенной структурой, представленными в виде отношений, что ограничивает его применимость. Во-вторых, он требует знания реляционной алгебры. В-третьих, запросы нередко достигают устрашающих размеров и с трудом поддаются визуализации [2].

Поисковые машины используют для своей работы другой метод - индексацию. Они составляют специальное удобное для поиска представление документа, называемое индексом. Можно выделить два основных класса алгоритмов индексации. Первый из них - лексическое индексирование, ставшее традиционным в поисковых системах. Оно основан на булевой алгебре и является вполне удовлетворительным для экспертов, ищущих информацию в той или иной предметной области. Второй метод - векторное индексирование - распространен меньше и позволяет осуществлять поиск по подобию. В нем документ рассматривается как вектор в неком лексическом пространстве, и релевантность документа запросу определяется в геометрическом смысле. Этот метод в своем первоначальном варианте плохо работал на запросах с малым количеством слов. Более продвинутые варианты этого алгоритма показывают гораздо лучшие результаты, но сильно проигрывают по быстродействию алгоритмам лексического индексирования. В целом, алгоритмы индексирования неплохо подходят для поиска данных в неоднородном информационном пространстве, но применимы лишь к текстовым документам и дают удовлетворительные результаты только в пределах определенной предметной области, причем пользователь должен знать, какая именно его информация интересует

[4, 6].

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

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

самые очевидные взаимосвязи документов. Для отражения сложной системы взаимосвязей оказывается необходимым привлекать экспертов к созданию каталога, который, в таком случае, содержит достаточно ограниченное количество документов из какой-либо одной предметной области [5].

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

В этой работе делается попытка применить для отображения и ассоциативного поиска данных аппарат нейронных сетей, а именно - сети Кохонена. Этот метод может оказаться лишенным части или даже всех вышеперечисленных недостатков.

Основной результат

Нейронные сети Кохонена (слои и карты) являются самообучающимися и могут быть применены для кластеризации и классификации данных, поиска закономерностей и других целей. Для моделирования сети мы будем использовать пакет Neural Network Toolbox, входящий в систему компьютерной математики Matlab 6 .

В первую очередь необходимо объяснить разницу между кластеризацией и классификацией. Классификация - это процесс соотнесения векторов исходного пространства входов с некоторыми конечными классами, задаваемыми пользователем. Кластеризация же есть процесс исследования входного множества векторов с целью выявления и распределения их по кластерам (классам, таксонам) в соответствии с одним или совокупностью характерных признаков, определяющих «близость» между элементами множества. В большинстве случаев выбирается признак геометрического расстояния между точками пространства входных векторов. Кластеризация выполняется автоматически, кластеры не являются заданными изначально, а формируются на основании похожести (близости) векторов. Заранее может быть задано только количество кластеров. Вообще, для кластеризации могут применяться (и применяются) методы математической статистики. Но они плохо работают на небольших выборках, кроме того, требуют предварительного определения тех признаков, на основании которых будет делаться вывод о похожести или непохожести векторов. Сети Кохонена лишены этих недостатков.

Интересующие нас объекты обладают определенным набором признаков, которые мы находим существенными для задачи. Эти признаки должны быть закодированы в числовую форму, возможно, нормированы с помощью подходящего алгоритма. После этой предварительной обработки мы получим R-мерное пространство признаков (соответственно R - количество признаков), векторы в котором группируются определенным образом. Сети Кохонена, обучаясь на векторах обучающей выборки, выделяют эти группы-кластеры. Достаточно очевидно, что количество векторов обучающей выборки должно быть больше указанного количества кластеров S. На самом деле удовлетворительные результаты получаются при количестве векторов, большем R*S.

Если кластеры пространства входов могут быть разделены прямыми или плоскостями (гиперплоскостями при R>3), то говорят о линейной разделимости кластеров. Если они могут быть разделены более сложной линией (поверхностью), то говорят о нелинейной разделимости. В случае пересекающихся кластеров говорят о вероятностной разделимости, т. е. вектор может быть отнесен к кластеру с какой-то вероятностью. Сети Кохонена не могут быть применены для решения задач с вероятностной разделимостью (по крайней мере, без некоторых модификаций). Но обычно задача оказывается

линейно или хотя бы нелинейно-разделимой либо может быть сведена к таковой за счет предварительной обработки данных.

Результат работы сети может быть представлен в наглядной графической форме для размерности пространства входов, не превышающей двух. Для трехмерного пространства визуальное представление затруднено, а для больших размерностей - и вовсе невозможно. Для решения этой проблемы можно применить два метода. Первый из них заключается в сведении ^-мерного пространства к двумерному с помощью некоторого отображения: (х,у) =/(х1, ..., хп), либо, в частном случае, х = х;, у =/(хь ..., хг-1, хг+1, ..., х„), г = 1, 2, ..., п.

Во втором случае подразумевается использование карты Кохонена, которая обладает свойством отображать многомерное пространство признаков на плоскость (этот случай выходит за рамки данной работы).

Получив двумерную карту признаков, можно наглядно изучить структуру предметной области и быстро узнать, к какому кластеру относится интересующий нас вектор (который вовсе не обязан встречаться в обучающем множестве). Собственно, на этом и основана идея применения сетей Кохонена для ассоциативного поиска данных. Подчеркнем, что эти данные могут быть как числовыми, так и текстовыми или даже графическими [7].

Рассмотрим архитектуру слоя Кохонена (рис 1) в обозначениях системы Ыа^аЪ

[3].

Рис 1. Архитектура слоя Кохонена

Это слой конкурирующего типа, поскольку в нем применена конкурирующая функция активации.

На вход подается вектор мерного пространства признаков. Вычисляется отрицательное евклидово расстояние между вектором и матрицей весов (вектор-строками матрицы). Вектор-строка матрицы с номером г задает центр /-го кластера. Затем полученный вектор расстояний суммируется с вектором смещений, и результирующий вектор подается на вход конкурирующей функции активации. Она анализирует значения элементов вектора входа п1 и формируем выходы нейронов, равные 0 для всех нейронов, кроме одного нейрона-победителя, имеющего на входе максимальное значение. Таким образом, вектор выхода слоя а1 имеет единственный элемент, равно 1, который соответствует нейрону-победителю, а остальные равны 0. Иными словами, эта функция выдает вектор размерности £ (по числу нейронов в слое), у которого единице равен единственный компонент, соответствующий номеру того кластера, к центру

которого вектор входа оказался ближе всего. Все остальные компоненты этого вектора - нулевые.

compet(n>

Рис 2. Архитектура самоорганизующейся карты Кохонена

Article I. Name Family Attendance Progress Sociability Leadership

Anna Romanova 6 6 10 8

Maria Marina Kirih Malevich 9 10 9 9 8 8 10 10

Ksenia Nadezhda Deeva Dorik 7 7 4 7 5 6 4 4

Roman Batalin 6 10 6 7

Aleksandr Konokradov 5 6 7 7

Mihail Andrei Vechyaslav Miheev Sopka Telegin 8 5 4 9 8 6 6 5 7 7 5 3

Dmitry Dmitry Sergei Alandarenko Bovichev Odoevskiy 2 1 8 4 1 7 4 3 6 3 3 6

Рис. 3.

Список студентов учебной группы

Самоорганизующаяся сеть в виде карты Кохонена также предназначена для задач кластеризации входных векторов. В отличие от слоя Кохонена, карта поддерживает такое топологическое свойство, когда близким кластерам входных векторов соответствуют близко расположенные нейроны. Первоначальная топология размещения нейронов в карте Кохонена соответствует размещению нейронов в узлах либо прямоугольной, либо гексагональной, либо рандомной сетки. Карта для определения нейрона-победителя использует ту же процедуру, что и в слое, однако на карте одновременно изменяются весовые коэффициенты соседних нейронов.

Архитектура самоорганизующейся карты Кохонена имеет вид, показанный на рис 2. Эта структура аналогична структуре слоя, но здесь не используются смещения. Конкурирующая функция активации возвращает 1 для элемента выхода а1, соответствующего победившему нейрону, все другие элементы вектора а1 равны 0.

12

10

о о 5

6

го 3

ш

ш

с

о

> 4

4 6

Посещаемость

I I

1 + 1

.....+..... Т т т + + +

...........1 Г...........

+ i i

ю

12

Рис. 4. Вид данных для двух размерностей

Проиллюстрируем построение нейронной сети на слое Кохонена на простейшем примере. Имеется список студентов учебной группы (рис. 3). Произведем графическое представление наших данных, рассматривая для примера проекцию на координатную плоскость «успеваемость - посещаемость» (рис. 4).

Таким образом, вектор параметров имеет размерность 2.

Р = [6 9 9 10 10 7 7 10 6 9 5 10 8 5 4 8 2 1 8 ;...

6 8 9 9 10 4 7 8 10 9 6 7 9 8 6 8 4 1 7 ];

Сформируем слой Кохонена с 3 нейронами, потому что мы хотим создать три кластера, и диапазоном значений 0 - 10:

Net = newc([0 10;0 10], 3);

Выбор количества кластеров зависит от характера исходных данных (степени обособленности отдельных подмножеств) и может определяться опытным путем.

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

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

Задавая различные значения для числа эпох обучения сети, мы можем видеть результат обработки входных данных.

Net.trainParam.epoch =20 Net = train

Результаты кластеризации для 20, 60 и 100 эпох обучения приведены на рис. 5. Из результатов видно, что после 60 эпох обучения кластеры и их центры фиксируются, чего нельзя сказать о более ранних стадиях.

sea • /Л А

• 2 1 3 1 д * SJP

а

•  © 2  фа А. 1

- да Д 3

_

6 S

ajtendanM

б

а

12

2

о г 4 б в ю 12

дпегсавлсе

в

Рис 5. Этапы обучения сети: а - 10, б - 60 и в -100 эпох обучения

Этим самым мы провели наглядную иллюстрацию этапов развития и обучения нейронной сети. Аналогичным образом были построены кластера по всем параметрам. В результате на входе получили вектора из четырехмерного пространства. Для представления четырехмерного пространства в качестве четвертой координаты (склонность к лидерству) выступает радиус «центра точки». Внешний вид точки определяет принадлежность точки тому или иному кластеру - треугольник, квадрат или круг.

Применительно к рассматриваемому примеру произошла группировка векторов в кластеры (рис. 6), которые можно условно характеризовать следующим образом:

• умные и старательные (кластер обозначен кружками);

• умные, но необязательные (кластер обозначен квадратами);

• недалекие и необязательные

12. 10.

8-,

ё

1 6~ 8 V)

4-, 2.

12

10

*>

. ж а 1 д

12

10

Ргоде55 0 0 Айепйапсе

Рис. 6. Результат работы нейронной сети по кластеризации данных

Заключение

Какую пользу можно извлечь из полученных результатов для наших целей? Во-первых, все множество объектов автоматически разбито на обособленные группы. Остается только их идентифицировать и интерпретировать. Во-вторых, можно построить графический интерфейс для выборки данных, задавая область на графике, которую мы хотим охватить, например, окружность вокруг центра кластера «умные и старательные». При этом мы выбираем не самых умных и самых дисциплинированных, а самых типичных представителей данной группы. Трудно даже представить, как будет выглядеть SQL-запрос на такую выборку. В-третьих, неоднократное обращение к одним и тем же данным с помощью графического отображения способствует запоминанию их размещения на графике, упрощая последующие поиски.

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

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

Литература

1. Громов Г.Р. Национальные информационные ресурсы: Проблемы промышленной эксплуатации. М.: Наука, 1985.

2. Глушаков С.В., Ломотько Д.В. Базы данных: учебный курс. М.: ООО «Издательство АСТ», 2000.

3. Медведев В.С., Потемкин В.Г. Нейронные сети. Ма^аЬ 6. М: «Диалог-МИФИ», 2002.

4. Шумский С.А., Яровой А.В., Зорин О.Л. Ассоциативный поиск текстовой информации». http://www.neurok.ru/

5. Липинский Ю.В. Средства информационного поиска и навигации в больших массивах неструктурированной информации. http://www.metric.ru/

6. The Spider's Apprentice. http://monash.com/spidap.html

7. Лаборатория BaseGroup. Ассоциативная память. Нейронные сети как средство добычи данных. Практическое применение нейронных сетей для задач классификации (кластеризации). http://www.basegroup.ru/