Наиболее распространенное применение сетей Кохонена - решение задачи классификации без учителя, т.е. кластеризации.
Напомним, что при такой постановке задачи нам дан набор объектов, каждому из которых сопоставлена строка таблицы (вектор значений признаков). Требуется разбить исходное множество на классы, т.е. для каждого объекта найти класс, к которому он принадлежит.
В результате получения новой информации о классах возможна коррекция существующих правил классификации объектов.
Самым распространенным применением карт Кохонена является:
·разведочный анализ данных
·обнаружение новых явлений
В первом случае сеть Кохонена способна распознавать кластеры в данных, а также устанавливать близость классов. Таким образом, пользователь может улучшить свое понимание структуры данных, чтобы затем уточнить нейросетевую модель. Если в данных распознаны классы, то их можно обозначить, после чего сеть сможет решать задачи классификации. Сети Кохонена можно использовать и в тех задачах классификации, где классы уже заданы, - тогда преимущество будет в том, что сеть сможет выявить сходство между различными классами.
Во втором случае сеть Кохонена распознает кластеры в обучающих данных и относит все данные к тем или иным кластерам. Если после этого сеть встретится с набором данных, непохожим ни на один из известных образцов, то она не сможет классифицировать такой набор и тем самым выявит его новизну.
кластеризация нейронный сеть кохонен
3. МОДЕЛИРОВАНИЕ СЕТИ КЛАСТЕРИЗАЦИИ ДАННЫХ В MATLABNEURALNETWORKTOOLBOX
Программное обеспечение, позволяющее работать с картами Кохонена, сейчас представлено множеством инструментов. Это могут быть как инструменты, включающие только реализацию метода самоорганизующихся карт, так и нейропакеты с целым набором структур нейронных сетей, среди которых - и карты Кохонена; также данный метод реализован в некоторых универсальных инструментах анализа данных.
К инструментарию, включающему реализацию метода карт Кохонена, относятся MATLAB Neural Network Toolbox, SoMine, Statistica, NeuroShell, NeuroScalp, Deductor и множество других.
3.1 Самоорганизующиеся нейронные сети в MATLABNNT
Для создания самоорганизующихся нейронных сетей, являющихся слоем или картой Кохонена, предназначены М-функции newc и newsom cooтветственно.
По команде help selforg можно получить следующую информацию об М-функциях, входящих в состав ППП Neural Network Toolbox и относящихся к построению сетей Кохонена (таблица 3.1):
Таблица 3.1
М-функции, входящие в состав ППП NeuralNetworkToolbox
Self-organizing networks | Самоорганизующиеся сети |
New networks | Формирование сети |
newcnewsom | Создание слоя КохоненаСоздание карты Кохонена |
Using networks | Работа с сетью |
siminitadapttrain | МоделированиеИнициализацияАдаптацияОбучение |
Weight functions | Функции расстояния и взвешивания |
negdist | Отрицательное евклидово расстояние |
Net input functons | Функции накопления |
netsum | Сумма взвешенных входов |
Transfer functions | Функции активации |
compet | Конкурирующая функция активации |
Topologyfunctions | Функции описания топологии сети |
gridtophextoprandtop | Прямоугольная сеткаГексагональная сеткаСетка со случайно распределенными узлами |
Distance functions | Функции расстояния |
distboxdistmandistlinkdist | Евклидово расстояниеРасстояние максимального координатного смещенияРасстояние суммарного координатного смешения Расстояние связи |
Initialization functions | Функции инициализации сети |
initlayinitwbinitconmidpoint | Послойная инициализацияИнициализация весов и смещенийИнициализация смещений с учетом чувствительности нейроновИнициализация весов по правилу средней точки |
Learning functions | функции настройки параметров |
learnklearnconlearnsom | Правило настройки весов для слоя Кохонена Правило настройки смещений для слоя Кохонена Правило настройки весов карты Кохонена |
Adapt functions | Функции адаптации |
adaptwb | Адаптация весов и смещений |
Training functions | Функции обучения |
trainwb1 | Повекторное обучение весов и смещений |
Demonstrations | Демонстрационные примеры |
democ1demosm1demosm2 | Настройка слоя КохоненаОдномерная карта КохоненаДвумерная карта Кохонена |
3.1.1 Архитектура сети
Промоделированная архитектура слоя Кохонена в MATLABNNT показана на рисунке 3.1.
Рисунок 3.1 – Архитектура слоя Кохонена
Нетрудно убедиться, что это слой конкурирующего типа, поскольку в нем применена конкурирующая функция активации. Кроме того, архитектура этого слоя очень напоминает архитектуру скрытого слоя радиальной базисной сети. Здесь использован блок ndist для вычисления отрицательного евклидова расстояния между вектором входа
Конкурирующая функция активации анализирует значения элементов вектора
Заметим, что эта активационная характеристика устанавливается не на отдельный нейрон, а на слой. Поэтому такая активационная характеристика и получила название конкурирующей. Номер активного нейрона
3.1.2 Создание сети
Для формирования слоя Кохонена предназначена М-функция newc. Покажем, как она работает, на простом примере. Предположим, что задан массив из четырех двухэлементных векторов, которые надо разделить на 2 класса:
р = [.1 .8 .1 .9; .2 .9 .1 .8]
р =
0.1000 0.8000 0.1000 0.9000
0.2000 0.9000 0.1000 0.8000.
В этом примере нетрудно видеть, что 2 вектора расположены вблизи точки (0,0) и 2 вектора - вблизи точки (1,1). Сформируем слой Кохонена с двумя нейронами для анализа двухэлементных векторов входа с диапазоном значений от 0 до 1:
net = newc([0 1; 0 1],2).
Первый аргумент указывает диапазон входных значений, второй определяет количество нейронов в слое. Начальные значения элементов матрицы весов задаются как среднее максимального и минимального значений, т. е. в центре интервала входных значений; это реализуется по умолчанию с помощью М-функции midpoint при создании сети. Убедимся, что это действительно так:
wts = net.IW{l,l}
wts =
0.5000 0.5000
0.5000 0.5000.
Определим характеристики слоя Кохонена:
net.layers{1}
ans =
dimensions: 2
distanсeFcn: 'dist'
distances:[2x2 double]
initFcn:' initwb '
netinputFcn:'netsum'
positions:[0 1]
size:2
topologyFcn:'hextop'
transferFcn:'compet'
userdata:[1x1 struct].
Из этого описания следует, что сеть использует функцию евклидова расстояния dist, функцию инициализации initwb, функцию обработки входов netsum, функцию активации compet и функцию описания топологии hextop.
Характеристики смещений следующие:
net.biases{1}
ans =
initFcn:'initcon'
learn:1
learnFcn:'learncon'
learnParam:[1x1 struct]
size:2
userdata:[1x1 struct].
Смещения задаются функцией initcon и для инициализированной сети равны
net.b{l}
ans =
5.4366
5.4366.
Функцией настройки смещений является функция lеаrcon, обеспечивающая настройку с учетом параметра активности нейронов.
Элементы структурной схемы слоя Кохонена показаны на рисунке 3.2, а-б и могут быть получены с помощью оператора:
gensim(net)
Они наглядно поясняют архитектуру и функции, используемые при построении слоя Кохонена.
Теперь, когда сформирована самоорганизующаяся нейронная сеть, требуется обучить сеть решению задачи кластеризации данных. Напомним, что каждый нейрон блока compet конкурирует за право ответить на вектор входа
а б
Рисунок 3.2 – Элементы структурной схемы слоя Кохонена
3.1.3 Правило обучения слоя Кохонена